gitlab.com/CoiaPrant/sqlite3@v1.19.1/internal/testfixture/testfixture_linux_386.go (about)

     1  // Code generated by 'ccgo -DSQLITE_OMIT_LOAD_EXTENSION -DSQLITE_SERIES_CONSTRAINT_VERIFY=1 -DSQLITE_SERVER=1 -DTCLSH_INIT_PROC=sqlite3TestInit -D_HAVE_SQLITE_CONFIG_H -I/usr/include/tcl8.6 -export-defines "" -export-fields F -ignore-unsupported-alignment -trace-translation-units -volatile=sqlite3_io_error_pending,sqlite3_open_file_count,sqlite3_pager_readdb_count,sqlite3_pager_writedb_count,sqlite3_pager_writej_count,sqlite3_search_count,sqlite3_sort_count,saved_cnt -lgitlab.com/CoiaPrant/sqlite3/libtest -lmodernc.org/tcl/lib -lmodernc.org/z/lib -o internal/testfixture/testfixture_linux_386.go -Itestdata/sqlite-src-3390300/ext/async -Itestdata/sqlite-src-3390300/ext/fts3 -Itestdata/sqlite-src-3390300/ext/icu -Itestdata/sqlite-src-3390300/ext/rtree -Itestdata/sqlite-src-3390300/ext/session -Itestdata/sqlite-src-3390300/ext/userauth -Itestdata/sqlite-src-3390300/src -Itestdata/sqlite-amalgamation-3390300 -Itestdata/sqlite-src-3390300 -full-path-comments testdata/sqlite-src-3390300/ext/expert/sqlite3expert.c testdata/sqlite-src-3390300/ext/expert/test_expert.c testdata/sqlite-src-3390300/ext/fts3/fts3_term.c testdata/sqlite-src-3390300/ext/fts3/fts3_test.c testdata/sqlite-src-3390300/ext/fts5/fts5_tcl.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_mi.c testdata/sqlite-src-3390300/ext/fts5/fts5_test_tok.c testdata/sqlite-src-3390300/ext/misc/appendvfs.c testdata/sqlite-src-3390300/ext/misc/amatch.c testdata/sqlite-src-3390300/ext/misc/carray.c testdata/sqlite-src-3390300/ext/misc/cksumvfs.c testdata/sqlite-src-3390300/ext/misc/closure.c testdata/sqlite-src-3390300/ext/misc/csv.c testdata/sqlite-src-3390300/ext/misc/decimal.c testdata/sqlite-src-3390300/ext/misc/eval.c testdata/sqlite-src-3390300/ext/misc/explain.c testdata/sqlite-src-3390300/ext/misc/fileio.c testdata/sqlite-src-3390300/ext/misc/fuzzer.c testdata/sqlite-src-3390300/ext/misc/ieee754.c testdata/sqlite-src-3390300/ext/misc/mmapwarm.c testdata/sqlite-src-3390300/ext/misc/nextchar.c testdata/sqlite-src-3390300/ext/misc/normalize.c testdata/sqlite-src-3390300/ext/misc/percentile.c testdata/sqlite-src-3390300/ext/misc/prefixes.c testdata/sqlite-src-3390300/ext/misc/qpvtab.c testdata/sqlite-src-3390300/ext/misc/regexp.c testdata/sqlite-src-3390300/ext/misc/remember.c testdata/sqlite-src-3390300/ext/misc/series.c testdata/sqlite-src-3390300/ext/misc/spellfix.c testdata/sqlite-src-3390300/ext/misc/totype.c testdata/sqlite-src-3390300/ext/misc/unionvtab.c testdata/sqlite-src-3390300/ext/misc/wholenumber.c testdata/sqlite-src-3390300/ext/rbu/test_rbu.c testdata/sqlite-src-3390300/ext/rtree/test_rtreedoc.c testdata/sqlite-src-3390300/ext/session/test_session.c testdata/sqlite-src-3390300/ext/userauth/userauth.c testdata/sqlite-src-3390300/src/tclsqlite.c testdata/sqlite-src-3390300/src/test1.c testdata/sqlite-src-3390300/src/test2.c testdata/sqlite-src-3390300/src/test3.c testdata/sqlite-src-3390300/src/test4.c testdata/sqlite-src-3390300/src/test5.c testdata/sqlite-src-3390300/src/test6.c testdata/sqlite-src-3390300/src/test7.c testdata/sqlite-src-3390300/src/test8.c testdata/sqlite-src-3390300/src/test9.c testdata/sqlite-src-3390300/src/test_async.c testdata/sqlite-src-3390300/src/test_autoext.c testdata/sqlite-src-3390300/src/test_backup.c testdata/sqlite-src-3390300/src/test_bestindex.c testdata/sqlite-src-3390300/src/test_blob.c testdata/sqlite-src-3390300/src/test_btree.c testdata/sqlite-src-3390300/src/test_config.c testdata/sqlite-src-3390300/src/test_delete.c testdata/sqlite-src-3390300/src/test_demovfs.c testdata/sqlite-src-3390300/src/test_devsym.c testdata/sqlite-src-3390300/src/test_fs.c testdata/sqlite-src-3390300/src/test_func.c testdata/sqlite-src-3390300/src/test_hexio.c testdata/sqlite-src-3390300/src/test_init.c testdata/sqlite-src-3390300/src/test_intarray.c testdata/sqlite-src-3390300/src/test_journal.c testdata/sqlite-src-3390300/src/test_malloc.c testdata/sqlite-src-3390300/src/test_md5.c testdata/sqlite-src-3390300/src/test_multiplex.c testdata/sqlite-src-3390300/src/test_mutex.c testdata/sqlite-src-3390300/src/test_onefile.c testdata/sqlite-src-3390300/src/test_osinst.c testdata/sqlite-src-3390300/src/test_pcache.c testdata/sqlite-src-3390300/src/test_quota.c testdata/sqlite-src-3390300/src/test_rtree.c testdata/sqlite-src-3390300/src/test_schema.c testdata/sqlite-src-3390300/src/test_server.c testdata/sqlite-src-3390300/src/test_superlock.c testdata/sqlite-src-3390300/src/test_syscall.c testdata/sqlite-src-3390300/src/test_tclsh.c testdata/sqlite-src-3390300/src/test_tclvar.c testdata/sqlite-src-3390300/src/test_thread.c testdata/sqlite-src-3390300/src/test_vdbecov.c testdata/sqlite-src-3390300/src/test_vfs.c testdata/sqlite-src-3390300/src/test_windirent.c testdata/sqlite-src-3390300/src/test_window.c testdata/sqlite-src-3390300/src/test_wsd.c -DNDEBUG -DHAVE_USLEEP -DLONGDOUBLE_TYPE=double -DSQLITE_CKSUMVFS_STATIC -DSQLITE_CORE -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_PAGE_SIZE=1024 -DSQLITE_ENABLE_BYTECODE_VTAB -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_DBPAGE_VTAB -DSQLITE_ENABLE_DBSTAT_VTAB -DSQLITE_ENABLE_DESERIALIZE -DSQLITE_ENABLE_EXPLAIN_COMMENTS -DSQLITE_ENABLE_FTS5 -DSQLITE_ENABLE_GEOPOLY -DSQLITE_ENABLE_MATH_FUNCTIONS -DSQLITE_ENABLE_MEMORY_MANAGEMENT -DSQLITE_ENABLE_OFFSET_SQL_FUNC -DSQLITE_ENABLE_PREUPDATE_HOOK -DSQLITE_ENABLE_RBU -DSQLITE_ENABLE_RTREE -DSQLITE_ENABLE_SESSION -DSQLITE_ENABLE_SNAPSHOT -DSQLITE_ENABLE_STAT4 -DSQLITE_ENABLE_STMTVTAB -DSQLITE_ENABLE_UNLOCK_NOTIFY -DSQLITE_LIKE_DOESNT_MATCH_BLOBS -DSQLITE_MUTEX_APPDEF=1 -DSQLITE_MUTEX_NOOP -DSQLITE_SOUNDEX -DSQLITE_TEMP_STORE=1 -DSQLITE_TEST -DSQLITE_THREADSAFE=1', DO NOT EDIT.
     2  
     3  package main
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  
    11  	"modernc.org/libc"
    12  	"modernc.org/libc/sys/types"
    13  	"gitlab.com/CoiaPrant/sqlite3/libtest"
    14  	"modernc.org/tcl/lib"
    15  )
    16  
    17  var _ = math.Pi
    18  var _ reflect.Kind
    19  var _ atomic.Value
    20  var _ unsafe.Pointer
    21  var _ *libc.TLS
    22  var _ types.Size_t
    23  
    24  func main() { libc.Start(main1) }
    25  
    26  const (
    27  	BUFSIZ                                = 8192
    28  	EOF                                   = -1
    29  	EXPERT_CONFIG_SAMPLE                  = 1
    30  	EXPERT_REPORT_CANDIDATES              = 4
    31  	EXPERT_REPORT_INDEXES                 = 2
    32  	EXPERT_REPORT_PLAN                    = 3
    33  	EXPERT_REPORT_SQL                     = 1
    34  	FILENAME_MAX                          = 4096
    35  	FOPEN_MAX                             = 16
    36  	FTS5_TOKENIZE_AUX                     = 0x0008
    37  	FTS5_TOKENIZE_DOCUMENT                = 0x0004
    38  	FTS5_TOKENIZE_PREFIX                  = 0x0002
    39  	FTS5_TOKENIZE_QUERY                   = 0x0001
    40  	FTS5_TOKEN_COLOCATED                  = 0x0001
    41  	FULLY_WITHIN                          = 2
    42  	HAVE_USLEEP                           = 1
    43  	IDX_HASH_SIZE                         = 1023
    44  	L_ctermid                             = 9
    45  	L_tmpnam                              = 20
    46  	NDEBUG                                = 1
    47  	NOT_WITHIN                            = 0
    48  	PARTLY_WITHIN                         = 1
    49  	P_tmpdir                              = "/tmp"
    50  	SEEK_CUR                              = 1
    51  	SEEK_END                              = 2
    52  	SEEK_SET                              = 0
    53  	SQLITE3_H                             = 0
    54  	SQLITE3_TEXT                          = 3
    55  	SQLITEEXPERT_H                        = 1
    56  	SQLITE_ABORT                          = 4
    57  	SQLITE_ABORT_ROLLBACK                 = 516
    58  	SQLITE_ACCESS_EXISTS                  = 0
    59  	SQLITE_ACCESS_READ                    = 2
    60  	SQLITE_ACCESS_READWRITE               = 1
    61  	SQLITE_ALTER_TABLE                    = 26
    62  	SQLITE_ANALYZE                        = 28
    63  	SQLITE_ANY                            = 5
    64  	SQLITE_API                            = 0
    65  	SQLITE_APICALL                        = 0
    66  	SQLITE_ATTACH                         = 24
    67  	SQLITE_AUTH                           = 23
    68  	SQLITE_AUTH_USER                      = 279
    69  	SQLITE_BLOB                           = 4
    70  	SQLITE_BUSY                           = 5
    71  	SQLITE_BUSY_RECOVERY                  = 261
    72  	SQLITE_BUSY_SNAPSHOT                  = 517
    73  	SQLITE_BUSY_TIMEOUT                   = 773
    74  	SQLITE_CALLBACK                       = 0
    75  	SQLITE_CANTOPEN                       = 14
    76  	SQLITE_CANTOPEN_CONVPATH              = 1038
    77  	SQLITE_CANTOPEN_DIRTYWAL              = 1294
    78  	SQLITE_CANTOPEN_FULLPATH              = 782
    79  	SQLITE_CANTOPEN_ISDIR                 = 526
    80  	SQLITE_CANTOPEN_NOTEMPDIR             = 270
    81  	SQLITE_CANTOPEN_SYMLINK               = 1550
    82  	SQLITE_CDECL                          = 0
    83  	SQLITE_CHANGESETAPPLY_INVERT          = 0x0002
    84  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT     = 0x0001
    85  	SQLITE_CHANGESETSTART_INVERT          = 0x0002
    86  	SQLITE_CHANGESET_ABORT                = 2
    87  	SQLITE_CHANGESET_CONFLICT             = 3
    88  	SQLITE_CHANGESET_CONSTRAINT           = 4
    89  	SQLITE_CHANGESET_DATA                 = 1
    90  	SQLITE_CHANGESET_FOREIGN_KEY          = 5
    91  	SQLITE_CHANGESET_NOTFOUND             = 2
    92  	SQLITE_CHANGESET_OMIT                 = 0
    93  	SQLITE_CHANGESET_REPLACE              = 1
    94  	SQLITE_CHECKPOINT_FULL                = 1
    95  	SQLITE_CHECKPOINT_PASSIVE             = 0
    96  	SQLITE_CHECKPOINT_RESTART             = 2
    97  	SQLITE_CHECKPOINT_TRUNCATE            = 3
    98  	SQLITE_CKSUMVFS_STATIC                = 1
    99  	SQLITE_CONFIG_COVERING_INDEX_SCAN     = 20
   100  	SQLITE_CONFIG_GETMALLOC               = 5
   101  	SQLITE_CONFIG_GETMUTEX                = 11
   102  	SQLITE_CONFIG_GETPCACHE               = 15
   103  	SQLITE_CONFIG_GETPCACHE2              = 19
   104  	SQLITE_CONFIG_HEAP                    = 8
   105  	SQLITE_CONFIG_LOG                     = 16
   106  	SQLITE_CONFIG_LOOKASIDE               = 13
   107  	SQLITE_CONFIG_MALLOC                  = 4
   108  	SQLITE_CONFIG_MEMDB_MAXSIZE           = 29
   109  	SQLITE_CONFIG_MEMSTATUS               = 9
   110  	SQLITE_CONFIG_MMAP_SIZE               = 22
   111  	SQLITE_CONFIG_MULTITHREAD             = 2
   112  	SQLITE_CONFIG_MUTEX                   = 10
   113  	SQLITE_CONFIG_PAGECACHE               = 7
   114  	SQLITE_CONFIG_PCACHE                  = 14
   115  	SQLITE_CONFIG_PCACHE2                 = 18
   116  	SQLITE_CONFIG_PCACHE_HDRSZ            = 24
   117  	SQLITE_CONFIG_PMASZ                   = 25
   118  	SQLITE_CONFIG_SCRATCH                 = 6
   119  	SQLITE_CONFIG_SERIALIZED              = 3
   120  	SQLITE_CONFIG_SINGLETHREAD            = 1
   121  	SQLITE_CONFIG_SMALL_MALLOC            = 27
   122  	SQLITE_CONFIG_SORTERREF_SIZE          = 28
   123  	SQLITE_CONFIG_SQLLOG                  = 21
   124  	SQLITE_CONFIG_STMTJRNL_SPILL          = 26
   125  	SQLITE_CONFIG_URI                     = 17
   126  	SQLITE_CONFIG_WIN32_HEAPSIZE          = 23
   127  	SQLITE_CONSTRAINT                     = 19
   128  	SQLITE_CONSTRAINT_CHECK               = 275
   129  	SQLITE_CONSTRAINT_COMMITHOOK          = 531
   130  	SQLITE_CONSTRAINT_DATATYPE            = 3091
   131  	SQLITE_CONSTRAINT_FOREIGNKEY          = 787
   132  	SQLITE_CONSTRAINT_FUNCTION            = 1043
   133  	SQLITE_CONSTRAINT_NOTNULL             = 1299
   134  	SQLITE_CONSTRAINT_PINNED              = 2835
   135  	SQLITE_CONSTRAINT_PRIMARYKEY          = 1555
   136  	SQLITE_CONSTRAINT_ROWID               = 2579
   137  	SQLITE_CONSTRAINT_TRIGGER             = 1811
   138  	SQLITE_CONSTRAINT_UNIQUE              = 2067
   139  	SQLITE_CONSTRAINT_VTAB                = 2323
   140  	SQLITE_COPY                           = 0
   141  	SQLITE_CORE                           = 1
   142  	SQLITE_CORRUPT                        = 11
   143  	SQLITE_CORRUPT_INDEX                  = 779
   144  	SQLITE_CORRUPT_SEQUENCE               = 523
   145  	SQLITE_CORRUPT_VTAB                   = 267
   146  	SQLITE_CREATE_INDEX                   = 1
   147  	SQLITE_CREATE_TABLE                   = 2
   148  	SQLITE_CREATE_TEMP_INDEX              = 3
   149  	SQLITE_CREATE_TEMP_TABLE              = 4
   150  	SQLITE_CREATE_TEMP_TRIGGER            = 5
   151  	SQLITE_CREATE_TEMP_VIEW               = 6
   152  	SQLITE_CREATE_TRIGGER                 = 7
   153  	SQLITE_CREATE_VIEW                    = 8
   154  	SQLITE_CREATE_VTABLE                  = 29
   155  	SQLITE_DBCONFIG_DEFENSIVE             = 1010
   156  	SQLITE_DBCONFIG_DQS_DDL               = 1014
   157  	SQLITE_DBCONFIG_DQS_DML               = 1013
   158  	SQLITE_DBCONFIG_ENABLE_FKEY           = 1002
   159  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004
   160  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005
   161  	SQLITE_DBCONFIG_ENABLE_QPSG           = 1007
   162  	SQLITE_DBCONFIG_ENABLE_TRIGGER        = 1003
   163  	SQLITE_DBCONFIG_ENABLE_VIEW           = 1015
   164  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    = 1012
   165  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    = 1016
   166  	SQLITE_DBCONFIG_LOOKASIDE             = 1001
   167  	SQLITE_DBCONFIG_MAINDBNAME            = 1000
   168  	SQLITE_DBCONFIG_MAX                   = 1017
   169  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      = 1006
   170  	SQLITE_DBCONFIG_RESET_DATABASE        = 1009
   171  	SQLITE_DBCONFIG_TRIGGER_EQP           = 1008
   172  	SQLITE_DBCONFIG_TRUSTED_SCHEMA        = 1017
   173  	SQLITE_DBCONFIG_WRITABLE_SCHEMA       = 1011
   174  	SQLITE_DBSTATUS_CACHE_HIT             = 7
   175  	SQLITE_DBSTATUS_CACHE_MISS            = 8
   176  	SQLITE_DBSTATUS_CACHE_SPILL           = 12
   177  	SQLITE_DBSTATUS_CACHE_USED            = 1
   178  	SQLITE_DBSTATUS_CACHE_USED_SHARED     = 11
   179  	SQLITE_DBSTATUS_CACHE_WRITE           = 9
   180  	SQLITE_DBSTATUS_DEFERRED_FKS          = 10
   181  	SQLITE_DBSTATUS_LOOKASIDE_HIT         = 4
   182  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   = 6
   183  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   = 5
   184  	SQLITE_DBSTATUS_LOOKASIDE_USED        = 0
   185  	SQLITE_DBSTATUS_MAX                   = 12
   186  	SQLITE_DBSTATUS_SCHEMA_USED           = 2
   187  	SQLITE_DBSTATUS_STMT_USED             = 3
   188  	SQLITE_DEFAULT_MEMSTATUS              = 0
   189  	SQLITE_DEFAULT_PAGE_SIZE              = 1024
   190  	SQLITE_DELETE                         = 9
   191  	SQLITE_DENY                           = 1
   192  	SQLITE_DEPRECATED                     = 0
   193  	SQLITE_DESERIALIZE_FREEONCLOSE        = 1
   194  	SQLITE_DESERIALIZE_READONLY           = 4
   195  	SQLITE_DESERIALIZE_RESIZEABLE         = 2
   196  	SQLITE_DETACH                         = 25
   197  	SQLITE_DETERMINISTIC                  = 0x000000800
   198  	SQLITE_DIRECTONLY                     = 0x000080000
   199  	SQLITE_DONE                           = 101
   200  	SQLITE_DROP_INDEX                     = 10
   201  	SQLITE_DROP_TABLE                     = 11
   202  	SQLITE_DROP_TEMP_INDEX                = 12
   203  	SQLITE_DROP_TEMP_TABLE                = 13
   204  	SQLITE_DROP_TEMP_TRIGGER              = 14
   205  	SQLITE_DROP_TEMP_VIEW                 = 15
   206  	SQLITE_DROP_TRIGGER                   = 16
   207  	SQLITE_DROP_VIEW                      = 17
   208  	SQLITE_DROP_VTABLE                    = 30
   209  	SQLITE_EMPTY                          = 16
   210  	SQLITE_ENABLE_BYTECODE_VTAB           = 1
   211  	SQLITE_ENABLE_COLUMN_METADATA         = 1
   212  	SQLITE_ENABLE_DBPAGE_VTAB             = 1
   213  	SQLITE_ENABLE_DBSTAT_VTAB             = 1
   214  	SQLITE_ENABLE_DESERIALIZE             = 1
   215  	SQLITE_ENABLE_EXPLAIN_COMMENTS        = 1
   216  	SQLITE_ENABLE_FTS5                    = 1
   217  	SQLITE_ENABLE_GEOPOLY                 = 1
   218  	SQLITE_ENABLE_MATH_FUNCTIONS          = 1
   219  	SQLITE_ENABLE_MEMORY_MANAGEMENT       = 1
   220  	SQLITE_ENABLE_OFFSET_SQL_FUNC         = 1
   221  	SQLITE_ENABLE_PREUPDATE_HOOK          = 1
   222  	SQLITE_ENABLE_RBU                     = 1
   223  	SQLITE_ENABLE_RTREE                   = 1
   224  	SQLITE_ENABLE_SESSION                 = 1
   225  	SQLITE_ENABLE_SNAPSHOT                = 1
   226  	SQLITE_ENABLE_STAT4                   = 1
   227  	SQLITE_ENABLE_STMTVTAB                = 1
   228  	SQLITE_ENABLE_UNLOCK_NOTIFY           = 1
   229  	SQLITE_ERROR                          = 1
   230  	SQLITE_ERROR_MISSING_COLLSEQ          = 257
   231  	SQLITE_ERROR_RETRY                    = 513
   232  	SQLITE_ERROR_SNAPSHOT                 = 769
   233  	SQLITE_EXPERIMENTAL                   = 0
   234  	SQLITE_FAIL                           = 3
   235  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE       = 31
   236  	SQLITE_FCNTL_BUSYHANDLER              = 15
   237  	SQLITE_FCNTL_CHUNK_SIZE               = 6
   238  	SQLITE_FCNTL_CKPT_DONE                = 37
   239  	SQLITE_FCNTL_CKPT_START               = 39
   240  	SQLITE_FCNTL_CKSM_FILE                = 41
   241  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE      = 32
   242  	SQLITE_FCNTL_COMMIT_PHASETWO          = 22
   243  	SQLITE_FCNTL_DATA_VERSION             = 35
   244  	SQLITE_FCNTL_EXTERNAL_READER          = 40
   245  	SQLITE_FCNTL_FILE_POINTER             = 7
   246  	SQLITE_FCNTL_GET_LOCKPROXYFILE        = 2
   247  	SQLITE_FCNTL_HAS_MOVED                = 20
   248  	SQLITE_FCNTL_JOURNAL_POINTER          = 28
   249  	SQLITE_FCNTL_LAST_ERRNO               = 4
   250  	SQLITE_FCNTL_LOCKSTATE                = 1
   251  	SQLITE_FCNTL_LOCK_TIMEOUT             = 34
   252  	SQLITE_FCNTL_MMAP_SIZE                = 18
   253  	SQLITE_FCNTL_OVERWRITE                = 11
   254  	SQLITE_FCNTL_PDB                      = 30
   255  	SQLITE_FCNTL_PERSIST_WAL              = 10
   256  	SQLITE_FCNTL_POWERSAFE_OVERWRITE      = 13
   257  	SQLITE_FCNTL_PRAGMA                   = 14
   258  	SQLITE_FCNTL_RBU                      = 26
   259  	SQLITE_FCNTL_RESERVE_BYTES            = 38
   260  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE    = 33
   261  	SQLITE_FCNTL_SET_LOCKPROXYFILE        = 3
   262  	SQLITE_FCNTL_SIZE_HINT                = 5
   263  	SQLITE_FCNTL_SIZE_LIMIT               = 36
   264  	SQLITE_FCNTL_SYNC                     = 21
   265  	SQLITE_FCNTL_SYNC_OMITTED             = 8
   266  	SQLITE_FCNTL_TEMPFILENAME             = 16
   267  	SQLITE_FCNTL_TRACE                    = 19
   268  	SQLITE_FCNTL_VFSNAME                  = 12
   269  	SQLITE_FCNTL_VFS_POINTER              = 27
   270  	SQLITE_FCNTL_WAL_BLOCK                = 24
   271  	SQLITE_FCNTL_WIN32_AV_RETRY           = 9
   272  	SQLITE_FCNTL_WIN32_GET_HANDLE         = 29
   273  	SQLITE_FCNTL_WIN32_SET_HANDLE         = 23
   274  	SQLITE_FCNTL_ZIPVFS                   = 25
   275  	SQLITE_FLOAT                          = 2
   276  	SQLITE_FORMAT                         = 24
   277  	SQLITE_FULL                           = 13
   278  	SQLITE_FUNCTION                       = 31
   279  	SQLITE_GET_LOCKPROXYFILE              = 2
   280  	SQLITE_IGNORE                         = 2
   281  	SQLITE_INDEX_CONSTRAINT_EQ            = 2
   282  	SQLITE_INDEX_CONSTRAINT_FUNCTION      = 150
   283  	SQLITE_INDEX_CONSTRAINT_GE            = 32
   284  	SQLITE_INDEX_CONSTRAINT_GLOB          = 66
   285  	SQLITE_INDEX_CONSTRAINT_GT            = 4
   286  	SQLITE_INDEX_CONSTRAINT_IS            = 72
   287  	SQLITE_INDEX_CONSTRAINT_ISNOT         = 69
   288  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL     = 70
   289  	SQLITE_INDEX_CONSTRAINT_ISNULL        = 71
   290  	SQLITE_INDEX_CONSTRAINT_LE            = 8
   291  	SQLITE_INDEX_CONSTRAINT_LIKE          = 65
   292  	SQLITE_INDEX_CONSTRAINT_LIMIT         = 73
   293  	SQLITE_INDEX_CONSTRAINT_LT            = 16
   294  	SQLITE_INDEX_CONSTRAINT_MATCH         = 64
   295  	SQLITE_INDEX_CONSTRAINT_NE            = 68
   296  	SQLITE_INDEX_CONSTRAINT_OFFSET        = 74
   297  	SQLITE_INDEX_CONSTRAINT_REGEXP        = 67
   298  	SQLITE_INDEX_SCAN_UNIQUE              = 1
   299  	SQLITE_INNOCUOUS                      = 0x000200000
   300  	SQLITE_INSERT                         = 18
   301  	SQLITE_INTEGER                        = 1
   302  	SQLITE_INTERNAL                       = 2
   303  	SQLITE_INTERRUPT                      = 9
   304  	SQLITE_IOCAP_ATOMIC                   = 0x00000001
   305  	SQLITE_IOCAP_ATOMIC16K                = 0x00000040
   306  	SQLITE_IOCAP_ATOMIC1K                 = 0x00000004
   307  	SQLITE_IOCAP_ATOMIC2K                 = 0x00000008
   308  	SQLITE_IOCAP_ATOMIC32K                = 0x00000080
   309  	SQLITE_IOCAP_ATOMIC4K                 = 0x00000010
   310  	SQLITE_IOCAP_ATOMIC512                = 0x00000002
   311  	SQLITE_IOCAP_ATOMIC64K                = 0x00000100
   312  	SQLITE_IOCAP_ATOMIC8K                 = 0x00000020
   313  	SQLITE_IOCAP_BATCH_ATOMIC             = 0x00004000
   314  	SQLITE_IOCAP_IMMUTABLE                = 0x00002000
   315  	SQLITE_IOCAP_POWERSAFE_OVERWRITE      = 0x00001000
   316  	SQLITE_IOCAP_SAFE_APPEND              = 0x00000200
   317  	SQLITE_IOCAP_SEQUENTIAL               = 0x00000400
   318  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN    = 0x00000800
   319  	SQLITE_IOERR                          = 10
   320  	SQLITE_IOERR_ACCESS                   = 3338
   321  	SQLITE_IOERR_AUTH                     = 7178
   322  	SQLITE_IOERR_BEGIN_ATOMIC             = 7434
   323  	SQLITE_IOERR_BLOCKED                  = 2826
   324  	SQLITE_IOERR_CHECKRESERVEDLOCK        = 3594
   325  	SQLITE_IOERR_CLOSE                    = 4106
   326  	SQLITE_IOERR_COMMIT_ATOMIC            = 7690
   327  	SQLITE_IOERR_CONVPATH                 = 6666
   328  	SQLITE_IOERR_CORRUPTFS                = 8458
   329  	SQLITE_IOERR_DATA                     = 8202
   330  	SQLITE_IOERR_DELETE                   = 2570
   331  	SQLITE_IOERR_DELETE_NOENT             = 5898
   332  	SQLITE_IOERR_DIR_CLOSE                = 4362
   333  	SQLITE_IOERR_DIR_FSYNC                = 1290
   334  	SQLITE_IOERR_FSTAT                    = 1802
   335  	SQLITE_IOERR_FSYNC                    = 1034
   336  	SQLITE_IOERR_GETTEMPPATH              = 6410
   337  	SQLITE_IOERR_LOCK                     = 3850
   338  	SQLITE_IOERR_MMAP                     = 6154
   339  	SQLITE_IOERR_NOMEM                    = 3082
   340  	SQLITE_IOERR_RDLOCK                   = 2314
   341  	SQLITE_IOERR_READ                     = 266
   342  	SQLITE_IOERR_ROLLBACK_ATOMIC          = 7946
   343  	SQLITE_IOERR_SEEK                     = 5642
   344  	SQLITE_IOERR_SHMLOCK                  = 5130
   345  	SQLITE_IOERR_SHMMAP                   = 5386
   346  	SQLITE_IOERR_SHMOPEN                  = 4618
   347  	SQLITE_IOERR_SHMSIZE                  = 4874
   348  	SQLITE_IOERR_SHORT_READ               = 522
   349  	SQLITE_IOERR_TRUNCATE                 = 1546
   350  	SQLITE_IOERR_UNLOCK                   = 2058
   351  	SQLITE_IOERR_VNODE                    = 6922
   352  	SQLITE_IOERR_WRITE                    = 778
   353  	SQLITE_LAST_ERRNO                     = 4
   354  	SQLITE_LIKE_DOESNT_MATCH_BLOBS        = 1
   355  	SQLITE_LIMIT_ATTACHED                 = 7
   356  	SQLITE_LIMIT_COLUMN                   = 2
   357  	SQLITE_LIMIT_COMPOUND_SELECT          = 4
   358  	SQLITE_LIMIT_EXPR_DEPTH               = 3
   359  	SQLITE_LIMIT_FUNCTION_ARG             = 6
   360  	SQLITE_LIMIT_LENGTH                   = 0
   361  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH      = 8
   362  	SQLITE_LIMIT_SQL_LENGTH               = 1
   363  	SQLITE_LIMIT_TRIGGER_DEPTH            = 10
   364  	SQLITE_LIMIT_VARIABLE_NUMBER          = 9
   365  	SQLITE_LIMIT_VDBE_OP                  = 5
   366  	SQLITE_LIMIT_WORKER_THREADS           = 11
   367  	SQLITE_LOCKED                         = 6
   368  	SQLITE_LOCKED_SHAREDCACHE             = 262
   369  	SQLITE_LOCKED_VTAB                    = 518
   370  	SQLITE_LOCK_EXCLUSIVE                 = 4
   371  	SQLITE_LOCK_NONE                      = 0
   372  	SQLITE_LOCK_PENDING                   = 3
   373  	SQLITE_LOCK_RESERVED                  = 2
   374  	SQLITE_LOCK_SHARED                    = 1
   375  	SQLITE_MISMATCH                       = 20
   376  	SQLITE_MISUSE                         = 21
   377  	SQLITE_MUTEX_APPDEF                   = 1
   378  	SQLITE_MUTEX_FAST                     = 0
   379  	SQLITE_MUTEX_NOOP                     = 1
   380  	SQLITE_MUTEX_RECURSIVE                = 1
   381  	SQLITE_MUTEX_STATIC_APP1              = 8
   382  	SQLITE_MUTEX_STATIC_APP2              = 9
   383  	SQLITE_MUTEX_STATIC_APP3              = 10
   384  	SQLITE_MUTEX_STATIC_LRU               = 6
   385  	SQLITE_MUTEX_STATIC_LRU2              = 7
   386  	SQLITE_MUTEX_STATIC_MAIN              = 2
   387  	SQLITE_MUTEX_STATIC_MASTER            = 2
   388  	SQLITE_MUTEX_STATIC_MEM               = 3
   389  	SQLITE_MUTEX_STATIC_MEM2              = 4
   390  	SQLITE_MUTEX_STATIC_OPEN              = 4
   391  	SQLITE_MUTEX_STATIC_PMEM              = 7
   392  	SQLITE_MUTEX_STATIC_PRNG              = 5
   393  	SQLITE_MUTEX_STATIC_VFS1              = 11
   394  	SQLITE_MUTEX_STATIC_VFS2              = 12
   395  	SQLITE_MUTEX_STATIC_VFS3              = 13
   396  	SQLITE_NOLFS                          = 22
   397  	SQLITE_NOMEM                          = 7
   398  	SQLITE_NOTADB                         = 26
   399  	SQLITE_NOTFOUND                       = 12
   400  	SQLITE_NOTICE                         = 27
   401  	SQLITE_NOTICE_RECOVER_ROLLBACK        = 539
   402  	SQLITE_NOTICE_RECOVER_WAL             = 283
   403  	SQLITE_NULL                           = 5
   404  	SQLITE_OK                             = 0
   405  	SQLITE_OK_LOAD_PERMANENTLY            = 256
   406  	SQLITE_OK_SYMLINK                     = 512
   407  	SQLITE_OMIT_LOAD_EXTENSION            = 1
   408  	SQLITE_OPEN_AUTOPROXY                 = 0x00000020
   409  	SQLITE_OPEN_CREATE                    = 0x00000004
   410  	SQLITE_OPEN_DELETEONCLOSE             = 0x00000008
   411  	SQLITE_OPEN_EXCLUSIVE                 = 0x00000010
   412  	SQLITE_OPEN_EXRESCODE                 = 0x02000000
   413  	SQLITE_OPEN_FULLMUTEX                 = 0x00010000
   414  	SQLITE_OPEN_MAIN_DB                   = 0x00000100
   415  	SQLITE_OPEN_MAIN_JOURNAL              = 0x00000800
   416  	SQLITE_OPEN_MASTER_JOURNAL            = 0x00004000
   417  	SQLITE_OPEN_MEMORY                    = 0x00000080
   418  	SQLITE_OPEN_NOFOLLOW                  = 0x01000000
   419  	SQLITE_OPEN_NOMUTEX                   = 0x00008000
   420  	SQLITE_OPEN_PRIVATECACHE              = 0x00040000
   421  	SQLITE_OPEN_READONLY                  = 0x00000001
   422  	SQLITE_OPEN_READWRITE                 = 0x00000002
   423  	SQLITE_OPEN_SHAREDCACHE               = 0x00020000
   424  	SQLITE_OPEN_SUBJOURNAL                = 0x00002000
   425  	SQLITE_OPEN_SUPER_JOURNAL             = 0x00004000
   426  	SQLITE_OPEN_TEMP_DB                   = 0x00000200
   427  	SQLITE_OPEN_TEMP_JOURNAL              = 0x00001000
   428  	SQLITE_OPEN_TRANSIENT_DB              = 0x00000400
   429  	SQLITE_OPEN_URI                       = 0x00000040
   430  	SQLITE_OPEN_WAL                       = 0x00080000
   431  	SQLITE_PERM                           = 3
   432  	SQLITE_PRAGMA                         = 19
   433  	SQLITE_PREPARE_NORMALIZE              = 0x02
   434  	SQLITE_PREPARE_NO_VTAB                = 0x04
   435  	SQLITE_PREPARE_PERSISTENT             = 0x01
   436  	SQLITE_PROTOCOL                       = 15
   437  	SQLITE_RANGE                          = 25
   438  	SQLITE_READ                           = 20
   439  	SQLITE_READONLY                       = 8
   440  	SQLITE_READONLY_CANTINIT              = 1288
   441  	SQLITE_READONLY_CANTLOCK              = 520
   442  	SQLITE_READONLY_DBMOVED               = 1032
   443  	SQLITE_READONLY_DIRECTORY             = 1544
   444  	SQLITE_READONLY_RECOVERY              = 264
   445  	SQLITE_READONLY_ROLLBACK              = 776
   446  	SQLITE_RECURSIVE                      = 33
   447  	SQLITE_REINDEX                        = 27
   448  	SQLITE_REPLACE                        = 5
   449  	SQLITE_ROLLBACK                       = 1
   450  	SQLITE_ROW                            = 100
   451  	SQLITE_SAVEPOINT                      = 32
   452  	SQLITE_SCANSTAT_EST                   = 2
   453  	SQLITE_SCANSTAT_EXPLAIN               = 4
   454  	SQLITE_SCANSTAT_NAME                  = 3
   455  	SQLITE_SCANSTAT_NLOOP                 = 0
   456  	SQLITE_SCANSTAT_NVISIT                = 1
   457  	SQLITE_SCANSTAT_SELECTID              = 5
   458  	SQLITE_SCHEMA                         = 17
   459  	SQLITE_SELECT                         = 21
   460  	SQLITE_SERIALIZE_NOCOPY               = 0x001
   461  	SQLITE_SERIES_CONSTRAINT_VERIFY       = 1
   462  	SQLITE_SERVER                         = 1
   463  	SQLITE_SESSION_CONFIG_STRMSIZE        = 1
   464  	SQLITE_SESSION_OBJCONFIG_SIZE         = 1
   465  	SQLITE_SET_LOCKPROXYFILE              = 3
   466  	SQLITE_SHM_EXCLUSIVE                  = 8
   467  	SQLITE_SHM_LOCK                       = 2
   468  	SQLITE_SHM_NLOCK                      = 8
   469  	SQLITE_SHM_SHARED                     = 4
   470  	SQLITE_SHM_UNLOCK                     = 1
   471  	SQLITE_SOUNDEX                        = 1
   472  	SQLITE_SOURCE_ID                      = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   473  	SQLITE_STATUS_MALLOC_COUNT            = 9
   474  	SQLITE_STATUS_MALLOC_SIZE             = 5
   475  	SQLITE_STATUS_MEMORY_USED             = 0
   476  	SQLITE_STATUS_PAGECACHE_OVERFLOW      = 2
   477  	SQLITE_STATUS_PAGECACHE_SIZE          = 7
   478  	SQLITE_STATUS_PAGECACHE_USED          = 1
   479  	SQLITE_STATUS_PARSER_STACK            = 6
   480  	SQLITE_STATUS_SCRATCH_OVERFLOW        = 4
   481  	SQLITE_STATUS_SCRATCH_SIZE            = 8
   482  	SQLITE_STATUS_SCRATCH_USED            = 3
   483  	SQLITE_STDCALL                        = 0
   484  	SQLITE_STMTSTATUS_AUTOINDEX           = 3
   485  	SQLITE_STMTSTATUS_FILTER_HIT          = 8
   486  	SQLITE_STMTSTATUS_FILTER_MISS         = 7
   487  	SQLITE_STMTSTATUS_FULLSCAN_STEP       = 1
   488  	SQLITE_STMTSTATUS_MEMUSED             = 99
   489  	SQLITE_STMTSTATUS_REPREPARE           = 5
   490  	SQLITE_STMTSTATUS_RUN                 = 6
   491  	SQLITE_STMTSTATUS_SORT                = 2
   492  	SQLITE_STMTSTATUS_VM_STEP             = 4
   493  	SQLITE_SUBTYPE                        = 0x000100000
   494  	SQLITE_SYNC_DATAONLY                  = 0x00010
   495  	SQLITE_SYNC_FULL                      = 0x00003
   496  	SQLITE_SYNC_NORMAL                    = 0x00002
   497  	SQLITE_SYSAPI                         = 0
   498  	SQLITE_TEMP_STORE                     = 1
   499  	SQLITE_TEST                           = 1
   500  	SQLITE_TESTCTRL_ALWAYS                = 13
   501  	SQLITE_TESTCTRL_ASSERT                = 12
   502  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   = 10
   503  	SQLITE_TESTCTRL_BITVEC_TEST           = 8
   504  	SQLITE_TESTCTRL_BYTEORDER             = 22
   505  	SQLITE_TESTCTRL_EXPLAIN_STMT          = 19
   506  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   = 29
   507  	SQLITE_TESTCTRL_FAULT_INSTALL         = 9
   508  	SQLITE_TESTCTRL_FIRST                 = 5
   509  	SQLITE_TESTCTRL_IMPOSTER              = 25
   510  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS    = 17
   511  	SQLITE_TESTCTRL_ISINIT                = 23
   512  	SQLITE_TESTCTRL_ISKEYWORD             = 16
   513  	SQLITE_TESTCTRL_LAST                  = 33
   514  	SQLITE_TESTCTRL_LOCALTIME_FAULT       = 18
   515  	SQLITE_TESTCTRL_LOGEST                = 33
   516  	SQLITE_TESTCTRL_NEVER_CORRUPT         = 20
   517  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD  = 19
   518  	SQLITE_TESTCTRL_OPTIMIZATIONS         = 15
   519  	SQLITE_TESTCTRL_PARSER_COVERAGE       = 26
   520  	SQLITE_TESTCTRL_PENDING_BYTE          = 11
   521  	SQLITE_TESTCTRL_PRNG_RESET            = 7
   522  	SQLITE_TESTCTRL_PRNG_RESTORE          = 6
   523  	SQLITE_TESTCTRL_PRNG_SAVE             = 5
   524  	SQLITE_TESTCTRL_PRNG_SEED             = 28
   525  	SQLITE_TESTCTRL_RESERVE               = 14
   526  	SQLITE_TESTCTRL_RESULT_INTREAL        = 27
   527  	SQLITE_TESTCTRL_SCRATCHMALLOC         = 17
   528  	SQLITE_TESTCTRL_SEEK_COUNT            = 30
   529  	SQLITE_TESTCTRL_SORTER_MMAP           = 24
   530  	SQLITE_TESTCTRL_TRACEFLAGS            = 31
   531  	SQLITE_TESTCTRL_TUNE                  = 32
   532  	SQLITE_TESTCTRL_VDBE_COVERAGE         = 21
   533  	SQLITE_TEXT                           = 3
   534  	SQLITE_THREADSAFE                     = 1
   535  	SQLITE_TOOBIG                         = 18
   536  	SQLITE_TRACE_CLOSE                    = 0x08
   537  	SQLITE_TRACE_PROFILE                  = 0x02
   538  	SQLITE_TRACE_ROW                      = 0x04
   539  	SQLITE_TRACE_STMT                     = 0x01
   540  	SQLITE_TRANSACTION                    = 22
   541  	SQLITE_TXN_NONE                       = 0
   542  	SQLITE_TXN_READ                       = 1
   543  	SQLITE_TXN_WRITE                      = 2
   544  	SQLITE_UPDATE                         = 23
   545  	SQLITE_UTF16                          = 4
   546  	SQLITE_UTF16BE                        = 3
   547  	SQLITE_UTF16LE                        = 2
   548  	SQLITE_UTF16_ALIGNED                  = 8
   549  	SQLITE_UTF8                           = 1
   550  	SQLITE_VERSION                        = "3.39.3"
   551  	SQLITE_VERSION_NUMBER                 = 3039003
   552  	SQLITE_VTAB_CONSTRAINT_SUPPORT        = 1
   553  	SQLITE_VTAB_DIRECTONLY                = 3
   554  	SQLITE_VTAB_INNOCUOUS                 = 2
   555  	SQLITE_WARNING                        = 28
   556  	SQLITE_WARNING_AUTOINDEX              = 284
   557  	SQLITE_WIN32_DATA_DIRECTORY_TYPE      = 1
   558  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE      = 2
   559  	TMP_MAX                               = 238328
   560  	UNIQUE_TABLE_NAME                     = "t592690916721053953805701627921227776"
   561  	X_ANSI_STDARG_H_                      = 0
   562  	X_ASSERT_H                            = 1
   563  	X_ATFILE_SOURCE                       = 1
   564  	X_BITS_STDIO_LIM_H                    = 1
   565  	X_BITS_TIME64_H                       = 1
   566  	X_BITS_TYPESIZES_H                    = 1
   567  	X_BITS_TYPES_H                        = 1
   568  	X_BITS_TYPES_LOCALE_T_H               = 1
   569  	X_BITS_TYPES___LOCALE_T_H             = 1
   570  	X_BSD_SIZE_T_                         = 0
   571  	X_BSD_SIZE_T_DEFINED_                 = 0
   572  	X_DEFAULT_SOURCE                      = 1
   573  	X_FEATURES_H                          = 1
   574  	X_FILE_OFFSET_BITS                    = 64
   575  	X_FTS5_H                              = 0
   576  	X_GCC_SIZE_T                          = 0
   577  	X_HAVE_SQLITE_CONFIG_H                = 1
   578  	X_ILP32                               = 1
   579  	X_IOFBF                               = 0
   580  	X_IOLBF                               = 1
   581  	X_IONBF                               = 2
   582  	X_IO_EOF_SEEN                         = 0x0010
   583  	X_IO_ERR_SEEN                         = 0x0020
   584  	X_IO_USER_LOCK                        = 0x8000
   585  	X_POSIX_C_SOURCE                      = 200809
   586  	X_POSIX_SOURCE                        = 1
   587  	X_SIZET_                              = 0
   588  	X_SIZE_T                              = 0
   589  	X_SIZE_T_                             = 0
   590  	X_SIZE_T_DECLARED                     = 0
   591  	X_SIZE_T_DEFINED                      = 0
   592  	X_SIZE_T_DEFINED_                     = 0
   593  	X_SQLITE3RTREE_H_                     = 0
   594  	X_STDARG_H                            = 0
   595  	X_STDC_PREDEF_H                       = 1
   596  	X_STDIO_H                             = 1
   597  	X_STRINGS_H                           = 1
   598  	X_STRING_H                            = 1
   599  	X_SYS_CDEFS_H                         = 1
   600  	X_SYS_SIZE_T_H                        = 0
   601  	X_T_SIZE                              = 0
   602  	X_T_SIZE_                             = 0
   603  	X_VA_LIST                             = 0
   604  	X_VA_LIST_                            = 0
   605  	X_VA_LIST_DEFINED                     = 0
   606  	X_VA_LIST_T_H                         = 0
   607  	I386                                  = 1
   608  	Linux                                 = 1
   609  	Unix                                  = 1
   610  	CRTIMPORT                             = 0
   611  	DLLIMPORT                             = 0
   612  	INLINE                                = 0
   613  	MP_DIGIT_DECLARED                     = 0
   614  	MP_INT_DECLARED                       = 0
   615  	NUM_STATIC_TOKENS                     = 20
   616  	SQLITE_TCLAPI                         = 0
   617  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   618  	TCL_ALL_EVENTS                        = -3
   619  	TCL_ALPHA_RELEASE                     = 0
   620  	TCL_APPEND_VALUE                      = 4
   621  	TCL_ARGV_CONSTANT                     = 15
   622  	TCL_ARGV_END                          = 23
   623  	TCL_ARGV_FLOAT                        = 19
   624  	TCL_ARGV_FUNC                         = 20
   625  	TCL_ARGV_GENFUNC                      = 21
   626  	TCL_ARGV_HELP                         = 22
   627  	TCL_ARGV_INT                          = 16
   628  	TCL_ARGV_REST                         = 18
   629  	TCL_ARGV_STRING                       = 17
   630  	TCL_BETA_RELEASE                      = 1
   631  	TCL_BREAK                             = 3
   632  	TCL_CANCEL_UNWIND                     = 0x100000
   633  	TCL_CHANNEL_THREAD_INSERT             = 0
   634  	TCL_CHANNEL_THREAD_REMOVE             = 1
   635  	TCL_CLOSE_READ                        = 2
   636  	TCL_CLOSE_WRITE                       = 4
   637  	TCL_CONTINUE                          = 4
   638  	TCL_CONVERT_MULTIBYTE                 = -1
   639  	TCL_CONVERT_NOSPACE                   = -4
   640  	TCL_CONVERT_SYNTAX                    = -2
   641  	TCL_CONVERT_UNKNOWN                   = -3
   642  	TCL_CREATE_HARD_LINK                  = 0x02
   643  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   644  	TCL_CUSTOM_PTR_KEYS                   = -1
   645  	TCL_CUSTOM_TYPE_KEYS                  = -2
   646  	TCL_DONT_QUOTE_HASH                   = 8
   647  	TCL_DONT_USE_BRACES                   = 1
   648  	TCL_DONT_WAIT                         = 2
   649  	TCL_DOUBLE_SPACE                      = 27
   650  	TCL_DSTRING_STATIC_SIZE               = 200
   651  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   652  	TCL_ENCODING_END                      = 0x02
   653  	TCL_ENCODING_NO_TERMINATE             = 0x08
   654  	TCL_ENCODING_START                    = 0x01
   655  	TCL_ENCODING_STOPONERROR              = 0x04
   656  	TCL_ENFORCE_MODE                      = 16
   657  	TCL_ENSEMBLE_PREFIX                   = 0x02
   658  	TCL_ERROR                             = 1
   659  	TCL_EVAL_DIRECT                       = 0x040000
   660  	TCL_EVAL_GLOBAL                       = 0x020000
   661  	TCL_EVAL_INVOKE                       = 0x080000
   662  	TCL_EVAL_NOERR                        = 0x200000
   663  	TCL_EXACT                             = 1
   664  	TCL_EXCEPTION                         = 8
   665  	TCL_FILE_EVENTS                       = 8
   666  	TCL_FINAL_RELEASE                     = 2
   667  	TCL_GLOBAL_ONLY                       = 1
   668  	TCL_GLOB_PERM_HIDDEN                  = 2
   669  	TCL_GLOB_PERM_R                       = 4
   670  	TCL_GLOB_PERM_RONLY                   = 1
   671  	TCL_GLOB_PERM_W                       = 8
   672  	TCL_GLOB_PERM_X                       = 16
   673  	TCL_GLOB_TYPE_BLOCK                   = 1
   674  	TCL_GLOB_TYPE_CHAR                    = 2
   675  	TCL_GLOB_TYPE_DIR                     = 4
   676  	TCL_GLOB_TYPE_FILE                    = 16
   677  	TCL_GLOB_TYPE_LINK                    = 32
   678  	TCL_GLOB_TYPE_MOUNT                   = 128
   679  	TCL_GLOB_TYPE_PIPE                    = 8
   680  	TCL_GLOB_TYPE_SOCK                    = 64
   681  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   682  	TCL_HASH_KEY_STORE_HASH               = 1
   683  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   684  	TCL_HASH_KEY_TYPE_VERSION             = 1
   685  	TCL_IDLE_EVENTS                       = 32
   686  	TCL_INTEGER_SPACE                     = 24
   687  	TCL_INTERP_DESTROYED                  = 0x100
   688  	TCL_LEAVE_ERR_MSG                     = 0x200
   689  	TCL_LIMIT_COMMANDS                    = 0x01
   690  	TCL_LIMIT_TIME                        = 0x02
   691  	TCL_LINK_BOOLEAN                      = 3
   692  	TCL_LINK_CHAR                         = 6
   693  	TCL_LINK_DOUBLE                       = 2
   694  	TCL_LINK_FLOAT                        = 13
   695  	TCL_LINK_INT                          = 1
   696  	TCL_LINK_LONG                         = 11
   697  	TCL_LINK_READ_ONLY                    = 0x80
   698  	TCL_LINK_SHORT                        = 8
   699  	TCL_LINK_STRING                       = 4
   700  	TCL_LINK_UCHAR                        = 7
   701  	TCL_LINK_UINT                         = 10
   702  	TCL_LINK_ULONG                        = 12
   703  	TCL_LINK_USHORT                       = 9
   704  	TCL_LINK_WIDE_INT                     = 5
   705  	TCL_LINK_WIDE_UINT                    = 14
   706  	TCL_LIST_ELEMENT                      = 8
   707  	TCL_LL_MODIFIER                       = "ll"
   708  	TCL_LOAD_GLOBAL                       = 1
   709  	TCL_LOAD_LAZY                         = 2
   710  	TCL_MAJOR_VERSION                     = 8
   711  	TCL_MATCH_NOCASE                      = 1
   712  	TCL_MAX_PREC                          = 17
   713  	TCL_MINOR_VERSION                     = 6
   714  	TCL_MODE_BLOCKING                     = 0
   715  	TCL_MODE_NONBLOCKING                  = 1
   716  	TCL_NAMESPACE_ONLY                    = 2
   717  	TCL_NORETURN1                         = 0
   718  	TCL_NO_EVAL                           = 0x010000
   719  	TCL_OK                                = 0
   720  	TCL_ONE_WORD_KEYS                     = 1
   721  	TCL_PARSE_BAD_NUMBER                  = 9
   722  	TCL_PARSE_BRACE_EXTRA                 = 2
   723  	TCL_PARSE_MISSING_BRACE               = 3
   724  	TCL_PARSE_MISSING_BRACKET             = 4
   725  	TCL_PARSE_MISSING_PAREN               = 5
   726  	TCL_PARSE_MISSING_QUOTE               = 6
   727  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   728  	TCL_PARSE_PART1                       = 0x400
   729  	TCL_PARSE_QUOTE_EXTRA                 = 1
   730  	TCL_PARSE_SUCCESS                     = 0
   731  	TCL_PARSE_SYNTAX                      = 8
   732  	TCL_PATCH_LEVEL                       = "8.6.11"
   733  	TCL_READABLE                          = 2
   734  	TCL_REG_ADVANCED                      = 000003
   735  	TCL_REG_ADVF                          = 000002
   736  	TCL_REG_BASIC                         = 000000
   737  	TCL_REG_CANMATCH                      = 001000
   738  	TCL_REG_EXPANDED                      = 000040
   739  	TCL_REG_EXTENDED                      = 000001
   740  	TCL_REG_NEWLINE                       = 000300
   741  	TCL_REG_NLANCH                        = 000200
   742  	TCL_REG_NLSTOP                        = 000100
   743  	TCL_REG_NOCASE                        = 000010
   744  	TCL_REG_NOSUB                         = 000020
   745  	TCL_REG_NOTBOL                        = 0001
   746  	TCL_REG_NOTEOL                        = 0002
   747  	TCL_REG_QUOTE                         = 000004
   748  	TCL_RELEASE_LEVEL                     = 2
   749  	TCL_RELEASE_SERIAL                    = 11
   750  	TCL_RESULT_SIZE                       = 200
   751  	TCL_RETURN                            = 2
   752  	TCL_SERVICE_ALL                       = 1
   753  	TCL_SERVICE_NONE                      = 0
   754  	TCL_SMALL_HASH_TABLE                  = 4
   755  	TCL_STDERR                            = 8
   756  	TCL_STDIN                             = 2
   757  	TCL_STDOUT                            = 4
   758  	TCL_STORAGE_CLASS                     = 0
   759  	TCL_STRING_KEYS                       = 0
   760  	TCL_SUBST_ALL                         = 007
   761  	TCL_SUBST_BACKSLASHES                 = 004
   762  	TCL_SUBST_COMMANDS                    = 001
   763  	TCL_SUBST_VARIABLES                   = 002
   764  	TCL_THREAD_CREATE_RETURN              = 0
   765  	TCL_THREAD_JOINABLE                   = 1
   766  	TCL_THREAD_NOFLAGS                    = 0
   767  	TCL_THREAD_STACK_DEFAULT              = 0
   768  	TCL_TIMER_EVENTS                      = 16
   769  	TCL_TOKEN_BS                          = 8
   770  	TCL_TOKEN_COMMAND                     = 16
   771  	TCL_TOKEN_EXPAND_WORD                 = 256
   772  	TCL_TOKEN_OPERATOR                    = 128
   773  	TCL_TOKEN_SIMPLE_WORD                 = 2
   774  	TCL_TOKEN_SUB_EXPR                    = 64
   775  	TCL_TOKEN_TEXT                        = 4
   776  	TCL_TOKEN_VARIABLE                    = 32
   777  	TCL_TOKEN_WORD                        = 1
   778  	TCL_TRACE_ARRAY                       = 0x800
   779  	TCL_TRACE_DELETE                      = 0x4000
   780  	TCL_TRACE_DESTROYED                   = 0x80
   781  	TCL_TRACE_OLD_STYLE                   = 0x1000
   782  	TCL_TRACE_READS                       = 0x10
   783  	TCL_TRACE_RENAME                      = 0x2000
   784  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   785  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   786  	TCL_TRACE_UNSETS                      = 0x40
   787  	TCL_TRACE_WRITES                      = 0x20
   788  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   789  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   790  	TCL_UTF_MAX                           = 3
   791  	TCL_VERSION                           = "8.6"
   792  	TCL_WINDOW_EVENTS                     = 4
   793  	TCL_WRITABLE                          = 4
   794  	TCL_ZLIB_COMPRESS_BEST                = 9
   795  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   796  	TCL_ZLIB_COMPRESS_FAST                = 1
   797  	TCL_ZLIB_COMPRESS_NONE                = 0
   798  	TCL_ZLIB_FINALIZE                     = 4
   799  	TCL_ZLIB_FLUSH                        = 2
   800  	TCL_ZLIB_FORMAT_AUTO                  = 8
   801  	TCL_ZLIB_FORMAT_GZIP                  = 4
   802  	TCL_ZLIB_FORMAT_RAW                   = 1
   803  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   804  	TCL_ZLIB_FULLFLUSH                    = 3
   805  	TCL_ZLIB_NO_FLUSH                     = 0
   806  	TCL_ZLIB_STREAM_DEFLATE               = 16
   807  	TCL_ZLIB_STREAM_INFLATE               = 32
   808  	X_CLIENTDATA                          = 0
   809  	X_TCL                                 = 0
   810  	X_TCLDECLS                            = 0
   811  	X_TCLPLATDECLS                        = 0
   812  	X_FTSINT_H                            = 0
   813  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   814  	APND_MARK_FOS_SZ                      = 8
   815  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   816  	APND_MARK_PREFIX_SZ                   = 17
   817  	APND_MARK_SIZE                        = 25
   818  	APND_MAX_SIZE                         = 1073741824
   819  	APND_ROUNDUP                          = 4096
   820  	SQLITE3EXT_H                          = 0
   821  	SQLITE_EXTENSION_INIT1                = 0
   822  	SQLITE_EXTENSION_INIT3                = 0
   823  	AMATCH_COL_COMMAND                    = 3
   824  	AMATCH_COL_DISTANCE                   = 1
   825  	AMATCH_COL_LANGUAGE                   = 2
   826  	AMATCH_COL_NWORD                      = 4
   827  	AMATCH_COL_WORD                       = 0
   828  	AMATCH_MX_COST                        = 1000
   829  	AMATCH_MX_LANGID                      = 2147483647
   830  	AMATCH_MX_LENGTH                      = 50
   831  	BIG_ENDIAN                            = 4321
   832  	BYTE_ORDER                            = 1234
   833  	EXIT_FAILURE                          = 1
   834  	EXIT_SUCCESS                          = 0
   835  	FD_SETSIZE                            = 1024
   836  	LITTLE_ENDIAN                         = 1234
   837  	PDP_ENDIAN                            = 3412
   838  	RAND_MAX                              = 2147483647
   839  	WCONTINUED                            = 8
   840  	WEXITED                               = 4
   841  	WNOHANG                               = 1
   842  	WNOWAIT                               = 0x01000000
   843  	WSTOPPED                              = 2
   844  	WUNTRACED                             = 2
   845  	X_ALLOCA_H                            = 1
   846  	X_BITS_BYTESWAP_H                     = 1
   847  	X_BITS_ENDIANNESS_H                   = 1
   848  	X_BITS_ENDIAN_H                       = 1
   849  	X_BITS_FLOATN_COMMON_H                = 0
   850  	X_BITS_FLOATN_H                       = 0
   851  	X_BITS_PTHREADTYPES_ARCH_H            = 1
   852  	X_BITS_PTHREADTYPES_COMMON_H          = 1
   853  	X_BITS_STDINT_INTN_H                  = 1
   854  	X_BITS_UINTN_IDENTITY_H               = 1
   855  	X_CTYPE_H                             = 1
   856  	X_ENDIAN_H                            = 1
   857  	X_GCC_WCHAR_T                         = 0
   858  	X_RWLOCK_INTERNAL_H                   = 0
   859  	X_STDLIB_H                            = 1
   860  	X_STRUCT_TIMESPEC                     = 1
   861  	X_SYS_SELECT_H                        = 1
   862  	X_SYS_TYPES_H                         = 1
   863  	X_THREAD_MUTEX_INTERNAL_H             = 1
   864  	X_THREAD_SHARED_TYPES_H               = 1
   865  	X_T_WCHAR                             = 0
   866  	X_T_WCHAR_                            = 0
   867  	X_WCHAR_T                             = 0
   868  	X_WCHAR_T_                            = 0
   869  	X_WCHAR_T_DECLARED                    = 0
   870  	X_WCHAR_T_DEFINED                     = 0
   871  	X_WCHAR_T_DEFINED_                    = 0
   872  	X_WCHAR_T_H                           = 0
   873  	CARRAY_COLUMN_COUNT                   = 2
   874  	CARRAY_COLUMN_CTYPE                   = 3
   875  	CARRAY_COLUMN_POINTER                 = 1
   876  	CARRAY_COLUMN_VALUE                   = 0
   877  	CARRAY_DOUBLE                         = 2
   878  	CARRAY_INT32                          = 0
   879  	CARRAY_INT64                          = 1
   880  	CARRAY_TEXT                           = 3
   881  	CLOSURE_COL_DEPTH                     = 1
   882  	CLOSURE_COL_ID                        = 0
   883  	CLOSURE_COL_IDCOLUMN                  = 4
   884  	CLOSURE_COL_PARENTCOLUMN              = 5
   885  	CLOSURE_COL_ROOT                      = 2
   886  	CLOSURE_COL_TABLENAME                 = 3
   887  	CSVTEST_FIDX                          = 0x0001
   888  	CSV_INBUFSZ                           = 1024
   889  	CSV_MXERR                             = 200
   890  	EXPLN_COLUMN_ADDR                     = 0
   891  	EXPLN_COLUMN_COMMENT                  = 7
   892  	EXPLN_COLUMN_OPCODE                   = 1
   893  	EXPLN_COLUMN_P1                       = 2
   894  	EXPLN_COLUMN_P2                       = 3
   895  	EXPLN_COLUMN_P3                       = 4
   896  	EXPLN_COLUMN_P4                       = 5
   897  	EXPLN_COLUMN_P5                       = 6
   898  	EXPLN_COLUMN_SQL                      = 8
   899  	ACCESSPERMS                           = 511
   900  	AIO_PRIO_DELTA_MAX                    = 20
   901  	ALLPERMS                              = 4095
   902  	AT_EACCESS                            = 0x200
   903  	AT_FDCWD                              = -100
   904  	AT_REMOVEDIR                          = 0x200
   905  	AT_SYMLINK_FOLLOW                     = 0x400
   906  	AT_SYMLINK_NOFOLLOW                   = 0x100
   907  	CLOCK_BOOTTIME                        = 7
   908  	CLOCK_BOOTTIME_ALARM                  = 9
   909  	CLOCK_MONOTONIC                       = 1
   910  	CLOCK_MONOTONIC_COARSE                = 6
   911  	CLOCK_MONOTONIC_RAW                   = 4
   912  	CLOCK_PROCESS_CPUTIME_ID              = 2
   913  	CLOCK_REALTIME                        = 0
   914  	CLOCK_REALTIME_ALARM                  = 8
   915  	CLOCK_REALTIME_COARSE                 = 5
   916  	CLOCK_TAI                             = 11
   917  	CLOCK_THREAD_CPUTIME_ID               = 3
   918  	DEFFILEMODE                           = 438
   919  	DELAYTIMER_MAX                        = 2147483647
   920  	E2BIG                                 = 7
   921  	EACCES                                = 13
   922  	EADDRINUSE                            = 98
   923  	EADDRNOTAVAIL                         = 99
   924  	EADV                                  = 68
   925  	EAFNOSUPPORT                          = 97
   926  	EAGAIN                                = 11
   927  	EALREADY                              = 114
   928  	EBADE                                 = 52
   929  	EBADF                                 = 9
   930  	EBADFD                                = 77
   931  	EBADMSG                               = 74
   932  	EBADR                                 = 53
   933  	EBADRQC                               = 56
   934  	EBADSLT                               = 57
   935  	EBFONT                                = 59
   936  	EBUSY                                 = 16
   937  	ECANCELED                             = 125
   938  	ECHILD                                = 10
   939  	ECHRNG                                = 44
   940  	ECOMM                                 = 70
   941  	ECONNABORTED                          = 103
   942  	ECONNREFUSED                          = 111
   943  	ECONNRESET                            = 104
   944  	EDEADLK                               = 35
   945  	EDEADLOCK                             = 35
   946  	EDESTADDRREQ                          = 89
   947  	EDOM                                  = 33
   948  	EDOTDOT                               = 73
   949  	EDQUOT                                = 122
   950  	EEXIST                                = 17
   951  	EFAULT                                = 14
   952  	EFBIG                                 = 27
   953  	EHOSTDOWN                             = 112
   954  	EHOSTUNREACH                          = 113
   955  	EHWPOISON                             = 133
   956  	EIDRM                                 = 43
   957  	EILSEQ                                = 84
   958  	EINPROGRESS                           = 115
   959  	EINTR                                 = 4
   960  	EINVAL                                = 22
   961  	EIO                                   = 5
   962  	EISCONN                               = 106
   963  	EISDIR                                = 21
   964  	EISNAM                                = 120
   965  	EKEYEXPIRED                           = 127
   966  	EKEYREJECTED                          = 129
   967  	EKEYREVOKED                           = 128
   968  	EL2HLT                                = 51
   969  	EL2NSYNC                              = 45
   970  	EL3HLT                                = 46
   971  	EL3RST                                = 47
   972  	ELIBACC                               = 79
   973  	ELIBBAD                               = 80
   974  	ELIBEXEC                              = 83
   975  	ELIBMAX                               = 82
   976  	ELIBSCN                               = 81
   977  	ELNRNG                                = 48
   978  	ELOOP                                 = 40
   979  	EMEDIUMTYPE                           = 124
   980  	EMFILE                                = 24
   981  	EMLINK                                = 31
   982  	EMSGSIZE                              = 90
   983  	EMULTIHOP                             = 72
   984  	ENAMETOOLONG                          = 36
   985  	ENAVAIL                               = 119
   986  	ENETDOWN                              = 100
   987  	ENETRESET                             = 102
   988  	ENETUNREACH                           = 101
   989  	ENFILE                                = 23
   990  	ENOANO                                = 55
   991  	ENOBUFS                               = 105
   992  	ENOCSI                                = 50
   993  	ENODATA                               = 61
   994  	ENODEV                                = 19
   995  	ENOENT                                = 2
   996  	ENOEXEC                               = 8
   997  	ENOKEY                                = 126
   998  	ENOLCK                                = 37
   999  	ENOLINK                               = 67
  1000  	ENOMEDIUM                             = 123
  1001  	ENOMEM                                = 12
  1002  	ENOMSG                                = 42
  1003  	ENONET                                = 64
  1004  	ENOPKG                                = 65
  1005  	ENOPROTOOPT                           = 92
  1006  	ENOSPC                                = 28
  1007  	ENOSR                                 = 63
  1008  	ENOSTR                                = 60
  1009  	ENOSYS                                = 38
  1010  	ENOTBLK                               = 15
  1011  	ENOTCONN                              = 107
  1012  	ENOTDIR                               = 20
  1013  	ENOTEMPTY                             = 39
  1014  	ENOTNAM                               = 118
  1015  	ENOTRECOVERABLE                       = 131
  1016  	ENOTSOCK                              = 88
  1017  	ENOTSUP                               = 95
  1018  	ENOTTY                                = 25
  1019  	ENOTUNIQ                              = 76
  1020  	ENXIO                                 = 6
  1021  	EOPNOTSUPP                            = 95
  1022  	EOVERFLOW                             = 75
  1023  	EOWNERDEAD                            = 130
  1024  	EPERM                                 = 1
  1025  	EPFNOSUPPORT                          = 96
  1026  	EPIPE                                 = 32
  1027  	EPROTO                                = 71
  1028  	EPROTONOSUPPORT                       = 93
  1029  	EPROTOTYPE                            = 91
  1030  	ERANGE                                = 34
  1031  	EREMCHG                               = 78
  1032  	EREMOTE                               = 66
  1033  	EREMOTEIO                             = 121
  1034  	ERESTART                              = 85
  1035  	ERFKILL                               = 132
  1036  	EROFS                                 = 30
  1037  	ESHUTDOWN                             = 108
  1038  	ESOCKTNOSUPPORT                       = 94
  1039  	ESPIPE                                = 29
  1040  	ESRCH                                 = 3
  1041  	ESRMNT                                = 69
  1042  	ESTALE                                = 116
  1043  	ESTRPIPE                              = 86
  1044  	ETIME                                 = 62
  1045  	ETIMEDOUT                             = 110
  1046  	ETOOMANYREFS                          = 109
  1047  	ETXTBSY                               = 26
  1048  	EUCLEAN                               = 117
  1049  	EUNATCH                               = 49
  1050  	EUSERS                                = 87
  1051  	EWOULDBLOCK                           = 11
  1052  	EXDEV                                 = 18
  1053  	EXFULL                                = 54
  1054  	FAPPEND                               = 1024
  1055  	FASYNC                                = 8192
  1056  	FD_CLOEXEC                            = 1
  1057  	FFSYNC                                = 1052672
  1058  	FNDELAY                               = 2048
  1059  	FNONBLOCK                             = 2048
  1060  	FSDIR_COLUMN_DATA                     = 3
  1061  	FSDIR_COLUMN_DIR                      = 5
  1062  	FSDIR_COLUMN_MODE                     = 1
  1063  	FSDIR_COLUMN_MTIME                    = 2
  1064  	FSDIR_COLUMN_NAME                     = 0
  1065  	FSDIR_COLUMN_PATH                     = 4
  1066  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1067  	F_DUPFD                               = 0
  1068  	F_DUPFD_CLOEXEC                       = 1030
  1069  	F_EXLCK                               = 4
  1070  	F_GETFD                               = 1
  1071  	F_GETFL                               = 3
  1072  	F_GETLK                               = 12
  1073  	F_GETLK64                             = 12
  1074  	F_GETOWN                              = 9
  1075  	F_LOCK                                = 1
  1076  	F_OK                                  = 0
  1077  	F_RDLCK                               = 0
  1078  	F_SETFD                               = 2
  1079  	F_SETFL                               = 4
  1080  	F_SETLK                               = 13
  1081  	F_SETLK64                             = 13
  1082  	F_SETLKW                              = 14
  1083  	F_SETLKW64                            = 14
  1084  	F_SETOWN                              = 8
  1085  	F_SHLCK                               = 8
  1086  	F_TEST                                = 3
  1087  	F_TLOCK                               = 2
  1088  	F_ULOCK                               = 0
  1089  	F_UNLCK                               = 2
  1090  	F_WRLCK                               = 1
  1091  	HOST_NAME_MAX                         = 64
  1092  	LOCK_EX                               = 2
  1093  	LOCK_NB                               = 4
  1094  	LOCK_SH                               = 1
  1095  	LOCK_UN                               = 8
  1096  	LOGIN_NAME_MAX                        = 256
  1097  	L_INCR                                = 1
  1098  	L_SET                                 = 0
  1099  	L_XTND                                = 2
  1100  	MAXNAMLEN                             = 255
  1101  	MAX_CANON                             = 255
  1102  	MAX_INPUT                             = 255
  1103  	MQ_PRIO_MAX                           = 32768
  1104  	NAME_MAX                              = 255
  1105  	NGROUPS_MAX                           = 65536
  1106  	O_ACCMODE                             = 0003
  1107  	O_APPEND                              = 02000
  1108  	O_ASYNC                               = 020000
  1109  	O_CLOEXEC                             = 524288
  1110  	O_CREAT                               = 0100
  1111  	O_DIRECTORY                           = 65536
  1112  	O_DSYNC                               = 4096
  1113  	O_EXCL                                = 0200
  1114  	O_FSYNC                               = 1052672
  1115  	O_NDELAY                              = 2048
  1116  	O_NOCTTY                              = 0400
  1117  	O_NOFOLLOW                            = 131072
  1118  	O_NONBLOCK                            = 04000
  1119  	O_RDONLY                              = 00
  1120  	O_RDWR                                = 02
  1121  	O_RSYNC                               = 1052672
  1122  	O_SYNC                                = 04010000
  1123  	O_TRUNC                               = 01000
  1124  	O_WRONLY                              = 01
  1125  	PATH_MAX                              = 4096
  1126  	PIPE_BUF                              = 4096
  1127  	POSIX_FADV_DONTNEED                   = 4
  1128  	POSIX_FADV_NOREUSE                    = 5
  1129  	POSIX_FADV_NORMAL                     = 0
  1130  	POSIX_FADV_RANDOM                     = 1
  1131  	POSIX_FADV_SEQUENTIAL                 = 2
  1132  	POSIX_FADV_WILLNEED                   = 3
  1133  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  1134  	PTHREAD_KEYS_MAX                      = 1024
  1135  	PTHREAD_STACK_MIN                     = 16384
  1136  	RTSIG_MAX                             = 32
  1137  	R_OK                                  = 4
  1138  	SEM_VALUE_MAX                         = 2147483647
  1139  	STDERR_FILENO                         = 2
  1140  	STDIN_FILENO                          = 0
  1141  	STDOUT_FILENO                         = 1
  1142  	S_BLKSIZE                             = 512
  1143  	S_IEXEC                               = 64
  1144  	S_IFBLK                               = 24576
  1145  	S_IFCHR                               = 8192
  1146  	S_IFDIR                               = 16384
  1147  	S_IFIFO                               = 4096
  1148  	S_IFLNK                               = 40960
  1149  	S_IFMT                                = 61440
  1150  	S_IFREG                               = 32768
  1151  	S_IFSOCK                              = 49152
  1152  	S_IREAD                               = 256
  1153  	S_IRGRP                               = 32
  1154  	S_IROTH                               = 4
  1155  	S_IRUSR                               = 256
  1156  	S_IRWXG                               = 56
  1157  	S_IRWXO                               = 7
  1158  	S_IRWXU                               = 448
  1159  	S_ISGID                               = 1024
  1160  	S_ISUID                               = 2048
  1161  	S_ISVTX                               = 512
  1162  	S_IWGRP                               = 16
  1163  	S_IWOTH                               = 2
  1164  	S_IWRITE                              = 128
  1165  	S_IWUSR                               = 128
  1166  	S_IXGRP                               = 8
  1167  	S_IXOTH                               = 1
  1168  	S_IXUSR                               = 64
  1169  	TIMER_ABSTIME                         = 1
  1170  	TIME_UTC                              = 1
  1171  	TTY_NAME_MAX                          = 32
  1172  	UTIME_NOW                             = 1073741823
  1173  	UTIME_OMIT                            = 1073741822
  1174  	W_OK                                  = 2
  1175  	XATTR_LIST_MAX                        = 65536
  1176  	XATTR_NAME_MAX                        = 255
  1177  	XATTR_SIZE_MAX                        = 65536
  1178  	X_OK                                  = 1
  1179  	X_ASM_GENERIC_ERRNO_BASE_H            = 0
  1180  	X_ASM_GENERIC_ERRNO_H                 = 0
  1181  	X_BITS_ERRNO_H                        = 1
  1182  	X_BITS_POSIX1_LIM_H                   = 1
  1183  	X_BITS_POSIX_OPT_H                    = 1
  1184  	X_BITS_STAT_H                         = 1
  1185  	X_BITS_TIME_H                         = 1
  1186  	X_DIRENT_H                            = 1
  1187  	X_DIRENT_HAVE_D_OFF                   = 0
  1188  	X_DIRENT_HAVE_D_RECLEN                = 0
  1189  	X_DIRENT_HAVE_D_TYPE                  = 0
  1190  	X_DIRENT_MATCHES_DIRENT64             = 0
  1191  	X_ERRNO_H                             = 1
  1192  	X_FCNTL_H                             = 1
  1193  	X_GETOPT_CORE_H                       = 1
  1194  	X_GETOPT_POSIX_H                      = 1
  1195  	X_LFS64_ASYNCHRONOUS_IO               = 1
  1196  	X_LFS64_LARGEFILE                     = 1
  1197  	X_LFS64_STDIO                         = 1
  1198  	X_LFS_ASYNCHRONOUS_IO                 = 1
  1199  	X_LFS_LARGEFILE                       = 1
  1200  	X_LINUX_LIMITS_H                      = 0
  1201  	X_MKNOD_VER                           = 1
  1202  	X_MKNOD_VER_LINUX                     = 1
  1203  	X_MKNOD_VER_SVR4                      = 2
  1204  	X_POSIX2_CHAR_TERM                    = 200809
  1205  	X_POSIX2_C_BIND                       = 200809
  1206  	X_POSIX2_C_DEV                        = 200809
  1207  	X_POSIX2_C_VERSION                    = 200809
  1208  	X_POSIX2_LOCALEDEF                    = 200809
  1209  	X_POSIX2_SW_DEV                       = 200809
  1210  	X_POSIX2_VERSION                      = 200809
  1211  	X_POSIX_ADVISORY_INFO                 = 200809
  1212  	X_POSIX_AIO_LISTIO_MAX                = 2
  1213  	X_POSIX_AIO_MAX                       = 1
  1214  	X_POSIX_ARG_MAX                       = 4096
  1215  	X_POSIX_ASYNCHRONOUS_IO               = 200809
  1216  	X_POSIX_ASYNC_IO                      = 1
  1217  	X_POSIX_BARRIERS                      = 200809
  1218  	X_POSIX_CHILD_MAX                     = 25
  1219  	X_POSIX_CHOWN_RESTRICTED              = 0
  1220  	X_POSIX_CLOCKRES_MIN                  = 20000000
  1221  	X_POSIX_CLOCK_SELECTION               = 200809
  1222  	X_POSIX_CPUTIME                       = 0
  1223  	X_POSIX_DELAYTIMER_MAX                = 32
  1224  	X_POSIX_FSYNC                         = 200809
  1225  	X_POSIX_HOST_NAME_MAX                 = 255
  1226  	X_POSIX_IPV6                          = 200809
  1227  	X_POSIX_JOB_CONTROL                   = 1
  1228  	X_POSIX_LINK_MAX                      = 8
  1229  	X_POSIX_LOGIN_NAME_MAX                = 9
  1230  	X_POSIX_MAPPED_FILES                  = 200809
  1231  	X_POSIX_MAX_CANON                     = 255
  1232  	X_POSIX_MAX_INPUT                     = 255
  1233  	X_POSIX_MEMLOCK                       = 200809
  1234  	X_POSIX_MEMLOCK_RANGE                 = 200809
  1235  	X_POSIX_MEMORY_PROTECTION             = 200809
  1236  	X_POSIX_MESSAGE_PASSING               = 200809
  1237  	X_POSIX_MONOTONIC_CLOCK               = 0
  1238  	X_POSIX_MQ_OPEN_MAX                   = 8
  1239  	X_POSIX_MQ_PRIO_MAX                   = 32
  1240  	X_POSIX_NAME_MAX                      = 14
  1241  	X_POSIX_NGROUPS_MAX                   = 8
  1242  	X_POSIX_NO_TRUNC                      = 1
  1243  	X_POSIX_OPEN_MAX                      = 20
  1244  	X_POSIX_PATH_MAX                      = 256
  1245  	X_POSIX_PIPE_BUF                      = 512
  1246  	X_POSIX_PRIORITIZED_IO                = 200809
  1247  	X_POSIX_PRIORITY_SCHEDULING           = 200809
  1248  	X_POSIX_RAW_SOCKETS                   = 200809
  1249  	X_POSIX_READER_WRITER_LOCKS           = 200809
  1250  	X_POSIX_REALTIME_SIGNALS              = 200809
  1251  	X_POSIX_REENTRANT_FUNCTIONS           = 1
  1252  	X_POSIX_REGEXP                        = 1
  1253  	X_POSIX_RE_DUP_MAX                    = 255
  1254  	X_POSIX_RTSIG_MAX                     = 8
  1255  	X_POSIX_SAVED_IDS                     = 1
  1256  	X_POSIX_SEMAPHORES                    = 200809
  1257  	X_POSIX_SEM_NSEMS_MAX                 = 256
  1258  	X_POSIX_SEM_VALUE_MAX                 = 32767
  1259  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200809
  1260  	X_POSIX_SHELL                         = 1
  1261  	X_POSIX_SIGQUEUE_MAX                  = 32
  1262  	X_POSIX_SPAWN                         = 200809
  1263  	X_POSIX_SPIN_LOCKS                    = 200809
  1264  	X_POSIX_SPORADIC_SERVER               = -1
  1265  	X_POSIX_SSIZE_MAX                     = 32767
  1266  	X_POSIX_STREAM_MAX                    = 8
  1267  	X_POSIX_SYMLINK_MAX                   = 255
  1268  	X_POSIX_SYMLOOP_MAX                   = 8
  1269  	X_POSIX_SYNCHRONIZED_IO               = 200809
  1270  	X_POSIX_THREADS                       = 200809
  1271  	X_POSIX_THREAD_ATTR_STACKADDR         = 200809
  1272  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200809
  1273  	X_POSIX_THREAD_CPUTIME                = 0
  1274  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS  = 4
  1275  	X_POSIX_THREAD_KEYS_MAX               = 128
  1276  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = 200809
  1277  	X_POSIX_THREAD_PRIO_INHERIT           = 200809
  1278  	X_POSIX_THREAD_PRIO_PROTECT           = 200809
  1279  	X_POSIX_THREAD_PROCESS_SHARED         = 200809
  1280  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT    = 200809
  1281  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT    = -1
  1282  	X_POSIX_THREAD_SAFE_FUNCTIONS         = 200809
  1283  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1284  	X_POSIX_THREAD_THREADS_MAX            = 64
  1285  	X_POSIX_TIMEOUTS                      = 200809
  1286  	X_POSIX_TIMERS                        = 200809
  1287  	X_POSIX_TIMER_MAX                     = 32
  1288  	X_POSIX_TRACE                         = -1
  1289  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1290  	X_POSIX_TRACE_INHERIT                 = -1
  1291  	X_POSIX_TRACE_LOG                     = -1
  1292  	X_POSIX_TTY_NAME_MAX                  = 9
  1293  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1294  	X_POSIX_TZNAME_MAX                    = 6
  1295  	X_POSIX_V6_ILP32_OFF32                = 1
  1296  	X_POSIX_V6_ILP32_OFFBIG               = 1
  1297  	X_POSIX_V7_ILP32_OFF32                = 1
  1298  	X_POSIX_V7_ILP32_OFFBIG               = 1
  1299  	X_POSIX_VDISABLE                      = 0
  1300  	X_POSIX_VERSION                       = 200809
  1301  	X_STATBUF_ST_BLKSIZE                  = 0
  1302  	X_STATBUF_ST_NSEC                     = 0
  1303  	X_STATBUF_ST_RDEV                     = 0
  1304  	X_STAT_VER                            = 3
  1305  	X_STAT_VER_KERNEL                     = 1
  1306  	X_STAT_VER_LINUX                      = 3
  1307  	X_STAT_VER_LINUX_OLD                  = 1
  1308  	X_STAT_VER_SVR4                       = 2
  1309  	X_SYS_STAT_H                          = 1
  1310  	X_SYS_TIME_H                          = 1
  1311  	X_TIME_H                              = 1
  1312  	X_UNISTD_H                            = 1
  1313  	X_UTIME_H                             = 1
  1314  	X_XBS5_ILP32_OFF32                    = 1
  1315  	X_XBS5_ILP32_OFFBIG                   = 1
  1316  	X_XOPEN_ENH_I18N                      = 1
  1317  	X_XOPEN_LEGACY                        = 1
  1318  	X_XOPEN_REALTIME                      = 1
  1319  	X_XOPEN_REALTIME_THREADS              = 1
  1320  	X_XOPEN_SHM                           = 1
  1321  	X_XOPEN_UNIX                          = 1
  1322  	X_XOPEN_VERSION                       = 700
  1323  	X_XOPEN_XCU_VERSION                   = 4
  1324  	X_XOPEN_XPG2                          = 1
  1325  	X_XOPEN_XPG3                          = 1
  1326  	X_XOPEN_XPG4                          = 1
  1327  	FUZZER_HASH                           = 4001
  1328  	FUZZER_MX_COST                        = 1000
  1329  	FUZZER_MX_LENGTH                      = 50
  1330  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1331  	FUZZER_MX_RULEID                      = 2147483647
  1332  	FUZZER_NQUEUE                         = 20
  1333  	CC_AND                                = 24
  1334  	CC_BANG                               = 15
  1335  	CC_COMMA                              = 23
  1336  	CC_DIGIT                              = 3
  1337  	CC_DOLLAR                             = 4
  1338  	CC_DOT                                = 26
  1339  	CC_EQ                                 = 14
  1340  	CC_GT                                 = 13
  1341  	CC_ID                                 = 2
  1342  	CC_ILLEGAL                            = 27
  1343  	CC_KYWD                               = 1
  1344  	CC_LP                                 = 17
  1345  	CC_LT                                 = 12
  1346  	CC_MINUS                              = 11
  1347  	CC_PERCENT                            = 22
  1348  	CC_PIPE                               = 10
  1349  	CC_PLUS                               = 20
  1350  	CC_QUOTE                              = 8
  1351  	CC_QUOTE2                             = 9
  1352  	CC_RP                                 = 18
  1353  	CC_SEMI                               = 19
  1354  	CC_SLASH                              = 16
  1355  	CC_SPACE                              = 7
  1356  	CC_STAR                               = 21
  1357  	CC_TILDA                              = 25
  1358  	CC_VARALPHA                           = 5
  1359  	CC_VARNUM                             = 6
  1360  	CC_X                                  = 0
  1361  	TK_BITAND                             = 3
  1362  	TK_BITNOT                             = 3
  1363  	TK_BITOR                              = 3
  1364  	TK_BLOB                               = 2
  1365  	TK_COMMA                              = 3
  1366  	TK_CONCAT                             = 3
  1367  	TK_DOT                                = 3
  1368  	TK_EQ                                 = 3
  1369  	TK_ERROR                              = 4
  1370  	TK_FLOAT                              = 2
  1371  	TK_GE                                 = 3
  1372  	TK_GT                                 = 3
  1373  	TK_ID                                 = 1
  1374  	TK_ILLEGAL                            = 4
  1375  	TK_INTEGER                            = 2
  1376  	TK_LE                                 = 3
  1377  	TK_LITERAL                            = 2
  1378  	TK_LP                                 = 3
  1379  	TK_LSHIFT                             = 3
  1380  	TK_LT                                 = 3
  1381  	TK_MINUS                              = 3
  1382  	TK_NAME                               = 1
  1383  	TK_NE                                 = 3
  1384  	TK_PLUS                               = 3
  1385  	TK_PUNCT                              = 3
  1386  	TK_REM                                = 3
  1387  	TK_RP                                 = 3
  1388  	TK_RSHIFT                             = 3
  1389  	TK_SEMI                               = 3
  1390  	TK_SLASH                              = 3
  1391  	TK_SPACE                              = 0
  1392  	TK_STAR                               = 3
  1393  	TK_STRING                             = 2
  1394  	TK_VARIABLE                           = 2
  1395  	Deliberate_fall_through               = 0
  1396  	QPVTAB_A                              = 6
  1397  	QPVTAB_B                              = 7
  1398  	QPVTAB_C                              = 8
  1399  	QPVTAB_CN                             = 2
  1400  	QPVTAB_D                              = 9
  1401  	QPVTAB_E                              = 10
  1402  	QPVTAB_FLAGS                          = 11
  1403  	QPVTAB_IX                             = 1
  1404  	QPVTAB_NONE                           = 12
  1405  	QPVTAB_OP                             = 3
  1406  	QPVTAB_RHS                            = 5
  1407  	QPVTAB_UX                             = 4
  1408  	QPVTAB_VN                             = 0
  1409  	RE_EOF                                = 0
  1410  	RE_OP_ACCEPT                          = 6
  1411  	RE_OP_ANY                             = 2
  1412  	RE_OP_ANYSTAR                         = 3
  1413  	RE_OP_BOUNDARY                        = 17
  1414  	RE_OP_CC_EXC                          = 8
  1415  	RE_OP_CC_INC                          = 7
  1416  	RE_OP_CC_RANGE                        = 10
  1417  	RE_OP_CC_VALUE                        = 9
  1418  	RE_OP_DIGIT                           = 13
  1419  	RE_OP_FORK                            = 4
  1420  	RE_OP_GOTO                            = 5
  1421  	RE_OP_MATCH                           = 1
  1422  	RE_OP_NOTDIGIT                        = 14
  1423  	RE_OP_NOTSPACE                        = 16
  1424  	RE_OP_NOTWORD                         = 12
  1425  	RE_OP_SPACE                           = 15
  1426  	RE_OP_WORD                            = 11
  1427  	SERIES_COLUMN_START                   = 1
  1428  	SERIES_COLUMN_STEP                    = 3
  1429  	SERIES_COLUMN_STOP                    = 2
  1430  	SERIES_COLUMN_VALUE                   = 0
  1431  	CCLASS_B                              = 2
  1432  	CCLASS_C                              = 3
  1433  	CCLASS_D                              = 4
  1434  	CCLASS_DIGIT                          = 10
  1435  	CCLASS_H                              = 5
  1436  	CCLASS_L                              = 6
  1437  	CCLASS_M                              = 8
  1438  	CCLASS_OTHER                          = 12
  1439  	CCLASS_R                              = 7
  1440  	CCLASS_SILENT                         = 0
  1441  	CCLASS_SPACE                          = 11
  1442  	CCLASS_VOWEL                          = 1
  1443  	CCLASS_Y                              = 9
  1444  	FINAL_INS_COST_DIV                    = 4
  1445  	SCRIPT_ARABIC                         = 0x0010
  1446  	SCRIPT_CYRILLIC                       = 0x0002
  1447  	SCRIPT_GREEK                          = 0x0004
  1448  	SCRIPT_HEBREW                         = 0x0008
  1449  	SCRIPT_LATIN                          = 0x0001
  1450  	SPELLFIX_COL_COMMAND                  = 11
  1451  	SPELLFIX_COL_DISTANCE                 = 2
  1452  	SPELLFIX_COL_LANGID                   = 3
  1453  	SPELLFIX_COL_MATCHLEN                 = 5
  1454  	SPELLFIX_COL_PHONEHASH                = 6
  1455  	SPELLFIX_COL_RANK                     = 1
  1456  	SPELLFIX_COL_SCOPE                    = 8
  1457  	SPELLFIX_COL_SCORE                    = 4
  1458  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1459  	SPELLFIX_COL_SRCHCNT                  = 9
  1460  	SPELLFIX_COL_TOP                      = 7
  1461  	SPELLFIX_COL_WORD                     = 0
  1462  	SPELLFIX_IDXNUM_DIST                  = 48
  1463  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1464  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1465  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1466  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1467  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1468  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1469  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1470  	SPELLFIX_MX_HASH                      = 32
  1471  	SPELLFIX_MX_RUN                       = 1
  1472  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1473  	TOTYPE_BIGENDIAN                      = 0
  1474  	TOTYPE_LITTLEENDIAN                   = 1
  1475  	SWARMVTAB_MAX_OPEN                    = 9
  1476  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1477  	SQLITE_RBU_STATE_DONE                 = 4
  1478  	SQLITE_RBU_STATE_ERROR                = 5
  1479  	SQLITE_RBU_STATE_MOVE                 = 2
  1480  	SQLITE_RBU_STATE_OAL                  = 1
  1481  	X_SQLITE3RBU_H                        = 0
  1482  	BTREE_APPEND                          = 0x08
  1483  	BTREE_APPLICATION_ID                  = 8
  1484  	BTREE_AUTOVACUUM_FULL                 = 1
  1485  	BTREE_AUTOVACUUM_INCR                 = 2
  1486  	BTREE_AUTOVACUUM_NONE                 = 0
  1487  	BTREE_AUXDELETE                       = 0x04
  1488  	BTREE_BLOBKEY                         = 2
  1489  	BTREE_BULKLOAD                        = 0x00000001
  1490  	BTREE_DATA_VERSION                    = 15
  1491  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1492  	BTREE_FILE_FORMAT                     = 2
  1493  	BTREE_FORDELETE                       = 0x00000008
  1494  	BTREE_FREE_PAGE_COUNT                 = 0
  1495  	BTREE_HINT_RANGE                      = 0
  1496  	BTREE_INCR_VACUUM                     = 7
  1497  	BTREE_INTKEY                          = 1
  1498  	BTREE_LARGEST_ROOT_PAGE               = 4
  1499  	BTREE_MEMORY                          = 2
  1500  	BTREE_OMIT_JOURNAL                    = 1
  1501  	BTREE_PREFORMAT                       = 0x80
  1502  	BTREE_SAVEPOSITION                    = 0x02
  1503  	BTREE_SCHEMA_VERSION                  = 1
  1504  	BTREE_SEEK_EQ                         = 0x00000002
  1505  	BTREE_SINGLE                          = 4
  1506  	BTREE_TEXT_ENCODING                   = 5
  1507  	BTREE_UNORDERED                       = 8
  1508  	BTREE_USER_VERSION                    = 6
  1509  	BTREE_WRCSR                           = 0x00000004
  1510  	COLFLAG_BUSY                          = 0x0100
  1511  	COLFLAG_GENERATED                     = 0x0060
  1512  	COLFLAG_HASCOLL                       = 0x0200
  1513  	COLFLAG_HASTYPE                       = 0x0004
  1514  	COLFLAG_HIDDEN                        = 0x0002
  1515  	COLFLAG_NOEXPAND                      = 0x0400
  1516  	COLFLAG_NOINSERT                      = 0x0062
  1517  	COLFLAG_NOTAVAIL                      = 0x0080
  1518  	COLFLAG_PRIMKEY                       = 0x0001
  1519  	COLFLAG_SORTERREF                     = 0x0010
  1520  	COLFLAG_STORED                        = 0x0040
  1521  	COLFLAG_UNIQUE                        = 0x0008
  1522  	COLFLAG_VIRTUAL                       = 0x0020
  1523  	COLNAME_COLUMN                        = 4
  1524  	COLNAME_DATABASE                      = 2
  1525  	COLNAME_DECLTYPE                      = 1
  1526  	COLNAME_N                             = 5
  1527  	COLNAME_NAME                          = 0
  1528  	COLNAME_TABLE                         = 3
  1529  	COLTYPE_ANY                           = 1
  1530  	COLTYPE_BLOB                          = 2
  1531  	COLTYPE_CUSTOM                        = 0
  1532  	COLTYPE_INT                           = 3
  1533  	COLTYPE_INTEGER                       = 4
  1534  	COLTYPE_REAL                          = 5
  1535  	COLTYPE_TEXT                          = 6
  1536  	DBFLAG_EncodingFixed                  = 0x0040
  1537  	DBFLAG_InternalFunc                   = 0x0020
  1538  	DBFLAG_PreferBuiltin                  = 0x0002
  1539  	DBFLAG_SchemaChange                   = 0x0001
  1540  	DBFLAG_SchemaKnownOk                  = 0x0010
  1541  	DBFLAG_Vacuum                         = 0x0004
  1542  	DBFLAG_VacuumInto                     = 0x0008
  1543  	DB_ResetWanted                        = 0x0008
  1544  	DB_SchemaLoaded                       = 0x0001
  1545  	DB_UnresetViews                       = 0x0002
  1546  	ENAME_NAME                            = 0
  1547  	ENAME_SPAN                            = 1
  1548  	ENAME_TAB                             = 2
  1549  	EP_Agg                                = 0x000010
  1550  	EP_CanBeNull                          = 0x200000
  1551  	EP_Collate                            = 0x000200
  1552  	EP_Commuted                           = 0x000400
  1553  	EP_ConstFunc                          = 0x100000
  1554  	EP_DblQuoted                          = 0x000080
  1555  	EP_Distinct                           = 0x000004
  1556  	EP_FixedCol                           = 0x000020
  1557  	EP_FromDDL                            = 0x40000000
  1558  	EP_HasFunc                            = 0x000008
  1559  	EP_IfNullRow                          = 0x040000
  1560  	EP_Immutable                          = 0x02
  1561  	EP_InfixFunc                          = 0x000100
  1562  	EP_InnerON                            = 0x000002
  1563  	EP_IntValue                           = 0x000800
  1564  	EP_IsFalse                            = 0x20000000
  1565  	EP_IsTrue                             = 0x10000000
  1566  	EP_Leaf                               = 0x800000
  1567  	EP_MemToken                           = 0x020000
  1568  	EP_NoReduce                           = 0x01
  1569  	EP_OuterON                            = 0x000001
  1570  	EP_Propagate                          = 4194824
  1571  	EP_Quoted                             = 0x4000000
  1572  	EP_Reduced                            = 0x004000
  1573  	EP_Skip                               = 0x002000
  1574  	EP_Static                             = 0x8000000
  1575  	EP_Subquery                           = 0x400000
  1576  	EP_Subrtn                             = 0x2000000
  1577  	EP_TokenOnly                          = 0x010000
  1578  	EP_Unlikely                           = 0x080000
  1579  	EP_VarSelect                          = 0x000040
  1580  	EP_Win                                = 0x008000
  1581  	EP_WinFunc                            = 0x1000000
  1582  	EP_xIsSelect                          = 0x001000
  1583  	EU4_EXPR                              = 2
  1584  	EU4_IDX                               = 1
  1585  	EU4_NONE                              = 0
  1586  	EXCLUSIVE_LOCK                        = 4
  1587  	EXPRDUP_REDUCE                        = 0x0001
  1588  	GCC_VERSION                           = 10002001
  1589  	HAVE_DLFCN_H                          = 1
  1590  	HAVE_FCHOWN                           = 1
  1591  	HAVE_FDATASYNC                        = 1
  1592  	HAVE_GMTIME_R                         = 1
  1593  	HAVE_INT16_T                          = 1
  1594  	HAVE_INT32_T                          = 1
  1595  	HAVE_INT64_T                          = 1
  1596  	HAVE_INT8_T                           = 1
  1597  	HAVE_INTPTR_T                         = 1
  1598  	HAVE_INTTYPES_H                       = 1
  1599  	HAVE_ISNAN                            = 1
  1600  	HAVE_LOCALTIME_R                      = 1
  1601  	HAVE_LSTAT                            = 1
  1602  	HAVE_MALLOC_H                         = 1
  1603  	HAVE_MALLOC_USABLE_SIZE               = 1
  1604  	HAVE_MEMORY_H                         = 1
  1605  	HAVE_PREAD                            = 1
  1606  	HAVE_PREAD64                          = 1
  1607  	HAVE_PWRITE                           = 1
  1608  	HAVE_PWRITE64                         = 1
  1609  	HAVE_READLINK                         = 1
  1610  	HAVE_STDINT_H                         = 1
  1611  	HAVE_STDLIB_H                         = 1
  1612  	HAVE_STRCHRNUL                        = 1
  1613  	HAVE_STRINGS_H                        = 1
  1614  	HAVE_STRING_H                         = 1
  1615  	HAVE_SYS_STAT_H                       = 1
  1616  	HAVE_SYS_TYPES_H                      = 1
  1617  	HAVE_UINT16_T                         = 1
  1618  	HAVE_UINT32_T                         = 1
  1619  	HAVE_UINT64_T                         = 1
  1620  	HAVE_UINT8_T                          = 1
  1621  	HAVE_UINTPTR_T                        = 1
  1622  	HAVE_UNISTD_H                         = 1
  1623  	HAVE_UTIME                            = 1
  1624  	INITFLAG_AlterAdd                     = 0x0003
  1625  	INITFLAG_AlterDrop                    = 0x0002
  1626  	INITFLAG_AlterMask                    = 0x0003
  1627  	INITFLAG_AlterRename                  = 0x0001
  1628  	INLINEFUNC_affinity                   = 4
  1629  	INLINEFUNC_coalesce                   = 0
  1630  	INLINEFUNC_expr_compare               = 3
  1631  	INLINEFUNC_expr_implies_expr          = 2
  1632  	INLINEFUNC_iif                        = 5
  1633  	INLINEFUNC_implies_nonnull_row        = 1
  1634  	INLINEFUNC_sqlite_offset              = 6
  1635  	INLINEFUNC_unlikely                   = 99
  1636  	INT16_MAX                             = 32767
  1637  	INT16_MIN                             = -32768
  1638  	INT32_MAX                             = 2147483647
  1639  	INT32_MIN                             = -2147483648
  1640  	INT64_MAX                             = 9223372036854775807
  1641  	INT64_MIN                             = -9223372036854775808
  1642  	INT8_MAX                              = 127
  1643  	INT8_MIN                              = -128
  1644  	INTMAX_MAX                            = 9223372036854775807
  1645  	INTMAX_MIN                            = -9223372036854775808
  1646  	INTPTR_MAX                            = 2147483647
  1647  	INTPTR_MIN                            = -2147483648
  1648  	INT_FAST16_MAX                        = 2147483647
  1649  	INT_FAST16_MIN                        = -2147483648
  1650  	INT_FAST32_MAX                        = 2147483647
  1651  	INT_FAST32_MIN                        = -2147483648
  1652  	INT_FAST64_MAX                        = 9223372036854775807
  1653  	INT_FAST64_MIN                        = -9223372036854775808
  1654  	INT_FAST8_MAX                         = 127
  1655  	INT_FAST8_MIN                         = -128
  1656  	INT_LEAST16_MAX                       = 32767
  1657  	INT_LEAST16_MIN                       = -32768
  1658  	INT_LEAST32_MAX                       = 2147483647
  1659  	INT_LEAST32_MIN                       = -2147483648
  1660  	INT_LEAST64_MAX                       = 9223372036854775807
  1661  	INT_LEAST64_MIN                       = -9223372036854775808
  1662  	INT_LEAST8_MAX                        = 127
  1663  	INT_LEAST8_MIN                        = -128
  1664  	IN_INDEX_EPH                          = 2
  1665  	IN_INDEX_INDEX_ASC                    = 3
  1666  	IN_INDEX_INDEX_DESC                   = 4
  1667  	IN_INDEX_LOOP                         = 0x0004
  1668  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1669  	IN_INDEX_NOOP                         = 5
  1670  	IN_INDEX_NOOP_OK                      = 0x0001
  1671  	IN_INDEX_ROWID                        = 1
  1672  	JT_CROSS                              = 0x02
  1673  	JT_ERROR                              = 0x80
  1674  	JT_INNER                              = 0x01
  1675  	JT_LEFT                               = 0x08
  1676  	JT_LTORJ                              = 0x40
  1677  	JT_NATURAL                            = 0x04
  1678  	JT_OUTER                              = 0x20
  1679  	JT_RIGHT                              = 0x10
  1680  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1681  	KEYINFO_ORDER_DESC                    = 0x01
  1682  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1683  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1684  	LOCATE_NOERR                          = 0x02
  1685  	LOCATE_VIEW                           = 0x01
  1686  	LOOKASIDE_SMALL                       = 128
  1687  	LT_OBJDIR                             = ".libs/"
  1688  	M10d_Any                              = 1
  1689  	M10d_No                               = 2
  1690  	M10d_Yes                              = 0
  1691  	MEMTYPE_HEAP                          = 0x01
  1692  	MEMTYPE_LOOKASIDE                     = 0x02
  1693  	MEMTYPE_PCACHE                        = 0x04
  1694  	MSVC_VERSION                          = 0
  1695  	NC_AllowAgg                           = 0x000001
  1696  	NC_AllowWin                           = 0x004000
  1697  	NC_Complex                            = 0x002000
  1698  	NC_FromDDL                            = 0x040000
  1699  	NC_GenCol                             = 0x000008
  1700  	NC_HasAgg                             = 0x000010
  1701  	NC_HasWin                             = 0x008000
  1702  	NC_IdxExpr                            = 0x000020
  1703  	NC_InAggFunc                          = 0x020000
  1704  	NC_IsCheck                            = 0x000004
  1705  	NC_IsDDL                              = 0x010000
  1706  	NC_MinMaxAgg                          = 0x001000
  1707  	NC_NoSelect                           = 0x080000
  1708  	NC_OrderAgg                           = 0x8000000
  1709  	NC_PartIdx                            = 0x000002
  1710  	NC_SelfRef                            = 0x00002e
  1711  	NC_UAggInfo                           = 0x000100
  1712  	NC_UBaseReg                           = 0x000400
  1713  	NC_UEList                             = 0x000080
  1714  	NC_UUpsert                            = 0x000200
  1715  	NC_VarSelect                          = 0x000040
  1716  	NO_LOCK                               = 0
  1717  	OE_Abort                              = 2
  1718  	OE_Cascade                            = 10
  1719  	OE_Default                            = 11
  1720  	OE_Fail                               = 3
  1721  	OE_Ignore                             = 4
  1722  	OE_None                               = 0
  1723  	OE_Replace                            = 5
  1724  	OE_Restrict                           = 7
  1725  	OE_Rollback                           = 1
  1726  	OE_SetDflt                            = 9
  1727  	OE_SetNull                            = 8
  1728  	OE_Update                             = 6
  1729  	OMIT_TEMPDB                           = 0
  1730  	ONEPASS_MULTI                         = 2
  1731  	ONEPASS_OFF                           = 0
  1732  	ONEPASS_SINGLE                        = 1
  1733  	OPFLAG_APPEND                         = 0x08
  1734  	OPFLAG_AUXDELETE                      = 0x04
  1735  	OPFLAG_BULKCSR                        = 0x01
  1736  	OPFLAG_EPHEM                          = 0x01
  1737  	OPFLAG_FORDELETE                      = 0x08
  1738  	OPFLAG_ISNOOP                         = 0x40
  1739  	OPFLAG_ISUPDATE                       = 0x04
  1740  	OPFLAG_LASTROWID                      = 0x20
  1741  	OPFLAG_LENGTHARG                      = 0x40
  1742  	OPFLAG_NCHANGE                        = 0x01
  1743  	OPFLAG_NOCHNG                         = 0x01
  1744  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1745  	OPFLAG_P2ISREG                        = 0x10
  1746  	OPFLAG_PERMUTE                        = 0x01
  1747  	OPFLAG_PREFORMAT                      = 0x80
  1748  	OPFLAG_SAVEPOSITION                   = 0x02
  1749  	OPFLAG_SEEKEQ                         = 0x02
  1750  	OPFLAG_TYPEOFARG                      = 0x80
  1751  	OPFLAG_USESEEKRESULT                  = 0x10
  1752  	OPFLG_IN1                             = 0x02
  1753  	OPFLG_IN2                             = 0x04
  1754  	OPFLG_IN3                             = 0x08
  1755  	OPFLG_JUMP                            = 0x01
  1756  	OPFLG_OUT2                            = 0x10
  1757  	OPFLG_OUT3                            = 0x20
  1758  	OP_Abortable                          = 186
  1759  	OP_Add                                = 106
  1760  	OP_AddImm                             = 86
  1761  	OP_Affinity                           = 96
  1762  	OP_AggFinal                           = 165
  1763  	OP_AggInverse                         = 161
  1764  	OP_AggStep                            = 162
  1765  	OP_AggStep1                           = 163
  1766  	OP_AggValue                           = 164
  1767  	OP_And                                = 44
  1768  	OP_AutoCommit                         = 1
  1769  	OP_BeginSubrtn                        = 74
  1770  	OP_BitAnd                             = 102
  1771  	OP_BitNot                             = 114
  1772  	OP_BitOr                              = 103
  1773  	OP_Blob                               = 77
  1774  	OP_Cast                               = 88
  1775  	OP_Checkpoint                         = 3
  1776  	OP_Clear                              = 145
  1777  	OP_Close                              = 122
  1778  	OP_ClrSubtype                         = 179
  1779  	OP_CollSeq                            = 85
  1780  	OP_Column                             = 94
  1781  	OP_ColumnsUsed                        = 123
  1782  	OP_Compare                            = 90
  1783  	OP_Concat                             = 111
  1784  	OP_Copy                               = 80
  1785  	OP_Count                              = 98
  1786  	OP_CreateBtree                        = 147
  1787  	OP_CursorHint                         = 182
  1788  	OP_CursorLock                         = 167
  1789  	OP_CursorUnlock                       = 168
  1790  	OP_DecrJumpZero                       = 60
  1791  	OP_DeferredSeek                       = 141
  1792  	OP_Delete                             = 130
  1793  	OP_Destroy                            = 144
  1794  	OP_Divide                             = 109
  1795  	OP_DropIndex                          = 152
  1796  	OP_DropTable                          = 151
  1797  	OP_DropTrigger                        = 154
  1798  	OP_ElseEq                             = 58
  1799  	OP_EndCoroutine                       = 68
  1800  	OP_Eq                                 = 53
  1801  	OP_Expire                             = 166
  1802  	OP_Explain                            = 185
  1803  	OP_Filter                             = 63
  1804  	OP_FilterAdd                          = 180
  1805  	OP_FinishSeek                         = 143
  1806  	OP_FkCheck                            = 83
  1807  	OP_FkCounter                          = 158
  1808  	OP_FkIfZero                           = 48
  1809  	OP_Found                              = 28
  1810  	OP_Function                           = 66
  1811  	OP_Ge                                 = 57
  1812  	OP_Gosub                              = 9
  1813  	OP_Goto                               = 8
  1814  	OP_Gt                                 = 54
  1815  	OP_Halt                               = 70
  1816  	OP_HaltIfNull                         = 69
  1817  	OP_IdxDelete                          = 140
  1818  	OP_IdxGE                              = 42
  1819  	OP_IdxGT                              = 40
  1820  	OP_IdxInsert                          = 138
  1821  	OP_IdxLE                              = 39
  1822  	OP_IdxLT                              = 41
  1823  	OP_IdxRowid                           = 142
  1824  	OP_If                                 = 15
  1825  	OP_IfNoHope                           = 25
  1826  	OP_IfNot                              = 16
  1827  	OP_IfNotOpen                          = 24
  1828  	OP_IfNotZero                          = 59
  1829  	OP_IfNullRow                          = 18
  1830  	OP_IfPos                              = 49
  1831  	OP_IfSmaller                          = 32
  1832  	OP_IncrVacuum                         = 61
  1833  	OP_Init                               = 64
  1834  	OP_InitCoroutine                      = 10
  1835  	OP_Insert                             = 128
  1836  	OP_Int64                              = 72
  1837  	OP_IntCopy                            = 82
  1838  	OP_Integer                            = 71
  1839  	OP_IntegrityCk                        = 155
  1840  	OP_IsNull                             = 50
  1841  	OP_IsNullOrType                       = 17
  1842  	OP_IsTrue                             = 91
  1843  	OP_JournalMode                        = 4
  1844  	OP_Jump                               = 13
  1845  	OP_Last                               = 31
  1846  	OP_Le                                 = 55
  1847  	OP_LoadAnalysis                       = 150
  1848  	OP_Lt                                 = 56
  1849  	OP_MakeRecord                         = 97
  1850  	OP_MaxPgcnt                           = 178
  1851  	OP_MemMax                             = 159
  1852  	OP_Move                               = 79
  1853  	OP_Multiply                           = 108
  1854  	OP_MustBeInt                          = 12
  1855  	OP_Ne                                 = 52
  1856  	OP_NewRowid                           = 127
  1857  	OP_Next                               = 38
  1858  	OP_NoConflict                         = 26
  1859  	OP_Noop                               = 184
  1860  	OP_Not                                = 19
  1861  	OP_NotExists                          = 30
  1862  	OP_NotFound                           = 27
  1863  	OP_NotNull                            = 51
  1864  	OP_Null                               = 75
  1865  	OP_NullRow                            = 136
  1866  	OP_Offset                             = 93
  1867  	OP_OffsetLimit                        = 160
  1868  	OP_Once                               = 14
  1869  	OP_OpenAutoindex                      = 116
  1870  	OP_OpenDup                            = 115
  1871  	OP_OpenEphemeral                      = 118
  1872  	OP_OpenPseudo                         = 121
  1873  	OP_OpenRead                           = 112
  1874  	OP_OpenWrite                          = 113
  1875  	OP_Or                                 = 43
  1876  	OP_Pagecount                          = 177
  1877  	OP_Param                              = 157
  1878  	OP_ParseSchema                        = 149
  1879  	OP_Permutation                        = 89
  1880  	OP_Prev                               = 37
  1881  	OP_Program                            = 47
  1882  	OP_PureFunc                           = 65
  1883  	OP_ReadCookie                         = 99
  1884  	OP_Real                               = 153
  1885  	OP_RealAffinity                       = 87
  1886  	OP_ReleaseReg                         = 183
  1887  	OP_Remainder                          = 110
  1888  	OP_ReopenIdx                          = 101
  1889  	OP_ResetCount                         = 131
  1890  	OP_ResetSorter                        = 146
  1891  	OP_ResultRow                          = 84
  1892  	OP_Return                             = 67
  1893  	OP_Rewind                             = 35
  1894  	OP_RowCell                            = 129
  1895  	OP_RowData                            = 134
  1896  	OP_RowSetAdd                          = 156
  1897  	OP_RowSetRead                         = 45
  1898  	OP_RowSetTest                         = 46
  1899  	OP_Rowid                              = 135
  1900  	OP_SCopy                              = 81
  1901  	OP_Savepoint                          = 0
  1902  	OP_SeekEnd                            = 137
  1903  	OP_SeekGE                             = 22
  1904  	OP_SeekGT                             = 23
  1905  	OP_SeekHit                            = 125
  1906  	OP_SeekLE                             = 21
  1907  	OP_SeekLT                             = 20
  1908  	OP_SeekRowid                          = 29
  1909  	OP_SeekScan                           = 124
  1910  	OP_Sequence                           = 126
  1911  	OP_SequenceTest                       = 120
  1912  	OP_SetCookie                          = 100
  1913  	OP_ShiftLeft                          = 104
  1914  	OP_ShiftRight                         = 105
  1915  	OP_SoftNull                           = 76
  1916  	OP_Sort                               = 34
  1917  	OP_SorterCompare                      = 132
  1918  	OP_SorterData                         = 133
  1919  	OP_SorterInsert                       = 139
  1920  	OP_SorterNext                         = 36
  1921  	OP_SorterOpen                         = 119
  1922  	OP_SorterSort                         = 33
  1923  	OP_SqlExec                            = 148
  1924  	OP_String                             = 73
  1925  	OP_String8                            = 117
  1926  	OP_Subtract                           = 107
  1927  	OP_TableLock                          = 169
  1928  	OP_Trace                              = 181
  1929  	OP_Transaction                        = 2
  1930  	OP_TypeCheck                          = 95
  1931  	OP_VBegin                             = 170
  1932  	OP_VColumn                            = 175
  1933  	OP_VCreate                            = 171
  1934  	OP_VDestroy                           = 172
  1935  	OP_VFilter                            = 6
  1936  	OP_VInitIn                            = 174
  1937  	OP_VNext                              = 62
  1938  	OP_VOpen                              = 173
  1939  	OP_VRename                            = 176
  1940  	OP_VUpdate                            = 7
  1941  	OP_Vacuum                             = 5
  1942  	OP_Variable                           = 78
  1943  	OP_Yield                              = 11
  1944  	OP_ZeroOrNull                         = 92
  1945  	OS_VXWORKS                            = 0
  1946  	P4_COLLSEQ                            = -2
  1947  	P4_DYNAMIC                            = -6
  1948  	P4_EXPR                               = -9
  1949  	P4_FREE_IF_LE                         = -6
  1950  	P4_FUNCCTX                            = -15
  1951  	P4_FUNCDEF                            = -7
  1952  	P4_INT32                              = -3
  1953  	P4_INT64                              = -13
  1954  	P4_INTARRAY                           = -14
  1955  	P4_KEYINFO                            = -8
  1956  	P4_MEM                                = -10
  1957  	P4_NOTUSED                            = 0
  1958  	P4_REAL                               = -12
  1959  	P4_STATIC                             = -1
  1960  	P4_SUBPROGRAM                         = -4
  1961  	P4_TABLE                              = -5
  1962  	P4_TRANSIENT                          = 0
  1963  	P4_VTAB                               = -11
  1964  	P5_ConstraintCheck                    = 3
  1965  	P5_ConstraintFK                       = 4
  1966  	P5_ConstraintNotNull                  = 1
  1967  	P5_ConstraintUnique                   = 2
  1968  	PACKAGE_BUGREPORT                     = ""
  1969  	PACKAGE_NAME                          = "sqlite"
  1970  	PACKAGE_STRING                        = "sqlite 3.39.3"
  1971  	PACKAGE_TARNAME                       = "sqlite"
  1972  	PACKAGE_VERSION                       = "3.39.3"
  1973  	PAGER_CACHESPILL                      = 0x20
  1974  	PAGER_CKPT_FULLFSYNC                  = 0x10
  1975  	PAGER_FLAGS_MASK                      = 0x38
  1976  	PAGER_FULLFSYNC                       = 0x08
  1977  	PAGER_GET_NOCONTENT                   = 0x01
  1978  	PAGER_GET_READONLY                    = 0x02
  1979  	PAGER_JOURNALMODE_DELETE              = 0
  1980  	PAGER_JOURNALMODE_MEMORY              = 4
  1981  	PAGER_JOURNALMODE_OFF                 = 2
  1982  	PAGER_JOURNALMODE_PERSIST             = 1
  1983  	PAGER_JOURNALMODE_QUERY               = -1
  1984  	PAGER_JOURNALMODE_TRUNCATE            = 3
  1985  	PAGER_JOURNALMODE_WAL                 = 5
  1986  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  1987  	PAGER_LOCKINGMODE_NORMAL              = 0
  1988  	PAGER_LOCKINGMODE_QUERY               = -1
  1989  	PAGER_MEMORY                          = 0x0002
  1990  	PAGER_OMIT_JOURNAL                    = 0x0001
  1991  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  1992  	PAGER_SYNCHRONOUS_FULL                = 0x03
  1993  	PAGER_SYNCHRONOUS_MASK                = 0x07
  1994  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  1995  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  1996  	PARSE_MODE_DECLARE_VTAB               = 1
  1997  	PARSE_MODE_NORMAL                     = 0
  1998  	PARSE_MODE_RENAME                     = 2
  1999  	PARSE_MODE_UNMAP                      = 3
  2000  	PENDING_LOCK                          = 3
  2001  	PGHDR_CLEAN                           = 0x001
  2002  	PGHDR_DIRTY                           = 0x002
  2003  	PGHDR_DONT_WRITE                      = 0x010
  2004  	PGHDR_MMAP                            = 0x020
  2005  	PGHDR_NEED_SYNC                       = 0x008
  2006  	PGHDR_WAL_APPEND                      = 0x040
  2007  	PGHDR_WRITEABLE                       = 0x004
  2008  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2009  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2010  	PRIX16                                = "X"
  2011  	PRIX32                                = "X"
  2012  	PRIX8                                 = "X"
  2013  	PRIXFAST8                             = "X"
  2014  	PRIXLEAST16                           = "X"
  2015  	PRIXLEAST32                           = "X"
  2016  	PRIXLEAST8                            = "X"
  2017  	PRId16                                = "d"
  2018  	PRId32                                = "d"
  2019  	PRId8                                 = "d"
  2020  	PRIdFAST8                             = "d"
  2021  	PRIdLEAST16                           = "d"
  2022  	PRIdLEAST32                           = "d"
  2023  	PRIdLEAST8                            = "d"
  2024  	PRIi16                                = "i"
  2025  	PRIi32                                = "i"
  2026  	PRIi8                                 = "i"
  2027  	PRIiFAST8                             = "i"
  2028  	PRIiLEAST16                           = "i"
  2029  	PRIiLEAST32                           = "i"
  2030  	PRIiLEAST8                            = "i"
  2031  	PRIo16                                = "o"
  2032  	PRIo32                                = "o"
  2033  	PRIo8                                 = "o"
  2034  	PRIoFAST8                             = "o"
  2035  	PRIoLEAST16                           = "o"
  2036  	PRIoLEAST32                           = "o"
  2037  	PRIoLEAST8                            = "o"
  2038  	PRIu16                                = "u"
  2039  	PRIu32                                = "u"
  2040  	PRIu8                                 = "u"
  2041  	PRIuFAST8                             = "u"
  2042  	PRIuLEAST16                           = "u"
  2043  	PRIuLEAST32                           = "u"
  2044  	PRIuLEAST8                            = "u"
  2045  	PRIx16                                = "x"
  2046  	PRIx32                                = "x"
  2047  	PRIx8                                 = "x"
  2048  	PRIxFAST8                             = "x"
  2049  	PRIxLEAST16                           = "x"
  2050  	PRIxLEAST32                           = "x"
  2051  	PRIxLEAST8                            = "x"
  2052  	PTRDIFF_MAX                           = 2147483647
  2053  	PTRDIFF_MIN                           = -2147483648
  2054  	RESERVED_LOCK                         = 2
  2055  	SAVEPOINT_BEGIN                       = 0
  2056  	SAVEPOINT_RELEASE                     = 1
  2057  	SAVEPOINT_ROLLBACK                    = 2
  2058  	SCHEMA_ROOT                           = 1
  2059  	SCNd16                                = "hd"
  2060  	SCNd32                                = "d"
  2061  	SCNd8                                 = "hhd"
  2062  	SCNdFAST8                             = "hhd"
  2063  	SCNdLEAST16                           = "hd"
  2064  	SCNdLEAST32                           = "d"
  2065  	SCNdLEAST8                            = "hhd"
  2066  	SCNi16                                = "hi"
  2067  	SCNi32                                = "i"
  2068  	SCNi8                                 = "hhi"
  2069  	SCNiFAST8                             = "hhi"
  2070  	SCNiLEAST16                           = "hi"
  2071  	SCNiLEAST32                           = "i"
  2072  	SCNiLEAST8                            = "hhi"
  2073  	SCNo16                                = "ho"
  2074  	SCNo32                                = "o"
  2075  	SCNo8                                 = "hho"
  2076  	SCNoFAST8                             = "hho"
  2077  	SCNoLEAST16                           = "ho"
  2078  	SCNoLEAST32                           = "o"
  2079  	SCNoLEAST8                            = "hho"
  2080  	SCNu16                                = "hu"
  2081  	SCNu32                                = "u"
  2082  	SCNu8                                 = "hhu"
  2083  	SCNuFAST8                             = "hhu"
  2084  	SCNuLEAST16                           = "hu"
  2085  	SCNuLEAST32                           = "u"
  2086  	SCNuLEAST8                            = "hhu"
  2087  	SCNx16                                = "hx"
  2088  	SCNx32                                = "x"
  2089  	SCNx8                                 = "hhx"
  2090  	SCNxFAST8                             = "hhx"
  2091  	SCNxLEAST16                           = "hx"
  2092  	SCNxLEAST32                           = "x"
  2093  	SCNxLEAST8                            = "hhx"
  2094  	SF_Aggregate                          = 0x0000008
  2095  	SF_All                                = 0x0000002
  2096  	SF_ComplexResult                      = 0x0040000
  2097  	SF_Compound                           = 0x0000100
  2098  	SF_Converted                          = 0x0010000
  2099  	SF_CopyCte                            = 0x4000000
  2100  	SF_Distinct                           = 0x0000001
  2101  	SF_Expanded                           = 0x0000040
  2102  	SF_FixedLimit                         = 0x0004000
  2103  	SF_HasAgg                             = 0x0000010
  2104  	SF_HasTypeInfo                        = 0x0000080
  2105  	SF_IncludeHidden                      = 0x0020000
  2106  	SF_MaybeConvert                       = 0x0008000
  2107  	SF_MinMaxAgg                          = 0x0001000
  2108  	SF_MultiPart                          = 0x2000000
  2109  	SF_MultiValue                         = 0x0000400
  2110  	SF_NestedFrom                         = 0x0000800
  2111  	SF_NoopOrderBy                        = 0x0400000
  2112  	SF_OrderByReqd                        = 0x8000000
  2113  	SF_PushDown                           = 0x1000000
  2114  	SF_Recursive                          = 0x0002000
  2115  	SF_Resolved                           = 0x0000004
  2116  	SF_UFSrcCheck                         = 0x0800000
  2117  	SF_UsesEphemeral                      = 0x0000020
  2118  	SF_Values                             = 0x0000200
  2119  	SF_View                               = 0x0200000
  2120  	SF_WhereBegin                         = 0x0080000
  2121  	SF_WinRewrite                         = 0x0100000
  2122  	SHARED_LOCK                           = 1
  2123  	SHARED_SIZE                           = 510
  2124  	SIG_ATOMIC_MAX                        = 2147483647
  2125  	SIG_ATOMIC_MIN                        = -2147483648
  2126  	SIZE_MAX                              = 4294967295
  2127  	SQLITECONFIG_H                        = 1
  2128  	SQLITEINT_H                           = 0
  2129  	SQLITE_AFF_BLOB                       = 0x41
  2130  	SQLITE_AFF_INTEGER                    = 0x44
  2131  	SQLITE_AFF_MASK                       = 0x47
  2132  	SQLITE_AFF_NONE                       = 0x40
  2133  	SQLITE_AFF_NUMERIC                    = 0x43
  2134  	SQLITE_AFF_REAL                       = 0x45
  2135  	SQLITE_AFF_TEXT                       = 0x42
  2136  	SQLITE_ASCII                          = 1
  2137  	SQLITE_ATOMIC_INTRINSICS              = 1
  2138  	SQLITE_AllOpts                        = 0xffffffff
  2139  	SQLITE_AutoIndex                      = 0x00008000
  2140  	SQLITE_BIGENDIAN                      = 0
  2141  	SQLITE_BTREE_H                        = 0
  2142  	SQLITE_BYTEORDER                      = 1234
  2143  	SQLITE_BalancedMerge                  = 0x00200000
  2144  	SQLITE_BloomFilter                    = 0x00080000
  2145  	SQLITE_BloomPulldown                  = 0x00100000
  2146  	SQLITE_CacheSpill                     = 0x00000020
  2147  	SQLITE_CellSizeCk                     = 0x00200000
  2148  	SQLITE_CkptFullFSync                  = 0x00000010
  2149  	SQLITE_CountOfView                    = 0x00000200
  2150  	SQLITE_CoverIdxScan                   = 0x00000020
  2151  	SQLITE_CursorHints                    = 0x00000400
  2152  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2153  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2154  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2155  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2156  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2157  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2158  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2159  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2160  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2161  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2162  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2163  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2164  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2165  	SQLITE_Defensive                      = 0x10000000
  2166  	SQLITE_DeferFKs                       = 0x00080000
  2167  	SQLITE_DistinctOpt                    = 0x00000010
  2168  	SQLITE_DqsDDL                         = 0x20000000
  2169  	SQLITE_DqsDML                         = 0x40000000
  2170  	SQLITE_ECEL_DUP                       = 0x01
  2171  	SQLITE_ECEL_FACTOR                    = 0x02
  2172  	SQLITE_ECEL_OMITREF                   = 0x08
  2173  	SQLITE_ECEL_REF                       = 0x04
  2174  	SQLITE_EnableQPSG                     = 0x00800000
  2175  	SQLITE_EnableTrigger                  = 0x00040000
  2176  	SQLITE_EnableView                     = 0x80000000
  2177  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2178  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2179  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2180  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2181  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2182  	SQLITE_FUNC_CASE                      = 0x0008
  2183  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2184  	SQLITE_FUNC_COUNT                     = 0x0100
  2185  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2186  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2187  	SQLITE_FUNC_EPHEM                     = 0x0010
  2188  	SQLITE_FUNC_HASH_SZ                   = 23
  2189  	SQLITE_FUNC_INLINE                    = 0x00400000
  2190  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2191  	SQLITE_FUNC_LENGTH                    = 0x0040
  2192  	SQLITE_FUNC_LIKE                      = 0x0004
  2193  	SQLITE_FUNC_MINMAX                    = 0x1000
  2194  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2195  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2196  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2197  	SQLITE_FUNC_TEST                      = 0x4000
  2198  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2199  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2200  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2201  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2202  	SQLITE_FactorOutConst                 = 0x00000008
  2203  	SQLITE_FlttnUnionAll                  = 0x00800000
  2204  	SQLITE_ForeignKeys                    = 0x00004000
  2205  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2206  	SQLITE_FullColNames                   = 0x00000004
  2207  	SQLITE_FullFSync                      = 0x00000008
  2208  	SQLITE_GroupByOrder                   = 0x00000004
  2209  	SQLITE_HASH_H                         = 0
  2210  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2211  	SQLITE_HAVE_OS_TRACE                  = 0
  2212  	SQLITE_IDXTYPE_APPDEF                 = 0
  2213  	SQLITE_IDXTYPE_IPK                    = 3
  2214  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2215  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2216  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2217  	SQLITE_IgnoreChecks                   = 0x00000200
  2218  	SQLITE_JUMPIFNULL                     = 0x10
  2219  	SQLITE_LITTLEENDIAN                   = 1
  2220  	SQLITE_LegacyAlter                    = 0x04000000
  2221  	SQLITE_LegacyFileFmt                  = 0x00000002
  2222  	SQLITE_LoadExtFunc                    = 0x00020000
  2223  	SQLITE_LoadExtension                  = 0x00010000
  2224  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2225  	SQLITE_MAX_ATTACHED                   = 10
  2226  	SQLITE_MAX_COLUMN                     = 2000
  2227  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2228  	SQLITE_MAX_DB                         = 12
  2229  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2230  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2231  	SQLITE_MAX_FILE_FORMAT                = 4
  2232  	SQLITE_MAX_FUNCTION_ARG               = 127
  2233  	SQLITE_MAX_LENGTH                     = 1000000000
  2234  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2235  	SQLITE_MAX_MMAP_SIZE                  = 0x7fff0000
  2236  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2237  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2238  	SQLITE_MAX_PATHLEN                    = 4096
  2239  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2240  	SQLITE_MAX_SYMLINK                    = 200
  2241  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2242  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2243  	SQLITE_MAX_VDBE_OP                    = 250000000
  2244  	SQLITE_MAX_WORKER_THREADS             = 8
  2245  	SQLITE_MSVC_H                         = 0
  2246  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2247  	SQLITE_MX_JUMP_OPCODE                 = 64
  2248  	SQLITE_MinMaxOpt                      = 0x00010000
  2249  	SQLITE_NEED_ERR_NAME                  = 0
  2250  	SQLITE_NOMEM_BKPT                     = 7
  2251  	SQLITE_NOTNULL                        = 0x90
  2252  	SQLITE_NTUNE                          = 6
  2253  	SQLITE_NULLEQ                         = 0x80
  2254  	SQLITE_N_BTREE_META                   = 16
  2255  	SQLITE_N_LIMIT                        = 12
  2256  	SQLITE_N_STDTYPE                      = 6
  2257  	SQLITE_NoCkptOnClose                  = 0x00000800
  2258  	SQLITE_NoSchemaError                  = 0x08000000
  2259  	SQLITE_NullCallback                   = 0x00000100
  2260  	SQLITE_OS_OTHER                       = 0
  2261  	SQLITE_OS_SETUP_H                     = 0
  2262  	SQLITE_OS_UNIX                        = 1
  2263  	SQLITE_OS_WIN                         = 0
  2264  	SQLITE_OmitNoopJoin                   = 0x00000100
  2265  	SQLITE_OmitOrderBy                    = 0x00040000
  2266  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2267  	SQLITE_PAGER_H                        = 0
  2268  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2269  	SQLITE_PREPARE_MASK                   = 0x0f
  2270  	SQLITE_PREPARE_SAVESQL                = 0x80
  2271  	SQLITE_PRINTF_INTERNAL                = 0x01
  2272  	SQLITE_PRINTF_MALLOCED                = 0x04
  2273  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2274  	SQLITE_PTRSIZE                        = 4
  2275  	SQLITE_PropagateConst                 = 0x00008000
  2276  	SQLITE_PushDown                       = 0x00001000
  2277  	SQLITE_QueryFlattener                 = 0x00000001
  2278  	SQLITE_QueryOnly                      = 0x00100000
  2279  	SQLITE_ReadUncommit                   = 0x00000400
  2280  	SQLITE_RecTriggers                    = 0x00002000
  2281  	SQLITE_ReleaseReg                     = 0x00400000
  2282  	SQLITE_ResetDatabase                  = 0x02000000
  2283  	SQLITE_ReverseOrder                   = 0x00001000
  2284  	SQLITE_SO_ASC                         = 0
  2285  	SQLITE_SO_DESC                        = 1
  2286  	SQLITE_SO_UNDEFINED                   = -1
  2287  	SQLITE_STATE_BUSY                     = 0x6d
  2288  	SQLITE_STATE_CLOSED                   = 0xce
  2289  	SQLITE_STATE_ERROR                    = 0xd5
  2290  	SQLITE_STATE_OPEN                     = 0x76
  2291  	SQLITE_STATE_SICK                     = 0xba
  2292  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2293  	SQLITE_SYSTEM_MALLOC                  = 1
  2294  	SQLITE_SeekScan                       = 0x00020000
  2295  	SQLITE_ShortColNames                  = 0x00000040
  2296  	SQLITE_SimplifyJoin                   = 0x00002000
  2297  	SQLITE_SkipScan                       = 0x00004000
  2298  	SQLITE_Stat4                          = 0x00000800
  2299  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2300  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2301  	SQLITE_TOKEN_QUOTED                   = 0x1
  2302  	SQLITE_TRACE_LEGACY                   = 0x40
  2303  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2304  	SQLITE_TRACE_XPROFILE                 = 0x80
  2305  	SQLITE_Transitive                     = 0x00000080
  2306  	SQLITE_TriggerEQP                     = 0x01000000
  2307  	SQLITE_TrustedSchema                  = 0x00000080
  2308  	SQLITE_UTF16NATIVE                    = 2
  2309  	SQLITE_VDBE_H                         = 0
  2310  	SQLITE_VTABRISK_High                  = 2
  2311  	SQLITE_VTABRISK_Low                   = 0
  2312  	SQLITE_VTABRISK_Normal                = 1
  2313  	SQLITE_WSD                            = 0
  2314  	SQLITE_WindowFunc                     = 0x00000002
  2315  	SQLITE_WriteSchema                    = 0x00000001
  2316  	SRT_Coroutine                         = 13
  2317  	SRT_Discard                           = 4
  2318  	SRT_DistFifo                          = 5
  2319  	SRT_DistQueue                         = 6
  2320  	SRT_EphemTab                          = 12
  2321  	SRT_Except                            = 2
  2322  	SRT_Exists                            = 3
  2323  	SRT_Fifo                              = 8
  2324  	SRT_Mem                               = 10
  2325  	SRT_Output                            = 9
  2326  	SRT_Queue                             = 7
  2327  	SRT_Set                               = 11
  2328  	SRT_Table                             = 14
  2329  	SRT_Union                             = 1
  2330  	SRT_Upfrom                            = 15
  2331  	STDC_HEADERS                          = 1
  2332  	TABTYP_NORM                           = 0
  2333  	TABTYP_VIEW                           = 2
  2334  	TABTYP_VTAB                           = 1
  2335  	TF_Autoincrement                      = 0x00000008
  2336  	TF_Ephemeral                          = 0x00004000
  2337  	TF_Eponymous                          = 0x00008000
  2338  	TF_HasGenerated                       = 0x00000060
  2339  	TF_HasHidden                          = 0x00000002
  2340  	TF_HasNotNull                         = 0x00000800
  2341  	TF_HasPrimaryKey                      = 0x00000004
  2342  	TF_HasStat1                           = 0x00000010
  2343  	TF_HasStat4                           = 0x00002000
  2344  	TF_HasStored                          = 0x00000040
  2345  	TF_HasVirtual                         = 0x00000020
  2346  	TF_NoVisibleRowid                     = 0x00000200
  2347  	TF_OOOHidden                          = 0x00000400
  2348  	TF_Readonly                           = 0x00000001
  2349  	TF_Shadow                             = 0x00001000
  2350  	TF_StatsUsed                          = 0x00000100
  2351  	TF_Strict                             = 0x00010000
  2352  	TF_WithoutRowid                       = 0x00000080
  2353  	TK_ABORT                              = 27
  2354  	TK_ACTION                             = 28
  2355  	TK_ADD                                = 163
  2356  	TK_AFTER                              = 29
  2357  	TK_AGG_COLUMN                         = 169
  2358  	TK_AGG_FUNCTION                       = 168
  2359  	TK_ALL                                = 135
  2360  	TK_ALTER                              = 162
  2361  	TK_ALWAYS                             = 96
  2362  	TK_ANALYZE                            = 30
  2363  	TK_AND                                = 44
  2364  	TK_ANY                                = 101
  2365  	TK_AS                                 = 24
  2366  	TK_ASC                                = 31
  2367  	TK_ASTERISK                           = 180
  2368  	TK_ATTACH                             = 32
  2369  	TK_AUTOINCR                           = 126
  2370  	TK_BEFORE                             = 33
  2371  	TK_BEGIN                              = 5
  2372  	TK_BETWEEN                            = 48
  2373  	TK_BY                                 = 34
  2374  	TK_CASCADE                            = 35
  2375  	TK_CASE                               = 157
  2376  	TK_CAST                               = 36
  2377  	TK_CHECK                              = 124
  2378  	TK_COLLATE                            = 113
  2379  	TK_COLUMN                             = 167
  2380  	TK_COLUMNKW                           = 60
  2381  	TK_COMMIT                             = 10
  2382  	TK_CONFLICT                           = 37
  2383  	TK_CONSTRAINT                         = 119
  2384  	TK_CREATE                             = 17
  2385  	TK_CTIME_KW                           = 100
  2386  	TK_CURRENT                            = 85
  2387  	TK_DATABASE                           = 38
  2388  	TK_DEFAULT                            = 120
  2389  	TK_DEFERRABLE                         = 131
  2390  	TK_DEFERRED                           = 7
  2391  	TK_DELETE                             = 128
  2392  	TK_DESC                               = 39
  2393  	TK_DETACH                             = 40
  2394  	TK_DISTINCT                           = 140
  2395  	TK_DO                                 = 61
  2396  	TK_DROP                               = 133
  2397  	TK_EACH                               = 41
  2398  	TK_ELSE                               = 160
  2399  	TK_END                                = 11
  2400  	TK_ESCAPE                             = 58
  2401  	TK_EXCEPT                             = 136
  2402  	TK_EXCLUDE                            = 91
  2403  	TK_EXCLUSIVE                          = 9
  2404  	TK_EXISTS                             = 20
  2405  	TK_EXPLAIN                            = 2
  2406  	TK_FAIL                               = 42
  2407  	TK_FILTER                             = 166
  2408  	TK_FIRST                              = 83
  2409  	TK_FOLLOWING                          = 86
  2410  	TK_FOR                                = 62
  2411  	TK_FOREIGN                            = 132
  2412  	TK_FROM                               = 142
  2413  	TK_FUNCTION                           = 172
  2414  	TK_GENERATED                          = 95
  2415  	TK_GROUP                              = 146
  2416  	TK_GROUPS                             = 92
  2417  	TK_HAVING                             = 147
  2418  	TK_IF                                 = 18
  2419  	TK_IF_NULL_ROW                        = 179
  2420  	TK_IGNORE                             = 63
  2421  	TK_IMMEDIATE                          = 8
  2422  	TK_IN                                 = 49
  2423  	TK_INDEX                              = 161
  2424  	TK_INDEXED                            = 116
  2425  	TK_INITIALLY                          = 64
  2426  	TK_INSERT                             = 127
  2427  	TK_INSTEAD                            = 65
  2428  	TK_INTERSECT                          = 137
  2429  	TK_INTO                               = 151
  2430  	TK_IS                                 = 45
  2431  	TK_ISNOT                              = 171
  2432  	TK_ISNULL                             = 50
  2433  	TK_JOIN                               = 143
  2434  	TK_JOIN_KW                            = 118
  2435  	TK_KEY                                = 67
  2436  	TK_LAST                               = 84
  2437  	TK_LIKE_KW                            = 47
  2438  	TK_LIMIT                              = 148
  2439  	TK_MATCH                              = 46
  2440  	TK_MATERIALIZED                       = 97
  2441  	TK_NO                                 = 66
  2442  	TK_NOT                                = 19
  2443  	TK_NOTHING                            = 152
  2444  	TK_NOTNULL                            = 51
  2445  	TK_NULL                               = 121
  2446  	TK_NULLS                              = 82
  2447  	TK_OF                                 = 68
  2448  	TK_OFFSET                             = 69
  2449  	TK_ON                                 = 115
  2450  	TK_OR                                 = 43
  2451  	TK_ORDER                              = 145
  2452  	TK_OTHERS                             = 93
  2453  	TK_OVER                               = 165
  2454  	TK_PARTITION                          = 87
  2455  	TK_PLAN                               = 4
  2456  	TK_PRAGMA                             = 70
  2457  	TK_PRECEDING                          = 88
  2458  	TK_PRIMARY                            = 122
  2459  	TK_PTR                                = 112
  2460  	TK_QUERY                              = 3
  2461  	TK_RAISE                              = 71
  2462  	TK_RANGE                              = 89
  2463  	TK_RECURSIVE                          = 72
  2464  	TK_REFERENCES                         = 125
  2465  	TK_REGISTER                           = 176
  2466  	TK_REINDEX                            = 98
  2467  	TK_RELEASE                            = 14
  2468  	TK_RENAME                             = 99
  2469  	TK_REPLACE                            = 73
  2470  	TK_RESTRICT                           = 74
  2471  	TK_RETURNING                          = 150
  2472  	TK_ROLLBACK                           = 12
  2473  	TK_ROW                                = 75
  2474  	TK_ROWS                               = 76
  2475  	TK_SAVEPOINT                          = 13
  2476  	TK_SELECT                             = 138
  2477  	TK_SELECT_COLUMN                      = 178
  2478  	TK_SET                                = 130
  2479  	TK_SPAN                               = 181
  2480  	TK_TABLE                              = 16
  2481  	TK_TEMP                               = 21
  2482  	TK_THEN                               = 159
  2483  	TK_TIES                               = 94
  2484  	TK_TO                                 = 15
  2485  	TK_TRANSACTION                        = 6
  2486  	TK_TRIGGER                            = 77
  2487  	TK_TRUEFALSE                          = 170
  2488  	TK_TRUTH                              = 175
  2489  	TK_UMINUS                             = 173
  2490  	TK_UNBOUNDED                          = 90
  2491  	TK_UNION                              = 134
  2492  	TK_UNIQUE                             = 123
  2493  	TK_UPDATE                             = 129
  2494  	TK_UPLUS                              = 174
  2495  	TK_USING                              = 144
  2496  	TK_VACUUM                             = 78
  2497  	TK_VALUES                             = 139
  2498  	TK_VECTOR                             = 177
  2499  	TK_VIEW                               = 79
  2500  	TK_VIRTUAL                            = 80
  2501  	TK_WHEN                               = 158
  2502  	TK_WHERE                              = 149
  2503  	TK_WINDOW                             = 164
  2504  	TK_WITH                               = 81
  2505  	TK_WITHOUT                            = 26
  2506  	TREETRACE_ENABLED                     = 0
  2507  	TRIGGER_AFTER                         = 2
  2508  	TRIGGER_BEFORE                        = 1
  2509  	UINT16_MAX                            = 65535
  2510  	UINT32_MAX                            = 4294967295
  2511  	UINT64_MAX                            = 18446744073709551615
  2512  	UINT8_MAX                             = 255
  2513  	UINTMAX_MAX                           = 18446744073709551615
  2514  	UINTPTR_MAX                           = 4294967295
  2515  	UINT_FAST16_MAX                       = 4294967295
  2516  	UINT_FAST32_MAX                       = 4294967295
  2517  	UINT_FAST64_MAX                       = 18446744073709551615
  2518  	UINT_FAST8_MAX                        = 255
  2519  	UINT_LEAST16_MAX                      = 65535
  2520  	UINT_LEAST32_MAX                      = 4294967295
  2521  	UINT_LEAST64_MAX                      = 18446744073709551615
  2522  	UINT_LEAST8_MAX                       = 255
  2523  	WCHAR_MAX                             = 2147483647
  2524  	WCHAR_MIN                             = -2147483648
  2525  	WHERE_AGG_DISTINCT                    = 0x0400
  2526  	WHERE_DISTINCTBY                      = 0x0080
  2527  	WHERE_DISTINCT_NOOP                   = 0
  2528  	WHERE_DISTINCT_ORDERED                = 2
  2529  	WHERE_DISTINCT_UNIQUE                 = 1
  2530  	WHERE_DISTINCT_UNORDERED              = 3
  2531  	WHERE_DUPLICATES_OK                   = 0x0010
  2532  	WHERE_GROUPBY                         = 0x0040
  2533  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2534  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2535  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2536  	WHERE_ORDERBY_MAX                     = 0x0002
  2537  	WHERE_ORDERBY_MIN                     = 0x0001
  2538  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2539  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2540  	WHERE_RIGHT_JOIN                      = 0x1000
  2541  	WHERE_SORTBYGROUP                     = 0x0200
  2542  	WHERE_USE_LIMIT                       = 0x4000
  2543  	WHERE_WANT_DISTINCT                   = 0x0100
  2544  	WINT_MAX                              = 4294967295
  2545  	WINT_MIN                              = 0
  2546  	WRC_Abort                             = 2
  2547  	WRC_Continue                          = 0
  2548  	WRC_Prune                             = 1
  2549  	XN_EXPR                               = -2
  2550  	XN_ROWID                              = -1
  2551  	X_ANSI_STDDEF_H                       = 0
  2552  	X_BITS_STDINT_UINTN_H                 = 1
  2553  	X_BITS_WCHAR_H                        = 1
  2554  	X_BSD_PTRDIFF_T_                      = 0
  2555  	X_GCC_MAX_ALIGN_T                     = 0
  2556  	X_GCC_PTRDIFF_T                       = 0
  2557  	X_GCC_WRAP_STDINT_H                   = 0
  2558  	X_GNU_SOURCE                          = 0
  2559  	X_INTTYPES_H                          = 1
  2560  	X_LARGEFILE_SOURCE                    = 1
  2561  	X_LARGE_FILE                          = 1
  2562  	X_PTRDIFF_T                           = 0
  2563  	X_PTRDIFF_T_                          = 0
  2564  	X_PTRDIFF_T_DECLARED                  = 0
  2565  	X_SQLITE_OS_H_                        = 0
  2566  	X_STDDEF_H                            = 0
  2567  	X_STDDEF_H_                           = 0
  2568  	X_STDINT_H                            = 1
  2569  	X_T_PTRDIFF                           = 0
  2570  	X_T_PTRDIFF_                          = 0
  2571  	X_XOPEN_SOURCE                        = 600
  2572  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2573  	FP_XSTATE_MAGIC1                      = 0x46505853
  2574  	FP_XSTATE_MAGIC2                      = 0x46505845
  2575  	MAX_PREPARED_STMTS                    = 100
  2576  	MINSIGSTKSZ                           = 2048
  2577  	NGREG                                 = 19
  2578  	NSIG                                  = 65
  2579  	NUM_PREPARED_STMTS                    = 10
  2580  	SA_INTERRUPT                          = 0x20000000
  2581  	SA_NOCLDSTOP                          = 1
  2582  	SA_NOCLDWAIT                          = 2
  2583  	SA_NODEFER                            = 0x40000000
  2584  	SA_NOMASK                             = 1073741824
  2585  	SA_ONESHOT                            = 2147483648
  2586  	SA_ONSTACK                            = 0x08000000
  2587  	SA_RESETHAND                          = 0x80000000
  2588  	SA_RESTART                            = 0x10000000
  2589  	SA_SIGINFO                            = 4
  2590  	SA_STACK                              = 134217728
  2591  	SIGABRT                               = 6
  2592  	SIGALRM                               = 14
  2593  	SIGBUS                                = 7
  2594  	SIGCHLD                               = 17
  2595  	SIGCLD                                = 17
  2596  	SIGCONT                               = 18
  2597  	SIGFPE                                = 8
  2598  	SIGHUP                                = 1
  2599  	SIGILL                                = 4
  2600  	SIGINT                                = 2
  2601  	SIGIO                                 = 29
  2602  	SIGIOT                                = 6
  2603  	SIGKILL                               = 9
  2604  	SIGPIPE                               = 13
  2605  	SIGPOLL                               = 29
  2606  	SIGPROF                               = 27
  2607  	SIGPWR                                = 30
  2608  	SIGQUIT                               = 3
  2609  	SIGSEGV                               = 11
  2610  	SIGSTKFLT                             = 16
  2611  	SIGSTKSZ                              = 8192
  2612  	SIGSTOP                               = 19
  2613  	SIGSYS                                = 31
  2614  	SIGTERM                               = 15
  2615  	SIGTRAP                               = 5
  2616  	SIGTSTP                               = 20
  2617  	SIGTTIN                               = 21
  2618  	SIGTTOU                               = 22
  2619  	SIGURG                                = 23
  2620  	SIGUSR1                               = 10
  2621  	SIGUSR2                               = 12
  2622  	SIGVTALRM                             = 26
  2623  	SIGWINCH                              = 28
  2624  	SIGXCPU                               = 24
  2625  	SIGXFSZ                               = 25
  2626  	SIG_BLOCK                             = 0
  2627  	SIG_SETMASK                           = 2
  2628  	SIG_UNBLOCK                           = 1
  2629  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2630  	SQLITE_TCL_NRE                        = 1
  2631  	TCLSH                                 = 1
  2632  	X86_FXSR_MAGIC                        = 0x0000
  2633  	X_BITS_SIGACTION_H                    = 1
  2634  	X_BITS_SIGCONTEXT_H                   = 1
  2635  	X_BITS_SIGEVENT_CONSTS_H              = 1
  2636  	X_BITS_SIGINFO_ARCH_H                 = 1
  2637  	X_BITS_SIGINFO_CONSTS_H               = 1
  2638  	X_BITS_SIGNUM_GENERIC_H               = 1
  2639  	X_BITS_SIGNUM_H                       = 1
  2640  	X_BITS_SIGSTACK_H                     = 1
  2641  	X_BITS_SIGTHREAD_H                    = 1
  2642  	X_BITS_SS_FLAGS_H                     = 1
  2643  	X_NSIG                                = 65
  2644  	X_SIGNAL_H                            = 0
  2645  	X_SYS_UCONTEXT_H                      = 1
  2646  	ADJ_ESTERROR                          = 0x0008
  2647  	ADJ_FREQUENCY                         = 0x0002
  2648  	ADJ_MAXERROR                          = 0x0004
  2649  	ADJ_MICRO                             = 0x1000
  2650  	ADJ_NANO                              = 0x2000
  2651  	ADJ_OFFSET                            = 0x0001
  2652  	ADJ_OFFSET_SINGLESHOT                 = 0x8001
  2653  	ADJ_OFFSET_SS_READ                    = 0xa001
  2654  	ADJ_SETOFFSET                         = 0x0100
  2655  	ADJ_STATUS                            = 0x0010
  2656  	ADJ_TAI                               = 0x0080
  2657  	ADJ_TICK                              = 0x4000
  2658  	ADJ_TIMECONST                         = 0x0020
  2659  	CACHE_STALE                           = 0
  2660  	CURTYPE_BTREE                         = 0
  2661  	CURTYPE_PSEUDO                        = 3
  2662  	CURTYPE_SORTER                        = 1
  2663  	CURTYPE_VTAB                          = 2
  2664  	INT16_WIDTH                           = 16
  2665  	INT32_WIDTH                           = 32
  2666  	INT64_WIDTH                           = 64
  2667  	INT8_WIDTH                            = 8
  2668  	INTMAX_WIDTH                          = 64
  2669  	INTPTR_WIDTH                          = 32
  2670  	INT_FAST16_WIDTH                      = 32
  2671  	INT_FAST32_WIDTH                      = 32
  2672  	INT_FAST64_WIDTH                      = 64
  2673  	INT_FAST8_WIDTH                       = 8
  2674  	INT_LEAST16_WIDTH                     = 16
  2675  	INT_LEAST32_WIDTH                     = 32
  2676  	INT_LEAST64_WIDTH                     = 64
  2677  	INT_LEAST8_WIDTH                      = 8
  2678  	L_cuserid                             = 9
  2679  	MEM_AffMask                           = 0x003f
  2680  	MEM_Agg                               = 0x8000
  2681  	MEM_Blob                              = 0x0010
  2682  	MEM_Cleared                           = 0x0100
  2683  	MEM_Dyn                               = 0x1000
  2684  	MEM_Ephem                             = 0x4000
  2685  	MEM_FromBind                          = 0x0040
  2686  	MEM_Int                               = 0x0004
  2687  	MEM_IntReal                           = 0x0020
  2688  	MEM_Null                              = 0x0001
  2689  	MEM_Real                              = 0x0008
  2690  	MEM_Static                            = 0x2000
  2691  	MEM_Str                               = 0x0002
  2692  	MEM_Subtype                           = 0x0800
  2693  	MEM_Term                              = 0x0200
  2694  	MEM_TypeMask                          = 0x0dbf
  2695  	MEM_Undefined                         = 0x0000
  2696  	MEM_Zero                              = 0x0400
  2697  	MOD_CLKA                              = 32769
  2698  	MOD_CLKB                              = 16384
  2699  	MOD_ESTERROR                          = 8
  2700  	MOD_FREQUENCY                         = 2
  2701  	MOD_MAXERROR                          = 4
  2702  	MOD_MICRO                             = 4096
  2703  	MOD_NANO                              = 8192
  2704  	MOD_OFFSET                            = 1
  2705  	MOD_STATUS                            = 16
  2706  	MOD_TAI                               = 128
  2707  	MOD_TIMECONST                         = 32
  2708  	PRIO_MAX                              = 20
  2709  	PRIO_MIN                              = -20
  2710  	PTRDIFF_WIDTH                         = 32
  2711  	RENAME_EXCHANGE                       = 2
  2712  	RENAME_NOREPLACE                      = 1
  2713  	RENAME_WHITEOUT                       = 4
  2714  	RLIM64_INFINITY                       = 0xffffffffffffffff
  2715  	RLIM_INFINITY                         = 0xffffffffffffffff
  2716  	RLIM_SAVED_CUR                        = 18446744073709551615
  2717  	RLIM_SAVED_MAX                        = 18446744073709551615
  2718  	SEEK_DATA                             = 3
  2719  	SEEK_HOLE                             = 4
  2720  	SIG_ATOMIC_WIDTH                      = 32
  2721  	SIZE_WIDTH                            = 32
  2722  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  2723  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  2724  	SQLITE_MAX_SCHEMA_RETRY               = 50
  2725  	SQLITE_VDBEINT_H                      = 0
  2726  	STA_CLK                               = 0x8000
  2727  	STA_CLOCKERR                          = 0x1000
  2728  	STA_DEL                               = 0x0020
  2729  	STA_FLL                               = 0x0008
  2730  	STA_FREQHOLD                          = 0x0080
  2731  	STA_INS                               = 0x0010
  2732  	STA_MODE                              = 0x4000
  2733  	STA_NANO                              = 0x2000
  2734  	STA_PLL                               = 0x0001
  2735  	STA_PPSERROR                          = 0x0800
  2736  	STA_PPSFREQ                           = 0x0002
  2737  	STA_PPSJITTER                         = 0x0200
  2738  	STA_PPSSIGNAL                         = 0x0100
  2739  	STA_PPSTIME                           = 0x0004
  2740  	STA_PPSWANDER                         = 0x0400
  2741  	STA_RONLY                             = 65280
  2742  	STA_UNSYNC                            = 0x0040
  2743  	UINT16_WIDTH                          = 16
  2744  	UINT32_WIDTH                          = 32
  2745  	UINT64_WIDTH                          = 64
  2746  	UINT8_WIDTH                           = 8
  2747  	UINTMAX_WIDTH                         = 64
  2748  	UINTPTR_WIDTH                         = 32
  2749  	UINT_FAST16_WIDTH                     = 32
  2750  	UINT_FAST32_WIDTH                     = 32
  2751  	UINT_FAST64_WIDTH                     = 64
  2752  	UINT_FAST8_WIDTH                      = 8
  2753  	UINT_LEAST16_WIDTH                    = 16
  2754  	UINT_LEAST32_WIDTH                    = 32
  2755  	UINT_LEAST64_WIDTH                    = 64
  2756  	UINT_LEAST8_WIDTH                     = 8
  2757  	VDBE_DISPLAY_P4                       = 1
  2758  	VDBE_HALT_STATE                       = 3
  2759  	VDBE_INIT_STATE                       = 0
  2760  	VDBE_READY_STATE                      = 1
  2761  	VDBE_RUN_STATE                        = 2
  2762  	WCHAR_WIDTH                           = 32
  2763  	WINT_WIDTH                            = 32
  2764  	X_BITS_TIMEX_H                        = 1
  2765  	X_ISOC11_SOURCE                       = 1
  2766  	X_ISOC2X_SOURCE                       = 1
  2767  	X_ISOC95_SOURCE                       = 1
  2768  	X_ISOC99_SOURCE                       = 1
  2769  	X_LARGEFILE64_SOURCE                  = 1
  2770  	X_SYS_RESOURCE_H                      = 1
  2771  	X_XOPEN_SOURCE_EXTENDED               = 1
  2772  	BTCF_AtLast                           = 0x08
  2773  	BTCF_Incrblob                         = 0x10
  2774  	BTCF_Multiple                         = 0x20
  2775  	BTCF_Pinned                           = 0x40
  2776  	BTCF_ValidNKey                        = 0x02
  2777  	BTCF_ValidOvfl                        = 0x04
  2778  	BTCF_WriteFlag                        = 0x01
  2779  	BTCURSOR_MAX_DEPTH                    = 20
  2780  	BTS_EXCLUSIVE                         = 0x0040
  2781  	BTS_FAST_SECURE                       = 0x000c
  2782  	BTS_INITIALLY_EMPTY                   = 0x0010
  2783  	BTS_NO_WAL                            = 0x0020
  2784  	BTS_OVERWRITE                         = 0x0008
  2785  	BTS_PAGESIZE_FIXED                    = 0x0002
  2786  	BTS_PENDING                           = 0x0080
  2787  	BTS_READ_ONLY                         = 0x0001
  2788  	BTS_SECURE_DELETE                     = 0x0004
  2789  	CURSOR_FAULT                          = 4
  2790  	CURSOR_INVALID                        = 1
  2791  	CURSOR_REQUIRESEEK                    = 3
  2792  	CURSOR_SKIPNEXT                       = 2
  2793  	CURSOR_VALID                          = 0
  2794  	PTF_INTKEY                            = 0x01
  2795  	PTF_LEAF                              = 0x08
  2796  	PTF_LEAFDATA                          = 0x04
  2797  	PTF_ZERODATA                          = 0x02
  2798  	PTRMAP_BTREE                          = 5
  2799  	PTRMAP_FREEPAGE                       = 2
  2800  	PTRMAP_OVERFLOW1                      = 3
  2801  	PTRMAP_OVERFLOW2                      = 4
  2802  	PTRMAP_ROOTPAGE                       = 1
  2803  	READ_LOCK                             = 1
  2804  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  2805  	TRANS_NONE                            = 0
  2806  	TRANS_READ                            = 1
  2807  	TRANS_WRITE                           = 2
  2808  	WRITE_LOCK                            = 2
  2809  	CLONE_CHILD_CLEARTID                  = 0x00200000
  2810  	CLONE_CHILD_SETTID                    = 0x01000000
  2811  	CLONE_DETACHED                        = 0x00400000
  2812  	CLONE_FILES                           = 0x00000400
  2813  	CLONE_FS                              = 0x00000200
  2814  	CLONE_IO                              = 0x80000000
  2815  	CLONE_NEWCGROUP                       = 0x02000000
  2816  	CLONE_NEWIPC                          = 0x08000000
  2817  	CLONE_NEWNET                          = 0x40000000
  2818  	CLONE_NEWNS                           = 0x00020000
  2819  	CLONE_NEWPID                          = 0x20000000
  2820  	CLONE_NEWUSER                         = 0x10000000
  2821  	CLONE_NEWUTS                          = 0x04000000
  2822  	CLONE_PARENT                          = 0x00008000
  2823  	CLONE_PARENT_SETTID                   = 0x00100000
  2824  	CLONE_PIDFD                           = 0x00001000
  2825  	CLONE_PTRACE                          = 0x00002000
  2826  	CLONE_SETTLS                          = 0x00080000
  2827  	CLONE_SIGHAND                         = 0x00000800
  2828  	CLONE_SYSVSEM                         = 0x00040000
  2829  	CLONE_THREAD                          = 0x00010000
  2830  	CLONE_UNTRACED                        = 0x00800000
  2831  	CLONE_VFORK                           = 0x00004000
  2832  	CLONE_VM                              = 0x00000100
  2833  	CPU_SETSIZE                           = 1024
  2834  	CSIGNAL                               = 0x000000ff
  2835  	N_THREAD                              = 26
  2836  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  2837  	PTHREAD_ONCE_INIT                     = 0
  2838  	SCHED_BATCH                           = 3
  2839  	SCHED_DEADLINE                        = 6
  2840  	SCHED_FIFO                            = 1
  2841  	SCHED_IDLE                            = 5
  2842  	SCHED_ISO                             = 4
  2843  	SCHED_OTHER                           = 0
  2844  	SCHED_RESET_ON_FORK                   = 0x40000000
  2845  	SCHED_RR                              = 2
  2846  	X_BITS_CPU_SET_H                      = 1
  2847  	X_BITS_SCHED_H                        = 1
  2848  	X_BITS_SETJMP_H                       = 1
  2849  	X_BITS_TYPES_STRUCT_SCHED_PARAM       = 1
  2850  	X_PTHREAD_H                           = 1
  2851  	X_SCHED_H                             = 1
  2852  	TCL_THREADS                           = 0
  2853  	MX_CHUNK_NUMBER                       = 299
  2854  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  2855  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  2856  	DEVSYM_MAX_PATHNAME                   = 512
  2857  	DEVSYM_VFS_NAME                       = "devsym"
  2858  	WRITECRASH_NAME                       = "writecrash"
  2859  	AT_EMPTY_PATH                         = 0x1000
  2860  	AT_NO_AUTOMOUNT                       = 0x800
  2861  	AT_RECURSIVE                          = 0x8000
  2862  	AT_STATX_DONT_SYNC                    = 0x4000
  2863  	AT_STATX_FORCE_SYNC                   = 0x2000
  2864  	AT_STATX_SYNC_AS_STAT                 = 0x0000
  2865  	AT_STATX_SYNC_TYPE                    = 0x6000
  2866  	DN_ACCESS                             = 0x00000001
  2867  	DN_ATTRIB                             = 0x00000020
  2868  	DN_CREATE                             = 0x00000004
  2869  	DN_DELETE                             = 0x00000008
  2870  	DN_MODIFY                             = 0x00000002
  2871  	DN_MULTISHOT                          = 0x80000000
  2872  	DN_RENAME                             = 0x00000010
  2873  	FALLOC_FL_COLLAPSE_RANGE              = 0x08
  2874  	FALLOC_FL_INSERT_RANGE                = 0x20
  2875  	FALLOC_FL_KEEP_SIZE                   = 0x01
  2876  	FALLOC_FL_NO_HIDE_STALE               = 0x04
  2877  	FALLOC_FL_PUNCH_HOLE                  = 0x02
  2878  	FALLOC_FL_UNSHARE_RANGE               = 0x40
  2879  	FALLOC_FL_ZERO_RANGE                  = 0x10
  2880  	F_ADD_SEALS                           = 1033
  2881  	F_GETLEASE                            = 1025
  2882  	F_GETOWN_EX                           = 16
  2883  	F_GETPIPE_SZ                          = 1032
  2884  	F_GETSIG                              = 11
  2885  	F_GET_FILE_RW_HINT                    = 1037
  2886  	F_GET_RW_HINT                         = 1035
  2887  	F_GET_SEALS                           = 1034
  2888  	F_NOTIFY                              = 1026
  2889  	F_OFD_GETLK                           = 36
  2890  	F_OFD_SETLK                           = 37
  2891  	F_OFD_SETLKW                          = 38
  2892  	F_SEAL_FUTURE_WRITE                   = 0x0010
  2893  	F_SEAL_GROW                           = 0x0004
  2894  	F_SEAL_SEAL                           = 0x0001
  2895  	F_SEAL_SHRINK                         = 0x0002
  2896  	F_SEAL_WRITE                          = 0x0008
  2897  	F_SETLEASE                            = 1024
  2898  	F_SETOWN_EX                           = 15
  2899  	F_SETPIPE_SZ                          = 1031
  2900  	F_SETSIG                              = 10
  2901  	F_SET_FILE_RW_HINT                    = 1038
  2902  	F_SET_RW_HINT                         = 1036
  2903  	LOCK_MAND                             = 32
  2904  	LOCK_READ                             = 64
  2905  	LOCK_RW                               = 192
  2906  	LOCK_WRITE                            = 128
  2907  	MAX_HANDLE_SZ                         = 128
  2908  	O_DIRECT                              = 16384
  2909  	O_LARGEFILE                           = 32768
  2910  	O_NOATIME                             = 262144
  2911  	O_PATH                                = 2097152
  2912  	O_TMPFILE                             = 4259840
  2913  	RWF_WRITE_LIFE_NOT_SET                = 0
  2914  	RWH_WRITE_LIFE_EXTREME                = 5
  2915  	RWH_WRITE_LIFE_LONG                   = 4
  2916  	RWH_WRITE_LIFE_MEDIUM                 = 3
  2917  	RWH_WRITE_LIFE_NONE                   = 1
  2918  	RWH_WRITE_LIFE_SHORT                  = 2
  2919  	SPLICE_F_GIFT                         = 8
  2920  	SPLICE_F_MORE                         = 4
  2921  	SPLICE_F_MOVE                         = 1
  2922  	SPLICE_F_NONBLOCK                     = 2
  2923  	STATX_ALL                             = 0x00000fff
  2924  	STATX_ATIME                           = 0x00000020
  2925  	STATX_ATTR_APPEND                     = 0x00000020
  2926  	STATX_ATTR_AUTOMOUNT                  = 0x00001000
  2927  	STATX_ATTR_COMPRESSED                 = 0x00000004
  2928  	STATX_ATTR_DAX                        = 0x00200000
  2929  	STATX_ATTR_ENCRYPTED                  = 0x00000800
  2930  	STATX_ATTR_IMMUTABLE                  = 0x00000010
  2931  	STATX_ATTR_MOUNT_ROOT                 = 0x00002000
  2932  	STATX_ATTR_NODUMP                     = 0x00000040
  2933  	STATX_ATTR_VERITY                     = 0x00100000
  2934  	STATX_BASIC_STATS                     = 0x000007ff
  2935  	STATX_BLOCKS                          = 0x00000400
  2936  	STATX_BTIME                           = 0x00000800
  2937  	STATX_CTIME                           = 0x00000080
  2938  	STATX_GID                             = 0x00000010
  2939  	STATX_INO                             = 0x00000100
  2940  	STATX_MNT_ID                          = 0x00001000
  2941  	STATX_MODE                            = 0x00000002
  2942  	STATX_MTIME                           = 0x00000040
  2943  	STATX_NLINK                           = 0x00000004
  2944  	STATX_SIZE                            = 0x00000200
  2945  	STATX_TYPE                            = 0x00000001
  2946  	STATX_UID                             = 0x00000008
  2947  	STATX__RESERVED                       = 0x80000000
  2948  	SYNC_FILE_RANGE_WAIT_AFTER            = 4
  2949  	SYNC_FILE_RANGE_WAIT_BEFORE           = 1
  2950  	SYNC_FILE_RANGE_WRITE                 = 2
  2951  	SYNC_FILE_RANGE_WRITE_AND_WAIT        = 7
  2952  	X_ASM_GENERIC_INT_LL64_H              = 0
  2953  	X_ASM_GENERIC_TYPES_H                 = 0
  2954  	X_ASM_X86_POSIX_TYPES_32_H            = 0
  2955  	X_FALLOC_H_                           = 0
  2956  	X_LINUX_POSIX_TYPES_H                 = 0
  2957  	X_LINUX_STAT_H                        = 0
  2958  	X_LINUX_TYPES_H                       = 0
  2959  	X_POSIX_FD_SETSIZE                    = 20
  2960  	X_POSIX_HIWAT                         = 512
  2961  	X_POSIX_QLIMIT                        = 1
  2962  	X_POSIX_UIO_MAXIOV                    = 16
  2963  	SQLITE_INTARRAY_H                     = 0
  2964  	JT_MAX_PATHNAME                       = 512
  2965  	JT_VFS_NAME                           = "jt"
  2966  	MALLOC_LOG_FRAMES                     = 10
  2967  	DEFAULT_SECTOR_SIZE                   = 0x1000
  2968  	MAX_PAGE_SIZE                         = 0x10000
  2969  	MULTIPLEX_CTRL_ENABLE                 = 214014
  2970  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  2971  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  2972  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  2973  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  2974  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  2975  	SQLITE_TEST_MULTIPLEX_H               = 0
  2976  	MAX_MUTEXES                           = 14
  2977  	STATIC_MUTEXES                        = 12
  2978  	BLOBSIZE                              = 10485760
  2979  	BLOCKSIZE                             = 512
  2980  	DATABASE_FILE                         = 1
  2981  	FS_VFS_NAME                           = "fs"
  2982  	JOURNAL_FILE                          = 2
  2983  	INST_MAX_PATHNAME                     = 512
  2984  	OS_ACCESS                             = 1
  2985  	OS_ANNOTATE                           = 28
  2986  	OS_CHECKRESERVEDLOCK                  = 2
  2987  	OS_CLOSE                              = 3
  2988  	OS_CURRENTTIME                        = 4
  2989  	OS_DELETE                             = 5
  2990  	OS_DEVCHAR                            = 6
  2991  	OS_FILECONTROL                        = 7
  2992  	OS_FILESIZE                           = 8
  2993  	OS_FULLPATHNAME                       = 9
  2994  	OS_LOCK                               = 11
  2995  	OS_NUMEVENTS                          = 29
  2996  	OS_OPEN                               = 12
  2997  	OS_RANDOMNESS                         = 13
  2998  	OS_READ                               = 14
  2999  	OS_SECTORSIZE                         = 15
  3000  	OS_SHMBARRIER                         = 26
  3001  	OS_SHMLOCK                            = 25
  3002  	OS_SHMMAP                             = 23
  3003  	OS_SHMUNMAP                           = 22
  3004  	OS_SLEEP                              = 16
  3005  	OS_SYNC                               = 17
  3006  	OS_TRUNCATE                           = 18
  3007  	OS_UNLOCK                             = 19
  3008  	OS_WRITE                              = 20
  3009  	VFSLOG_BUFFERSIZE                     = 8192
  3010  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3011  	TESTPCACHE_NPAGE                      = 217
  3012  	TESTPCACHE_RESERVE                    = 17
  3013  	TESTPCACHE_VALID                      = 0x364585fd
  3014  	MSG_Close                             = 6
  3015  	MSG_Done                              = 7
  3016  	MSG_Finalize                          = 5
  3017  	MSG_Open                              = 1
  3018  	MSG_Prepare                           = 2
  3019  	MSG_Reset                             = 4
  3020  	MSG_Step                              = 3
  3021  	MADV_COLD                             = 20
  3022  	MADV_DODUMP                           = 17
  3023  	MADV_DOFORK                           = 11
  3024  	MADV_DONTDUMP                         = 16
  3025  	MADV_DONTFORK                         = 10
  3026  	MADV_DONTNEED                         = 4
  3027  	MADV_FREE                             = 8
  3028  	MADV_HUGEPAGE                         = 14
  3029  	MADV_HWPOISON                         = 100
  3030  	MADV_KEEPONFORK                       = 19
  3031  	MADV_MERGEABLE                        = 12
  3032  	MADV_NOHUGEPAGE                       = 15
  3033  	MADV_NORMAL                           = 0
  3034  	MADV_PAGEOUT                          = 21
  3035  	MADV_RANDOM                           = 1
  3036  	MADV_REMOVE                           = 9
  3037  	MADV_SEQUENTIAL                       = 2
  3038  	MADV_UNMERGEABLE                      = 13
  3039  	MADV_WILLNEED                         = 3
  3040  	MADV_WIPEONFORK                       = 18
  3041  	MAP_32BIT                             = 0x40
  3042  	MAP_ANON                              = 32
  3043  	MAP_ANONYMOUS                         = 0x20
  3044  	MAP_DENYWRITE                         = 0x00800
  3045  	MAP_EXECUTABLE                        = 0x01000
  3046  	MAP_FILE                              = 0
  3047  	MAP_FIXED                             = 0x10
  3048  	MAP_FIXED_NOREPLACE                   = 0x100000
  3049  	MAP_GROWSDOWN                         = 0x00100
  3050  	MAP_HUGETLB                           = 0x40000
  3051  	MAP_HUGE_MASK                         = 0x3f
  3052  	MAP_HUGE_SHIFT                        = 26
  3053  	MAP_LOCKED                            = 0x02000
  3054  	MAP_NONBLOCK                          = 0x10000
  3055  	MAP_NORESERVE                         = 0x04000
  3056  	MAP_POPULATE                          = 0x08000
  3057  	MAP_PRIVATE                           = 0x02
  3058  	MAP_SHARED                            = 0x01
  3059  	MAP_SHARED_VALIDATE                   = 0x03
  3060  	MAP_STACK                             = 0x20000
  3061  	MAP_SYNC                              = 0x80000
  3062  	MAP_TYPE                              = 0x0f
  3063  	MCL_CURRENT                           = 1
  3064  	MCL_FUTURE                            = 2
  3065  	MCL_ONFAULT                           = 4
  3066  	MFD_ALLOW_SEALING                     = 2
  3067  	MFD_CLOEXEC                           = 1
  3068  	MFD_HUGETLB                           = 4
  3069  	MLOCK_ONFAULT                         = 1
  3070  	MREMAP_FIXED                          = 2
  3071  	MREMAP_MAYMOVE                        = 1
  3072  	MS_ASYNC                              = 1
  3073  	MS_INVALIDATE                         = 2
  3074  	MS_SYNC                               = 4
  3075  	PKEY_DISABLE_ACCESS                   = 0x1
  3076  	PKEY_DISABLE_WRITE                    = 0x2
  3077  	POSIX_MADV_DONTNEED                   = 4
  3078  	POSIX_MADV_NORMAL                     = 0
  3079  	POSIX_MADV_RANDOM                     = 1
  3080  	POSIX_MADV_SEQUENTIAL                 = 2
  3081  	POSIX_MADV_WILLNEED                   = 3
  3082  	PROT_EXEC                             = 0x4
  3083  	PROT_GROWSDOWN                        = 0x01000000
  3084  	PROT_GROWSUP                          = 0x02000000
  3085  	PROT_NONE                             = 0x0
  3086  	PROT_READ                             = 0x1
  3087  	PROT_WRITE                            = 0x2
  3088  	X_SYS_MMAN_H                          = 1
  3089  	TCLVAR_NAME_EQ                        = 101
  3090  	TCLVAR_NAME_MATCH                     = 109
  3091  	TCLVAR_VALUE_GLOB                     = 103
  3092  	TCLVAR_VALUE_LIKE                     = 108
  3093  	TCLVAR_VALUE_REGEXP                   = 114
  3094  	FAULT_INJECT_NONE                     = 0
  3095  	FAULT_INJECT_PERSISTENT               = 2
  3096  	FAULT_INJECT_TRANSIENT                = 1
  3097  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3098  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3099  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3100  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3101  	TESTVFS_DELETE_MASK                   = 0x00000400
  3102  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3103  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3104  	TESTVFS_LOCK_MASK                     = 0x00040000
  3105  	TESTVFS_MAX_ARGS                      = 12
  3106  	TESTVFS_MAX_PAGES                     = 1024
  3107  	TESTVFS_OPEN_MASK                     = 0x00000100
  3108  	TESTVFS_READ_MASK                     = 0x00010000
  3109  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3110  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3111  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3112  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3113  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3114  	TESTVFS_SYNC_MASK                     = 0x00000200
  3115  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3116  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3117  	TESTVFS_WRITE_MASK                    = 0x00001000
  3118  )
  3119  
  3120  const (
  3121  	_PC_LINK_MAX           = 0
  3122  	_PC_MAX_CANON          = 1
  3123  	_PC_MAX_INPUT          = 2
  3124  	_PC_NAME_MAX           = 3
  3125  	_PC_PATH_MAX           = 4
  3126  	_PC_PIPE_BUF           = 5
  3127  	_PC_CHOWN_RESTRICTED   = 6
  3128  	_PC_NO_TRUNC           = 7
  3129  	_PC_VDISABLE           = 8
  3130  	_PC_SYNC_IO            = 9
  3131  	_PC_ASYNC_IO           = 10
  3132  	_PC_PRIO_IO            = 11
  3133  	_PC_SOCK_MAXBUF        = 12
  3134  	_PC_FILESIZEBITS       = 13
  3135  	_PC_REC_INCR_XFER_SIZE = 14
  3136  	_PC_REC_MAX_XFER_SIZE  = 15
  3137  	_PC_REC_MIN_XFER_SIZE  = 16
  3138  	_PC_REC_XFER_ALIGN     = 17
  3139  	_PC_ALLOC_SIZE_MIN     = 18
  3140  	_PC_SYMLINK_MAX        = 19
  3141  	_PC_2_SYMLINKS         = 20
  3142  )
  3143  
  3144  const (
  3145  	_CS_PATH = 0
  3146  
  3147  	_CS_V6_WIDTH_RESTRICTED_ENVS = 1
  3148  
  3149  	_CS_GNU_LIBC_VERSION       = 2
  3150  	_CS_GNU_LIBPTHREAD_VERSION = 3
  3151  
  3152  	_CS_V5_WIDTH_RESTRICTED_ENVS = 4
  3153  
  3154  	_CS_V7_WIDTH_RESTRICTED_ENVS = 5
  3155  
  3156  	_CS_LFS_CFLAGS      = 1000
  3157  	_CS_LFS_LDFLAGS     = 1001
  3158  	_CS_LFS_LIBS        = 1002
  3159  	_CS_LFS_LINTFLAGS   = 1003
  3160  	_CS_LFS64_CFLAGS    = 1004
  3161  	_CS_LFS64_LDFLAGS   = 1005
  3162  	_CS_LFS64_LIBS      = 1006
  3163  	_CS_LFS64_LINTFLAGS = 1007
  3164  
  3165  	_CS_XBS5_ILP32_OFF32_CFLAGS     = 1100
  3166  	_CS_XBS5_ILP32_OFF32_LDFLAGS    = 1101
  3167  	_CS_XBS5_ILP32_OFF32_LIBS       = 1102
  3168  	_CS_XBS5_ILP32_OFF32_LINTFLAGS  = 1103
  3169  	_CS_XBS5_ILP32_OFFBIG_CFLAGS    = 1104
  3170  	_CS_XBS5_ILP32_OFFBIG_LDFLAGS   = 1105
  3171  	_CS_XBS5_ILP32_OFFBIG_LIBS      = 1106
  3172  	_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
  3173  	_CS_XBS5_LP64_OFF64_CFLAGS      = 1108
  3174  	_CS_XBS5_LP64_OFF64_LDFLAGS     = 1109
  3175  	_CS_XBS5_LP64_OFF64_LIBS        = 1110
  3176  	_CS_XBS5_LP64_OFF64_LINTFLAGS   = 1111
  3177  	_CS_XBS5_LPBIG_OFFBIG_CFLAGS    = 1112
  3178  	_CS_XBS5_LPBIG_OFFBIG_LDFLAGS   = 1113
  3179  	_CS_XBS5_LPBIG_OFFBIG_LIBS      = 1114
  3180  	_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
  3181  
  3182  	_CS_POSIX_V6_ILP32_OFF32_CFLAGS     = 1116
  3183  	_CS_POSIX_V6_ILP32_OFF32_LDFLAGS    = 1117
  3184  	_CS_POSIX_V6_ILP32_OFF32_LIBS       = 1118
  3185  	_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS  = 1119
  3186  	_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS    = 1120
  3187  	_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS   = 1121
  3188  	_CS_POSIX_V6_ILP32_OFFBIG_LIBS      = 1122
  3189  	_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
  3190  	_CS_POSIX_V6_LP64_OFF64_CFLAGS      = 1124
  3191  	_CS_POSIX_V6_LP64_OFF64_LDFLAGS     = 1125
  3192  	_CS_POSIX_V6_LP64_OFF64_LIBS        = 1126
  3193  	_CS_POSIX_V6_LP64_OFF64_LINTFLAGS   = 1127
  3194  	_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS    = 1128
  3195  	_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS   = 1129
  3196  	_CS_POSIX_V6_LPBIG_OFFBIG_LIBS      = 1130
  3197  	_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
  3198  
  3199  	_CS_POSIX_V7_ILP32_OFF32_CFLAGS     = 1132
  3200  	_CS_POSIX_V7_ILP32_OFF32_LDFLAGS    = 1133
  3201  	_CS_POSIX_V7_ILP32_OFF32_LIBS       = 1134
  3202  	_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS  = 1135
  3203  	_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS    = 1136
  3204  	_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS   = 1137
  3205  	_CS_POSIX_V7_ILP32_OFFBIG_LIBS      = 1138
  3206  	_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
  3207  	_CS_POSIX_V7_LP64_OFF64_CFLAGS      = 1140
  3208  	_CS_POSIX_V7_LP64_OFF64_LDFLAGS     = 1141
  3209  	_CS_POSIX_V7_LP64_OFF64_LIBS        = 1142
  3210  	_CS_POSIX_V7_LP64_OFF64_LINTFLAGS   = 1143
  3211  	_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS    = 1144
  3212  	_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS   = 1145
  3213  	_CS_POSIX_V7_LPBIG_OFFBIG_LIBS      = 1146
  3214  	_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
  3215  
  3216  	_CS_V6_ENV = 1148
  3217  	_CS_V7_ENV = 1149
  3218  )
  3219  
  3220  const (
  3221  	_SC_ARG_MAX               = 0
  3222  	_SC_CHILD_MAX             = 1
  3223  	_SC_CLK_TCK               = 2
  3224  	_SC_NGROUPS_MAX           = 3
  3225  	_SC_OPEN_MAX              = 4
  3226  	_SC_STREAM_MAX            = 5
  3227  	_SC_TZNAME_MAX            = 6
  3228  	_SC_JOB_CONTROL           = 7
  3229  	_SC_SAVED_IDS             = 8
  3230  	_SC_REALTIME_SIGNALS      = 9
  3231  	_SC_PRIORITY_SCHEDULING   = 10
  3232  	_SC_TIMERS                = 11
  3233  	_SC_ASYNCHRONOUS_IO       = 12
  3234  	_SC_PRIORITIZED_IO        = 13
  3235  	_SC_SYNCHRONIZED_IO       = 14
  3236  	_SC_FSYNC                 = 15
  3237  	_SC_MAPPED_FILES          = 16
  3238  	_SC_MEMLOCK               = 17
  3239  	_SC_MEMLOCK_RANGE         = 18
  3240  	_SC_MEMORY_PROTECTION     = 19
  3241  	_SC_MESSAGE_PASSING       = 20
  3242  	_SC_SEMAPHORES            = 21
  3243  	_SC_SHARED_MEMORY_OBJECTS = 22
  3244  	_SC_AIO_LISTIO_MAX        = 23
  3245  	_SC_AIO_MAX               = 24
  3246  	_SC_AIO_PRIO_DELTA_MAX    = 25
  3247  	_SC_DELAYTIMER_MAX        = 26
  3248  	_SC_MQ_OPEN_MAX           = 27
  3249  	_SC_MQ_PRIO_MAX           = 28
  3250  	_SC_VERSION               = 29
  3251  	_SC_PAGESIZE              = 30
  3252  	_SC_RTSIG_MAX             = 31
  3253  	_SC_SEM_NSEMS_MAX         = 32
  3254  	_SC_SEM_VALUE_MAX         = 33
  3255  	_SC_SIGQUEUE_MAX          = 34
  3256  	_SC_TIMER_MAX             = 35
  3257  
  3258  	_SC_BC_BASE_MAX        = 36
  3259  	_SC_BC_DIM_MAX         = 37
  3260  	_SC_BC_SCALE_MAX       = 38
  3261  	_SC_BC_STRING_MAX      = 39
  3262  	_SC_COLL_WEIGHTS_MAX   = 40
  3263  	_SC_EQUIV_CLASS_MAX    = 41
  3264  	_SC_EXPR_NEST_MAX      = 42
  3265  	_SC_LINE_MAX           = 43
  3266  	_SC_RE_DUP_MAX         = 44
  3267  	_SC_CHARCLASS_NAME_MAX = 45
  3268  
  3269  	_SC_2_VERSION   = 46
  3270  	_SC_2_C_BIND    = 47
  3271  	_SC_2_C_DEV     = 48
  3272  	_SC_2_FORT_DEV  = 49
  3273  	_SC_2_FORT_RUN  = 50
  3274  	_SC_2_SW_DEV    = 51
  3275  	_SC_2_LOCALEDEF = 52
  3276  
  3277  	_SC_PII                 = 53
  3278  	_SC_PII_XTI             = 54
  3279  	_SC_PII_SOCKET          = 55
  3280  	_SC_PII_INTERNET        = 56
  3281  	_SC_PII_OSI             = 57
  3282  	_SC_POLL                = 58
  3283  	_SC_SELECT              = 59
  3284  	_SC_UIO_MAXIOV          = 60
  3285  	_SC_IOV_MAX             = 60
  3286  	_SC_PII_INTERNET_STREAM = 61
  3287  	_SC_PII_INTERNET_DGRAM  = 62
  3288  	_SC_PII_OSI_COTS        = 63
  3289  	_SC_PII_OSI_CLTS        = 64
  3290  	_SC_PII_OSI_M           = 65
  3291  	_SC_T_IOV_MAX           = 66
  3292  
  3293  	_SC_THREADS                      = 67
  3294  	_SC_THREAD_SAFE_FUNCTIONS        = 68
  3295  	_SC_GETGR_R_SIZE_MAX             = 69
  3296  	_SC_GETPW_R_SIZE_MAX             = 70
  3297  	_SC_LOGIN_NAME_MAX               = 71
  3298  	_SC_TTY_NAME_MAX                 = 72
  3299  	_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
  3300  	_SC_THREAD_KEYS_MAX              = 74
  3301  	_SC_THREAD_STACK_MIN             = 75
  3302  	_SC_THREAD_THREADS_MAX           = 76
  3303  	_SC_THREAD_ATTR_STACKADDR        = 77
  3304  	_SC_THREAD_ATTR_STACKSIZE        = 78
  3305  	_SC_THREAD_PRIORITY_SCHEDULING   = 79
  3306  	_SC_THREAD_PRIO_INHERIT          = 80
  3307  	_SC_THREAD_PRIO_PROTECT          = 81
  3308  	_SC_THREAD_PROCESS_SHARED        = 82
  3309  
  3310  	_SC_NPROCESSORS_CONF = 83
  3311  	_SC_NPROCESSORS_ONLN = 84
  3312  	_SC_PHYS_PAGES       = 85
  3313  	_SC_AVPHYS_PAGES     = 86
  3314  	_SC_ATEXIT_MAX       = 87
  3315  	_SC_PASS_MAX         = 88
  3316  
  3317  	_SC_XOPEN_VERSION     = 89
  3318  	_SC_XOPEN_XCU_VERSION = 90
  3319  	_SC_XOPEN_UNIX        = 91
  3320  	_SC_XOPEN_CRYPT       = 92
  3321  	_SC_XOPEN_ENH_I18N    = 93
  3322  	_SC_XOPEN_SHM         = 94
  3323  
  3324  	_SC_2_CHAR_TERM = 95
  3325  	_SC_2_C_VERSION = 96
  3326  	_SC_2_UPE       = 97
  3327  
  3328  	_SC_XOPEN_XPG2 = 98
  3329  	_SC_XOPEN_XPG3 = 99
  3330  	_SC_XOPEN_XPG4 = 100
  3331  
  3332  	_SC_CHAR_BIT   = 101
  3333  	_SC_CHAR_MAX   = 102
  3334  	_SC_CHAR_MIN   = 103
  3335  	_SC_INT_MAX    = 104
  3336  	_SC_INT_MIN    = 105
  3337  	_SC_LONG_BIT   = 106
  3338  	_SC_WORD_BIT   = 107
  3339  	_SC_MB_LEN_MAX = 108
  3340  	_SC_NZERO      = 109
  3341  	_SC_SSIZE_MAX  = 110
  3342  	_SC_SCHAR_MAX  = 111
  3343  	_SC_SCHAR_MIN  = 112
  3344  	_SC_SHRT_MAX   = 113
  3345  	_SC_SHRT_MIN   = 114
  3346  	_SC_UCHAR_MAX  = 115
  3347  	_SC_UINT_MAX   = 116
  3348  	_SC_ULONG_MAX  = 117
  3349  	_SC_USHRT_MAX  = 118
  3350  
  3351  	_SC_NL_ARGMAX  = 119
  3352  	_SC_NL_LANGMAX = 120
  3353  	_SC_NL_MSGMAX  = 121
  3354  	_SC_NL_NMAX    = 122
  3355  	_SC_NL_SETMAX  = 123
  3356  	_SC_NL_TEXTMAX = 124
  3357  
  3358  	_SC_XBS5_ILP32_OFF32  = 125
  3359  	_SC_XBS5_ILP32_OFFBIG = 126
  3360  	_SC_XBS5_LP64_OFF64   = 127
  3361  	_SC_XBS5_LPBIG_OFFBIG = 128
  3362  
  3363  	_SC_XOPEN_LEGACY           = 129
  3364  	_SC_XOPEN_REALTIME         = 130
  3365  	_SC_XOPEN_REALTIME_THREADS = 131
  3366  
  3367  	_SC_ADVISORY_INFO          = 132
  3368  	_SC_BARRIERS               = 133
  3369  	_SC_BASE                   = 134
  3370  	_SC_C_LANG_SUPPORT         = 135
  3371  	_SC_C_LANG_SUPPORT_R       = 136
  3372  	_SC_CLOCK_SELECTION        = 137
  3373  	_SC_CPUTIME                = 138
  3374  	_SC_THREAD_CPUTIME         = 139
  3375  	_SC_DEVICE_IO              = 140
  3376  	_SC_DEVICE_SPECIFIC        = 141
  3377  	_SC_DEVICE_SPECIFIC_R      = 142
  3378  	_SC_FD_MGMT                = 143
  3379  	_SC_FIFO                   = 144
  3380  	_SC_PIPE                   = 145
  3381  	_SC_FILE_ATTRIBUTES        = 146
  3382  	_SC_FILE_LOCKING           = 147
  3383  	_SC_FILE_SYSTEM            = 148
  3384  	_SC_MONOTONIC_CLOCK        = 149
  3385  	_SC_MULTI_PROCESS          = 150
  3386  	_SC_SINGLE_PROCESS         = 151
  3387  	_SC_NETWORKING             = 152
  3388  	_SC_READER_WRITER_LOCKS    = 153
  3389  	_SC_SPIN_LOCKS             = 154
  3390  	_SC_REGEXP                 = 155
  3391  	_SC_REGEX_VERSION          = 156
  3392  	_SC_SHELL                  = 157
  3393  	_SC_SIGNALS                = 158
  3394  	_SC_SPAWN                  = 159
  3395  	_SC_SPORADIC_SERVER        = 160
  3396  	_SC_THREAD_SPORADIC_SERVER = 161
  3397  	_SC_SYSTEM_DATABASE        = 162
  3398  	_SC_SYSTEM_DATABASE_R      = 163
  3399  	_SC_TIMEOUTS               = 164
  3400  	_SC_TYPED_MEMORY_OBJECTS   = 165
  3401  	_SC_USER_GROUPS            = 166
  3402  	_SC_USER_GROUPS_R          = 167
  3403  	_SC_2_PBS                  = 168
  3404  	_SC_2_PBS_ACCOUNTING       = 169
  3405  	_SC_2_PBS_LOCATE           = 170
  3406  	_SC_2_PBS_MESSAGE          = 171
  3407  	_SC_2_PBS_TRACK            = 172
  3408  	_SC_SYMLOOP_MAX            = 173
  3409  	_SC_STREAMS                = 174
  3410  	_SC_2_PBS_CHECKPOINT       = 175
  3411  
  3412  	_SC_V6_ILP32_OFF32  = 176
  3413  	_SC_V6_ILP32_OFFBIG = 177
  3414  	_SC_V6_LP64_OFF64   = 178
  3415  	_SC_V6_LPBIG_OFFBIG = 179
  3416  
  3417  	_SC_HOST_NAME_MAX      = 180
  3418  	_SC_TRACE              = 181
  3419  	_SC_TRACE_EVENT_FILTER = 182
  3420  	_SC_TRACE_INHERIT      = 183
  3421  	_SC_TRACE_LOG          = 184
  3422  
  3423  	_SC_LEVEL1_ICACHE_SIZE     = 185
  3424  	_SC_LEVEL1_ICACHE_ASSOC    = 186
  3425  	_SC_LEVEL1_ICACHE_LINESIZE = 187
  3426  	_SC_LEVEL1_DCACHE_SIZE     = 188
  3427  	_SC_LEVEL1_DCACHE_ASSOC    = 189
  3428  	_SC_LEVEL1_DCACHE_LINESIZE = 190
  3429  	_SC_LEVEL2_CACHE_SIZE      = 191
  3430  	_SC_LEVEL2_CACHE_ASSOC     = 192
  3431  	_SC_LEVEL2_CACHE_LINESIZE  = 193
  3432  	_SC_LEVEL3_CACHE_SIZE      = 194
  3433  	_SC_LEVEL3_CACHE_ASSOC     = 195
  3434  	_SC_LEVEL3_CACHE_LINESIZE  = 196
  3435  	_SC_LEVEL4_CACHE_SIZE      = 197
  3436  	_SC_LEVEL4_CACHE_ASSOC     = 198
  3437  	_SC_LEVEL4_CACHE_LINESIZE  = 199
  3438  
  3439  	_SC_IPV6        = 235
  3440  	_SC_RAW_SOCKETS = 236
  3441  
  3442  	_SC_V7_ILP32_OFF32  = 237
  3443  	_SC_V7_ILP32_OFFBIG = 238
  3444  	_SC_V7_LP64_OFF64   = 239
  3445  	_SC_V7_LPBIG_OFFBIG = 240
  3446  
  3447  	_SC_SS_REPL_MAX = 241
  3448  
  3449  	_SC_TRACE_EVENT_NAME_MAX = 242
  3450  	_SC_TRACE_NAME_MAX       = 243
  3451  	_SC_TRACE_SYS_MAX        = 244
  3452  	_SC_TRACE_USER_EVENT_MAX = 245
  3453  
  3454  	_SC_XOPEN_STREAMS = 246
  3455  
  3456  	_SC_THREAD_ROBUST_PRIO_INHERIT = 247
  3457  	_SC_THREAD_ROBUST_PRIO_PROTECT = 248
  3458  )
  3459  
  3460  const (
  3461  	F_OWNER_TID  = 0
  3462  	F_OWNER_PID  = 1
  3463  	F_OWNER_PGRP = 2
  3464  	F_OWNER_GID  = 2
  3465  )
  3466  
  3467  const (
  3468  	RUSAGE_SELF = 0
  3469  
  3470  	RUSAGE_CHILDREN = -1
  3471  )
  3472  
  3473  const (
  3474  	RUSAGE_THREAD = 1
  3475  )
  3476  
  3477  const (
  3478  	PRIO_PROCESS = 0
  3479  	PRIO_PGRP    = 1
  3480  	PRIO_USER    = 2
  3481  )
  3482  
  3483  const (
  3484  	RLIMIT_CPU = 0
  3485  
  3486  	RLIMIT_FSIZE = 1
  3487  
  3488  	RLIMIT_DATA = 2
  3489  
  3490  	RLIMIT_STACK = 3
  3491  
  3492  	RLIMIT_CORE = 4
  3493  
  3494  	__RLIMIT_RSS = 5
  3495  
  3496  	RLIMIT_NOFILE  = 7
  3497  	__RLIMIT_OFILE = 7
  3498  
  3499  	RLIMIT_AS = 9
  3500  
  3501  	__RLIMIT_NPROC = 6
  3502  
  3503  	__RLIMIT_MEMLOCK = 8
  3504  
  3505  	__RLIMIT_LOCKS = 10
  3506  
  3507  	__RLIMIT_SIGPENDING = 11
  3508  
  3509  	__RLIMIT_MSGQUEUE = 12
  3510  
  3511  	__RLIMIT_NICE = 13
  3512  
  3513  	__RLIMIT_RTPRIO = 14
  3514  
  3515  	__RLIMIT_RTTIME = 15
  3516  
  3517  	__RLIMIT_NLIMITS = 16
  3518  	__RLIM_NLIMITS   = 16
  3519  )
  3520  
  3521  const (
  3522  	SIGEV_SIGNAL = 0
  3523  	SIGEV_NONE   = 1
  3524  	SIGEV_THREAD = 2
  3525  
  3526  	SIGEV_THREAD_ID = 4
  3527  )
  3528  
  3529  const (
  3530  	SEGV_MAPERR  = 1
  3531  	SEGV_ACCERR  = 2
  3532  	SEGV_BNDERR  = 3
  3533  	SEGV_PKUERR  = 4
  3534  	SEGV_ACCADI  = 5
  3535  	SEGV_ADIDERR = 6
  3536  	SEGV_ADIPERR = 7
  3537  )
  3538  
  3539  const (
  3540  	BUS_ADRALN    = 1
  3541  	BUS_ADRERR    = 2
  3542  	BUS_OBJERR    = 3
  3543  	BUS_MCEERR_AR = 4
  3544  	BUS_MCEERR_AO = 5
  3545  )
  3546  
  3547  const (
  3548  	CLD_EXITED    = 1
  3549  	CLD_KILLED    = 2
  3550  	CLD_DUMPED    = 3
  3551  	CLD_TRAPPED   = 4
  3552  	CLD_STOPPED   = 5
  3553  	CLD_CONTINUED = 6
  3554  )
  3555  
  3556  const (
  3557  	POLL_IN  = 1
  3558  	POLL_OUT = 2
  3559  	POLL_MSG = 3
  3560  	POLL_ERR = 4
  3561  	POLL_PRI = 5
  3562  	POLL_HUP = 6
  3563  )
  3564  
  3565  const (
  3566  	SI_ASYNCNL  = -60
  3567  	SI_DETHREAD = -7
  3568  
  3569  	SI_TKILL   = -6
  3570  	SI_SIGIO   = -5
  3571  	SI_ASYNCIO = -4
  3572  	SI_MESGQ   = -3
  3573  	SI_TIMER   = -2
  3574  	SI_QUEUE   = -1
  3575  	SI_USER    = 0
  3576  	SI_KERNEL  = 128
  3577  )
  3578  
  3579  const (
  3580  	ILL_ILLOPC   = 1
  3581  	ILL_ILLOPN   = 2
  3582  	ILL_ILLADR   = 3
  3583  	ILL_ILLTRP   = 4
  3584  	ILL_PRVOPC   = 5
  3585  	ILL_PRVREG   = 6
  3586  	ILL_COPROC   = 7
  3587  	ILL_BADSTK   = 8
  3588  	ILL_BADIADDR = 9
  3589  )
  3590  
  3591  const (
  3592  	FPE_INTDIV   = 1
  3593  	FPE_INTOVF   = 2
  3594  	FPE_FLTDIV   = 3
  3595  	FPE_FLTOVF   = 4
  3596  	FPE_FLTUND   = 5
  3597  	FPE_FLTRES   = 6
  3598  	FPE_FLTINV   = 7
  3599  	FPE_FLTSUB   = 8
  3600  	FPE_FLTUNK   = 14
  3601  	FPE_CONDTRAP = 15
  3602  )
  3603  
  3604  const (
  3605  	SS_ONSTACK = 1
  3606  	SS_DISABLE = 2
  3607  )
  3608  
  3609  const (
  3610  	P_ALL  = 0
  3611  	P_PID  = 1
  3612  	P_PGID = 2
  3613  )
  3614  
  3615  const (
  3616  	_ISupper  = 256
  3617  	_ISlower  = 512
  3618  	_ISalpha  = 1024
  3619  	_ISdigit  = 2048
  3620  	_ISxdigit = 4096
  3621  	_ISspace  = 8192
  3622  	_ISprint  = 16384
  3623  	_ISgraph  = 32768
  3624  	_ISblank  = 1
  3625  	_IScntrl  = 2
  3626  	_ISpunct  = 4
  3627  	_ISalnum  = 8
  3628  )
  3629  
  3630  const (
  3631  	DT_UNKNOWN = 0
  3632  	DT_FIFO    = 1
  3633  	DT_CHR     = 2
  3634  	DT_DIR     = 4
  3635  	DT_BLK     = 6
  3636  	DT_REG     = 8
  3637  	DT_LNK     = 10
  3638  	DT_SOCK    = 12
  3639  	DT_WHT     = 14
  3640  )
  3641  
  3642  const (
  3643  	PTHREAD_RWLOCK_PREFER_READER_NP              = 0
  3644  	PTHREAD_RWLOCK_PREFER_WRITER_NP              = 1
  3645  	PTHREAD_RWLOCK_PREFER_WRITER_NONRECURSIVE_NP = 2
  3646  	PTHREAD_RWLOCK_DEFAULT_NP                    = 0
  3647  )
  3648  
  3649  const (
  3650  	PTHREAD_INHERIT_SCHED  = 0
  3651  	PTHREAD_EXPLICIT_SCHED = 1
  3652  )
  3653  
  3654  const (
  3655  	PTHREAD_SCOPE_SYSTEM  = 0
  3656  	PTHREAD_SCOPE_PROCESS = 1
  3657  )
  3658  
  3659  const (
  3660  	PTHREAD_PROCESS_PRIVATE = 0
  3661  	PTHREAD_PROCESS_SHARED  = 1
  3662  )
  3663  
  3664  const (
  3665  	PTHREAD_CANCEL_ENABLE  = 0
  3666  	PTHREAD_CANCEL_DISABLE = 1
  3667  )
  3668  const (
  3669  	PTHREAD_CANCEL_DEFERRED     = 0
  3670  	PTHREAD_CANCEL_ASYNCHRONOUS = 1
  3671  )
  3672  
  3673  const (
  3674  	PTHREAD_CREATE_JOINABLE = 0
  3675  	PTHREAD_CREATE_DETACHED = 1
  3676  )
  3677  
  3678  const (
  3679  	PTHREAD_MUTEX_TIMED_NP      = 0
  3680  	PTHREAD_MUTEX_RECURSIVE_NP  = 1
  3681  	PTHREAD_MUTEX_ERRORCHECK_NP = 2
  3682  	PTHREAD_MUTEX_ADAPTIVE_NP   = 3
  3683  	PTHREAD_MUTEX_NORMAL        = 0
  3684  	PTHREAD_MUTEX_RECURSIVE     = 1
  3685  	PTHREAD_MUTEX_ERRORCHECK    = 2
  3686  	PTHREAD_MUTEX_DEFAULT       = 0
  3687  	PTHREAD_MUTEX_FAST_NP       = 0
  3688  )
  3689  
  3690  const (
  3691  	PTHREAD_MUTEX_STALLED    = 0
  3692  	PTHREAD_MUTEX_STALLED_NP = 0
  3693  	PTHREAD_MUTEX_ROBUST     = 1
  3694  	PTHREAD_MUTEX_ROBUST_NP  = 1
  3695  )
  3696  
  3697  const (
  3698  	PTHREAD_PRIO_NONE    = 0
  3699  	PTHREAD_PRIO_INHERIT = 1
  3700  	PTHREAD_PRIO_PROTECT = 2
  3701  )
  3702  
  3703  const (
  3704  	ITIMER_REAL = 0
  3705  
  3706  	ITIMER_VIRTUAL = 1
  3707  
  3708  	ITIMER_PROF = 2
  3709  )
  3710  
  3711  const (
  3712  	TCL_QUEUE_TAIL = 0
  3713  	TCL_QUEUE_HEAD = 1
  3714  	TCL_QUEUE_MARK = 2
  3715  )
  3716  
  3717  const (
  3718  	TCL_PATH_ABSOLUTE        = 0
  3719  	TCL_PATH_RELATIVE        = 1
  3720  	TCL_PATH_VOLUME_RELATIVE = 2
  3721  )
  3722  
  3723  const (
  3724  	TCL_INT      = 0
  3725  	TCL_DOUBLE   = 1
  3726  	TCL_EITHER   = 2
  3727  	TCL_WIDE_INT = 3
  3728  )
  3729  
  3730  type ptrdiff_t = int32
  3731  
  3732  type size_t = uint32
  3733  
  3734  type wchar_t = int32
  3735  
  3736  type va_list = uintptr
  3737  
  3738  type sqlite32 = struct {
  3739  	FpVfs                   uintptr
  3740  	FpVdbe                  uintptr
  3741  	FpDfltColl              uintptr
  3742  	Fmutex                  uintptr
  3743  	FaDb                    uintptr
  3744  	FnDb                    int32
  3745  	FmDbFlags               u32
  3746  	Fflags                  u64
  3747  	FlastRowid              i64
  3748  	FszMmap                 i64
  3749  	FnSchemaLock            u32
  3750  	FopenFlags              uint32
  3751  	FerrCode                int32
  3752  	FerrByteOffset          int32
  3753  	FerrMask                int32
  3754  	FiSysErrno              int32
  3755  	FdbOptFlags             u32
  3756  	Fenc                    u8
  3757  	FautoCommit             u8
  3758  	Ftemp_store             u8
  3759  	FmallocFailed           u8
  3760  	FbBenignMalloc          u8
  3761  	FdfltLockMode           u8
  3762  	FnextAutovac            int8
  3763  	FsuppressErr            u8
  3764  	FvtabOnConflict         u8
  3765  	FisTransactionSavepoint u8
  3766  	FmTrace                 u8
  3767  	FnoSharedCache          u8
  3768  	FnSqlExec               u8
  3769  	FeOpenState             u8
  3770  	F__ccgo_pad1            [2]byte
  3771  	FnextPagesize           int32
  3772  	FnChange                i64
  3773  	FnTotalChange           i64
  3774  	FaLimit                 [12]int32
  3775  	FnMaxSorterMmap         int32
  3776  	Finit                   struct {
  3777  		FnewTnum       Pgno
  3778  		FiDb           u8
  3779  		Fbusy          u8
  3780  		F__ccgo_pad1   [2]byte
  3781  		ForphanTrigger uint8
  3782  		F__ccgo_pad2   [3]byte
  3783  		FazInit        uintptr
  3784  	}
  3785  	FnVdbeActive        int32
  3786  	FnVdbeRead          int32
  3787  	FnVdbeWrite         int32
  3788  	FnVdbeExec          int32
  3789  	FnVDestroy          int32
  3790  	FnExtension         int32
  3791  	FaExtension         uintptr
  3792  	Ftrace              struct{ FxLegacy uintptr }
  3793  	FpTraceArg          uintptr
  3794  	FxProfile           uintptr
  3795  	FpProfileArg        uintptr
  3796  	FpCommitArg         uintptr
  3797  	FxCommitCallback    uintptr
  3798  	FpRollbackArg       uintptr
  3799  	FxRollbackCallback  uintptr
  3800  	FpUpdateArg         uintptr
  3801  	FxUpdateCallback    uintptr
  3802  	FpAutovacPagesArg   uintptr
  3803  	FxAutovacDestr      uintptr
  3804  	FxAutovacPages      uintptr
  3805  	FpParse             uintptr
  3806  	FpPreUpdateArg      uintptr
  3807  	FxPreUpdateCallback uintptr
  3808  	FpPreUpdate         uintptr
  3809  	FxWalCallback       uintptr
  3810  	FpWalArg            uintptr
  3811  	FxCollNeeded        uintptr
  3812  	FxCollNeeded16      uintptr
  3813  	FpCollNeededArg     uintptr
  3814  	FpErr               uintptr
  3815  	Fu1                 struct {
  3816  		FisInterrupted int32
  3817  		F__ccgo_pad1   [4]byte
  3818  	}
  3819  	Flookaside           Lookaside
  3820  	FxAuth               sqlite3_xauth
  3821  	FpAuthArg            uintptr
  3822  	FxProgress           uintptr
  3823  	FpProgressArg        uintptr
  3824  	FnProgressOps        uint32
  3825  	FnVTrans             int32
  3826  	FaModule             Hash
  3827  	FpVtabCtx            uintptr
  3828  	FaVTrans             uintptr
  3829  	FpDisconnect         uintptr
  3830  	FaFunc               Hash
  3831  	FaCollSeq            Hash
  3832  	FbusyHandler         BusyHandler
  3833  	FaDbStatic           [2]Db
  3834  	FpSavepoint          uintptr
  3835  	FnAnalysisLimit      int32
  3836  	FbusyTimeout         int32
  3837  	FnSavepoint          int32
  3838  	FnStatement          int32
  3839  	FnDeferredCons       i64
  3840  	FnDeferredImmCons    i64
  3841  	FpnBytesFreed        uintptr
  3842  	FpBlockingConnection uintptr
  3843  	FpUnlockConnection   uintptr
  3844  	FpUnlockArg          uintptr
  3845  	FxUnlockNotify       uintptr
  3846  	FpNextBlocked        uintptr
  3847  }
  3848  
  3849  type sqlite_int64 = int64
  3850  type sqlite_uint64 = uint64
  3851  type sqlite3_int64 = sqlite_int64
  3852  type sqlite3_uint64 = sqlite_uint64
  3853  
  3854  type sqlite3_callback = uintptr
  3855  
  3856  type sqlite3_file1 = struct{ FpMethods uintptr }
  3857  
  3858  type sqlite3_file = sqlite3_file1
  3859  type sqlite3_io_methods1 = struct {
  3860  	FiVersion               int32
  3861  	FxClose                 uintptr
  3862  	FxRead                  uintptr
  3863  	FxWrite                 uintptr
  3864  	FxTruncate              uintptr
  3865  	FxSync                  uintptr
  3866  	FxFileSize              uintptr
  3867  	FxLock                  uintptr
  3868  	FxUnlock                uintptr
  3869  	FxCheckReservedLock     uintptr
  3870  	FxFileControl           uintptr
  3871  	FxSectorSize            uintptr
  3872  	FxDeviceCharacteristics uintptr
  3873  	FxShmMap                uintptr
  3874  	FxShmLock               uintptr
  3875  	FxShmBarrier            uintptr
  3876  	FxShmUnmap              uintptr
  3877  	FxFetch                 uintptr
  3878  	FxUnfetch               uintptr
  3879  }
  3880  
  3881  type sqlite3_io_methods = sqlite3_io_methods1
  3882  
  3883  type sqlite3_mutex1 = struct {
  3884  	FpReal uintptr
  3885  	FeType int32
  3886  }
  3887  
  3888  type sqlite3_api_routines1 = struct {
  3889  	Faggregate_context      uintptr
  3890  	Faggregate_count        uintptr
  3891  	Fbind_blob              uintptr
  3892  	Fbind_double            uintptr
  3893  	Fbind_int               uintptr
  3894  	Fbind_int64             uintptr
  3895  	Fbind_null              uintptr
  3896  	Fbind_parameter_count   uintptr
  3897  	Fbind_parameter_index   uintptr
  3898  	Fbind_parameter_name    uintptr
  3899  	Fbind_text              uintptr
  3900  	Fbind_text16            uintptr
  3901  	Fbind_value             uintptr
  3902  	Fbusy_handler           uintptr
  3903  	Fbusy_timeout           uintptr
  3904  	Fchanges                uintptr
  3905  	Fclose                  uintptr
  3906  	Fcollation_needed       uintptr
  3907  	Fcollation_needed16     uintptr
  3908  	Fcolumn_blob            uintptr
  3909  	Fcolumn_bytes           uintptr
  3910  	Fcolumn_bytes16         uintptr
  3911  	Fcolumn_count           uintptr
  3912  	Fcolumn_database_name   uintptr
  3913  	Fcolumn_database_name16 uintptr
  3914  	Fcolumn_decltype        uintptr
  3915  	Fcolumn_decltype16      uintptr
  3916  	Fcolumn_double          uintptr
  3917  	Fcolumn_int             uintptr
  3918  	Fcolumn_int64           uintptr
  3919  	Fcolumn_name            uintptr
  3920  	Fcolumn_name16          uintptr
  3921  	Fcolumn_origin_name     uintptr
  3922  	Fcolumn_origin_name16   uintptr
  3923  	Fcolumn_table_name      uintptr
  3924  	Fcolumn_table_name16    uintptr
  3925  	Fcolumn_text            uintptr
  3926  	Fcolumn_text16          uintptr
  3927  	Fcolumn_type            uintptr
  3928  	Fcolumn_value           uintptr
  3929  	Fcommit_hook            uintptr
  3930  	Fcomplete               uintptr
  3931  	Fcomplete16             uintptr
  3932  	Fcreate_collation       uintptr
  3933  	Fcreate_collation16     uintptr
  3934  	Fcreate_function        uintptr
  3935  	Fcreate_function16      uintptr
  3936  	Fcreate_module          uintptr
  3937  	Fdata_count             uintptr
  3938  	Fdb_handle              uintptr
  3939  	Fdeclare_vtab           uintptr
  3940  	Fenable_shared_cache    uintptr
  3941  	Ferrcode                uintptr
  3942  	Ferrmsg                 uintptr
  3943  	Ferrmsg16               uintptr
  3944  	Fexec                   uintptr
  3945  	Fexpired                uintptr
  3946  	Ffinalize               uintptr
  3947  	Ffree                   uintptr
  3948  	Ffree_table             uintptr
  3949  	Fget_autocommit         uintptr
  3950  	Fget_auxdata            uintptr
  3951  	Fget_table              uintptr
  3952  	Fglobal_recover         uintptr
  3953  	Finterruptx             uintptr
  3954  	Flast_insert_rowid      uintptr
  3955  	Flibversion             uintptr
  3956  	Flibversion_number      uintptr
  3957  	Fmalloc                 uintptr
  3958  	Fmprintf                uintptr
  3959  	Fopen                   uintptr
  3960  	Fopen16                 uintptr
  3961  	Fprepare                uintptr
  3962  	Fprepare16              uintptr
  3963  	Fprofile                uintptr
  3964  	Fprogress_handler       uintptr
  3965  	Frealloc                uintptr
  3966  	Freset                  uintptr
  3967  	Fresult_blob            uintptr
  3968  	Fresult_double          uintptr
  3969  	Fresult_error           uintptr
  3970  	Fresult_error16         uintptr
  3971  	Fresult_int             uintptr
  3972  	Fresult_int64           uintptr
  3973  	Fresult_null            uintptr
  3974  	Fresult_text            uintptr
  3975  	Fresult_text16          uintptr
  3976  	Fresult_text16be        uintptr
  3977  	Fresult_text16le        uintptr
  3978  	Fresult_value           uintptr
  3979  	Frollback_hook          uintptr
  3980  	Fset_authorizer         uintptr
  3981  	Fset_auxdata            uintptr
  3982  	Fxsnprintf              uintptr
  3983  	Fstep                   uintptr
  3984  	Ftable_column_metadata  uintptr
  3985  	Fthread_cleanup         uintptr
  3986  	Ftotal_changes          uintptr
  3987  	Ftrace                  uintptr
  3988  	Ftransfer_bindings      uintptr
  3989  	Fupdate_hook            uintptr
  3990  	Fuser_data              uintptr
  3991  	Fvalue_blob             uintptr
  3992  	Fvalue_bytes            uintptr
  3993  	Fvalue_bytes16          uintptr
  3994  	Fvalue_double           uintptr
  3995  	Fvalue_int              uintptr
  3996  	Fvalue_int64            uintptr
  3997  	Fvalue_numeric_type     uintptr
  3998  	Fvalue_text             uintptr
  3999  	Fvalue_text16           uintptr
  4000  	Fvalue_text16be         uintptr
  4001  	Fvalue_text16le         uintptr
  4002  	Fvalue_type             uintptr
  4003  	Fvmprintf               uintptr
  4004  	Foverload_function      uintptr
  4005  	Fprepare_v2             uintptr
  4006  	Fprepare16_v2           uintptr
  4007  	Fclear_bindings         uintptr
  4008  	Fcreate_module_v2       uintptr
  4009  	Fbind_zeroblob          uintptr
  4010  	Fblob_bytes             uintptr
  4011  	Fblob_close             uintptr
  4012  	Fblob_open              uintptr
  4013  	Fblob_read              uintptr
  4014  	Fblob_write             uintptr
  4015  	Fcreate_collation_v2    uintptr
  4016  	Ffile_control           uintptr
  4017  	Fmemory_highwater       uintptr
  4018  	Fmemory_used            uintptr
  4019  	Fmutex_alloc            uintptr
  4020  	Fmutex_enter            uintptr
  4021  	Fmutex_free             uintptr
  4022  	Fmutex_leave            uintptr
  4023  	Fmutex_try              uintptr
  4024  	Fopen_v2                uintptr
  4025  	Frelease_memory         uintptr
  4026  	Fresult_error_nomem     uintptr
  4027  	Fresult_error_toobig    uintptr
  4028  	Fsleep                  uintptr
  4029  	Fsoft_heap_limit        uintptr
  4030  	Fvfs_find               uintptr
  4031  	Fvfs_register           uintptr
  4032  	Fvfs_unregister         uintptr
  4033  	Fxthreadsafe            uintptr
  4034  	Fresult_zeroblob        uintptr
  4035  	Fresult_error_code      uintptr
  4036  	Ftest_control           uintptr
  4037  	Frandomness             uintptr
  4038  	Fcontext_db_handle      uintptr
  4039  	Fextended_result_codes  uintptr
  4040  	Flimit                  uintptr
  4041  	Fnext_stmt              uintptr
  4042  	Fsql                    uintptr
  4043  	Fstatus                 uintptr
  4044  	Fbackup_finish          uintptr
  4045  	Fbackup_init            uintptr
  4046  	Fbackup_pagecount       uintptr
  4047  	Fbackup_remaining       uintptr
  4048  	Fbackup_step            uintptr
  4049  	Fcompileoption_get      uintptr
  4050  	Fcompileoption_used     uintptr
  4051  	Fcreate_function_v2     uintptr
  4052  	Fdb_config              uintptr
  4053  	Fdb_mutex               uintptr
  4054  	Fdb_status              uintptr
  4055  	Fextended_errcode       uintptr
  4056  	Flog                    uintptr
  4057  	Fsoft_heap_limit64      uintptr
  4058  	Fsourceid               uintptr
  4059  	Fstmt_status            uintptr
  4060  	Fstrnicmp               uintptr
  4061  	Funlock_notify          uintptr
  4062  	Fwal_autocheckpoint     uintptr
  4063  	Fwal_checkpoint         uintptr
  4064  	Fwal_hook               uintptr
  4065  	Fblob_reopen            uintptr
  4066  	Fvtab_config            uintptr
  4067  	Fvtab_on_conflict       uintptr
  4068  	Fclose_v2               uintptr
  4069  	Fdb_filename            uintptr
  4070  	Fdb_readonly            uintptr
  4071  	Fdb_release_memory      uintptr
  4072  	Ferrstr                 uintptr
  4073  	Fstmt_busy              uintptr
  4074  	Fstmt_readonly          uintptr
  4075  	Fstricmp                uintptr
  4076  	Furi_boolean            uintptr
  4077  	Furi_int64              uintptr
  4078  	Furi_parameter          uintptr
  4079  	Fxvsnprintf             uintptr
  4080  	Fwal_checkpoint_v2      uintptr
  4081  	Fauto_extension         uintptr
  4082  	Fbind_blob64            uintptr
  4083  	Fbind_text64            uintptr
  4084  	Fcancel_auto_extension  uintptr
  4085  	Fload_extension         uintptr
  4086  	Fmalloc64               uintptr
  4087  	Fmsize                  uintptr
  4088  	Frealloc64              uintptr
  4089  	Freset_auto_extension   uintptr
  4090  	Fresult_blob64          uintptr
  4091  	Fresult_text64          uintptr
  4092  	Fstrglob                uintptr
  4093  	Fvalue_dup              uintptr
  4094  	Fvalue_free             uintptr
  4095  	Fresult_zeroblob64      uintptr
  4096  	Fbind_zeroblob64        uintptr
  4097  	Fvalue_subtype          uintptr
  4098  	Fresult_subtype         uintptr
  4099  	Fstatus64               uintptr
  4100  	Fstrlike                uintptr
  4101  	Fdb_cacheflush          uintptr
  4102  	Fsystem_errno           uintptr
  4103  	Ftrace_v2               uintptr
  4104  	Fexpanded_sql           uintptr
  4105  	Fset_last_insert_rowid  uintptr
  4106  	Fprepare_v3             uintptr
  4107  	Fprepare16_v3           uintptr
  4108  	Fbind_pointer           uintptr
  4109  	Fresult_pointer         uintptr
  4110  	Fvalue_pointer          uintptr
  4111  	Fvtab_nochange          uintptr
  4112  	Fvalue_nochange         uintptr
  4113  	Fvtab_collation         uintptr
  4114  	Fkeyword_count          uintptr
  4115  	Fkeyword_name           uintptr
  4116  	Fkeyword_check          uintptr
  4117  	Fstr_new                uintptr
  4118  	Fstr_finish             uintptr
  4119  	Fstr_appendf            uintptr
  4120  	Fstr_vappendf           uintptr
  4121  	Fstr_append             uintptr
  4122  	Fstr_appendall          uintptr
  4123  	Fstr_appendchar         uintptr
  4124  	Fstr_reset              uintptr
  4125  	Fstr_errcode            uintptr
  4126  	Fstr_length             uintptr
  4127  	Fstr_value              uintptr
  4128  	Fcreate_window_function uintptr
  4129  	Fnormalized_sql         uintptr
  4130  	Fstmt_isexplain         uintptr
  4131  	Fvalue_frombind         uintptr
  4132  	Fdrop_modules           uintptr
  4133  	Fhard_heap_limit64      uintptr
  4134  	Furi_key                uintptr
  4135  	Ffilename_database      uintptr
  4136  	Ffilename_journal       uintptr
  4137  	Ffilename_wal           uintptr
  4138  	Fcreate_filename        uintptr
  4139  	Ffree_filename          uintptr
  4140  	Fdatabase_file_object   uintptr
  4141  	Ftxn_state              uintptr
  4142  	Fchanges64              uintptr
  4143  	Ftotal_changes64        uintptr
  4144  	Fautovacuum_pages       uintptr
  4145  	Ferror_offset           uintptr
  4146  	Fvtab_rhs_value         uintptr
  4147  	Fvtab_distinct          uintptr
  4148  	Fvtab_in                uintptr
  4149  	Fvtab_in_first          uintptr
  4150  	Fvtab_in_next           uintptr
  4151  	Fdeserialize            uintptr
  4152  	Fserialize              uintptr
  4153  	Fdb_name                uintptr
  4154  }
  4155  
  4156  type sqlite3_vfs1 = struct {
  4157  	FiVersion          int32
  4158  	FszOsFile          int32
  4159  	FmxPathname        int32
  4160  	FpNext             uintptr
  4161  	FzName             uintptr
  4162  	FpAppData          uintptr
  4163  	FxOpen             uintptr
  4164  	FxDelete           uintptr
  4165  	FxAccess           uintptr
  4166  	FxFullPathname     uintptr
  4167  	FxDlOpen           uintptr
  4168  	FxDlError          uintptr
  4169  	FxDlSym            uintptr
  4170  	FxDlClose          uintptr
  4171  	FxRandomness       uintptr
  4172  	FxSleep            uintptr
  4173  	FxCurrentTime      uintptr
  4174  	FxGetLastError     uintptr
  4175  	FxCurrentTimeInt64 uintptr
  4176  	FxSetSystemCall    uintptr
  4177  	FxGetSystemCall    uintptr
  4178  	FxNextSystemCall   uintptr
  4179  }
  4180  
  4181  type sqlite3_vfs = sqlite3_vfs1
  4182  type sqlite3_syscall_ptr = uintptr
  4183  
  4184  type sqlite3_mem_methods1 = struct {
  4185  	FxMalloc   uintptr
  4186  	FxFree     uintptr
  4187  	FxRealloc  uintptr
  4188  	FxSize     uintptr
  4189  	FxRoundup  uintptr
  4190  	FxInit     uintptr
  4191  	FxShutdown uintptr
  4192  	FpAppData  uintptr
  4193  }
  4194  
  4195  type sqlite3_mem_methods = sqlite3_mem_methods1
  4196  
  4197  type sqlite3_value1 = struct {
  4198  	Fu        struct{ Fr float64 }
  4199  	Fz        uintptr
  4200  	Fn        int32
  4201  	Fflags    u16
  4202  	Fenc      u8
  4203  	FeSubtype u8
  4204  	Fdb       uintptr
  4205  	FszMalloc int32
  4206  	FuTemp    u32
  4207  	FzMalloc  uintptr
  4208  	FxDel     uintptr
  4209  }
  4210  
  4211  type sqlite3_context1 = struct {
  4212  	FpOut        uintptr
  4213  	FpFunc       uintptr
  4214  	FpMem        uintptr
  4215  	FpVdbe       uintptr
  4216  	FiOp         int32
  4217  	FisError     int32
  4218  	Fenc         u8
  4219  	FskipFlag    u8
  4220  	Fargc        u8
  4221  	F__ccgo_pad1 [1]byte
  4222  	Fargv        [1]uintptr
  4223  }
  4224  
  4225  type sqlite3_destructor_type = uintptr
  4226  
  4227  type sqlite3_vtab1 = struct {
  4228  	FpModule uintptr
  4229  	FnRef    int32
  4230  	FzErrMsg uintptr
  4231  }
  4232  
  4233  type sqlite3_vtab = sqlite3_vtab1
  4234  type sqlite3_index_info1 = struct {
  4235  	FnConstraint      int32
  4236  	FaConstraint      uintptr
  4237  	FnOrderBy         int32
  4238  	FaOrderBy         uintptr
  4239  	FaConstraintUsage uintptr
  4240  	FidxNum           int32
  4241  	FidxStr           uintptr
  4242  	FneedToFreeIdxStr int32
  4243  	ForderByConsumed  int32
  4244  	FestimatedCost    float64
  4245  	FestimatedRows    sqlite3_int64
  4246  	FidxFlags         int32
  4247  	FcolUsed          sqlite3_uint64
  4248  }
  4249  
  4250  type sqlite3_index_info = sqlite3_index_info1
  4251  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  4252  
  4253  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  4254  type sqlite3_module1 = struct {
  4255  	FiVersion      int32
  4256  	FxCreate       uintptr
  4257  	FxConnect      uintptr
  4258  	FxBestIndex    uintptr
  4259  	FxDisconnect   uintptr
  4260  	FxDestroy      uintptr
  4261  	FxOpen         uintptr
  4262  	FxClose        uintptr
  4263  	FxFilter       uintptr
  4264  	FxNext         uintptr
  4265  	FxEof          uintptr
  4266  	FxColumn       uintptr
  4267  	FxRowid        uintptr
  4268  	FxUpdate       uintptr
  4269  	FxBegin        uintptr
  4270  	FxSync         uintptr
  4271  	FxCommit       uintptr
  4272  	FxRollback     uintptr
  4273  	FxFindFunction uintptr
  4274  	FxRename       uintptr
  4275  	FxSavepoint    uintptr
  4276  	FxRelease      uintptr
  4277  	FxRollbackTo   uintptr
  4278  	FxShadowName   uintptr
  4279  }
  4280  
  4281  type sqlite3_module = sqlite3_module1
  4282  
  4283  type sqlite3_index_constraint = struct {
  4284  	FiColumn     int32
  4285  	Fop          uint8
  4286  	Fusable      uint8
  4287  	F__ccgo_pad1 [2]byte
  4288  	FiTermOffset int32
  4289  }
  4290  
  4291  type sqlite3_index_orderby = struct {
  4292  	FiColumn     int32
  4293  	Fdesc        uint8
  4294  	F__ccgo_pad1 [3]byte
  4295  }
  4296  
  4297  type sqlite3_index_constraint_usage = struct {
  4298  	FargvIndex   int32
  4299  	Fomit        uint8
  4300  	F__ccgo_pad1 [3]byte
  4301  }
  4302  
  4303  type sqlite3_mutex_methods1 = struct {
  4304  	FxMutexInit    uintptr
  4305  	FxMutexEnd     uintptr
  4306  	FxMutexAlloc   uintptr
  4307  	FxMutexFree    uintptr
  4308  	FxMutexEnter   uintptr
  4309  	FxMutexTry     uintptr
  4310  	FxMutexLeave   uintptr
  4311  	FxMutexHeld    uintptr
  4312  	FxMutexNotheld uintptr
  4313  }
  4314  
  4315  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  4316  
  4317  type sqlite3_str1 = struct {
  4318  	Fdb          uintptr
  4319  	FzText       uintptr
  4320  	FnAlloc      u32
  4321  	FmxAlloc     u32
  4322  	FnChar       u32
  4323  	FaccError    u8
  4324  	FprintfFlags u8
  4325  	F__ccgo_pad1 [2]byte
  4326  }
  4327  
  4328  type sqlite3_pcache_page1 = struct {
  4329  	FpBuf   uintptr
  4330  	FpExtra uintptr
  4331  }
  4332  
  4333  type sqlite3_pcache_page = sqlite3_pcache_page1
  4334  
  4335  type sqlite3_pcache_methods21 = struct {
  4336  	FiVersion   int32
  4337  	FpArg       uintptr
  4338  	FxInit      uintptr
  4339  	FxShutdown  uintptr
  4340  	FxCreate    uintptr
  4341  	FxCachesize uintptr
  4342  	FxPagecount uintptr
  4343  	FxFetch     uintptr
  4344  	FxUnpin     uintptr
  4345  	FxRekey     uintptr
  4346  	FxTruncate  uintptr
  4347  	FxDestroy   uintptr
  4348  	FxShrink    uintptr
  4349  }
  4350  
  4351  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  4352  
  4353  type sqlite3_pcache_methods1 = struct {
  4354  	FpArg       uintptr
  4355  	FxInit      uintptr
  4356  	FxShutdown  uintptr
  4357  	FxCreate    uintptr
  4358  	FxCachesize uintptr
  4359  	FxPagecount uintptr
  4360  	FxFetch     uintptr
  4361  	FxUnpin     uintptr
  4362  	FxRekey     uintptr
  4363  	FxTruncate  uintptr
  4364  	FxDestroy   uintptr
  4365  }
  4366  
  4367  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  4368  
  4369  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  4370  
  4371  type sqlite3_snapshot = sqlite3_snapshot1
  4372  
  4373  type sqlite3_rtree_geometry1 = struct {
  4374  	FpContext uintptr
  4375  	FnParam   int32
  4376  	FaParam   uintptr
  4377  	FpUser    uintptr
  4378  	FxDelUser uintptr
  4379  }
  4380  
  4381  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  4382  type sqlite3_rtree_query_info1 = struct {
  4383  	FpContext      uintptr
  4384  	FnParam        int32
  4385  	FaParam        uintptr
  4386  	FpUser         uintptr
  4387  	FxDelUser      uintptr
  4388  	FaCoord        uintptr
  4389  	FanQueue       uintptr
  4390  	FnCoord        int32
  4391  	FiLevel        int32
  4392  	FmxLevel       int32
  4393  	FiRowid        sqlite3_int64
  4394  	FrParentScore  sqlite3_rtree_dbl
  4395  	FeParentWithin int32
  4396  	FeWithin       int32
  4397  	FrScore        sqlite3_rtree_dbl
  4398  	FapSqlParam    uintptr
  4399  }
  4400  
  4401  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  4402  
  4403  type sqlite3_rtree_dbl = float64
  4404  
  4405  type Fts5ExtensionApi1 = struct {
  4406  	FiVersion           int32
  4407  	FxUserData          uintptr
  4408  	FxColumnCount       uintptr
  4409  	FxRowCount          uintptr
  4410  	FxColumnTotalSize   uintptr
  4411  	FxTokenize          uintptr
  4412  	FxPhraseCount       uintptr
  4413  	FxPhraseSize        uintptr
  4414  	FxInstCount         uintptr
  4415  	FxInst              uintptr
  4416  	FxRowid             uintptr
  4417  	FxColumnText        uintptr
  4418  	FxColumnSize        uintptr
  4419  	FxQueryPhrase       uintptr
  4420  	FxSetAuxdata        uintptr
  4421  	FxGetAuxdata        uintptr
  4422  	FxPhraseFirst       uintptr
  4423  	FxPhraseNext        uintptr
  4424  	FxPhraseFirstColumn uintptr
  4425  	FxPhraseNextColumn  uintptr
  4426  }
  4427  
  4428  type Fts5ExtensionApi = Fts5ExtensionApi1
  4429  type Fts5PhraseIter1 = struct {
  4430  	Fa uintptr
  4431  	Fb uintptr
  4432  }
  4433  
  4434  type Fts5PhraseIter = Fts5PhraseIter1
  4435  
  4436  type fts5_extension_function = uintptr
  4437  type fts5_tokenizer1 = struct {
  4438  	FxCreate   uintptr
  4439  	FxDelete   uintptr
  4440  	FxTokenize uintptr
  4441  }
  4442  
  4443  type fts5_tokenizer = fts5_tokenizer1
  4444  
  4445  type fts5_api1 = struct {
  4446  	FiVersion         int32
  4447  	FxCreateTokenizer uintptr
  4448  	FxFindTokenizer   uintptr
  4449  	FxCreateFunction  uintptr
  4450  }
  4451  
  4452  type fts5_api = fts5_api1
  4453  
  4454  type sqlite3expert1 = struct {
  4455  	FiSample     int32
  4456  	Fdb          uintptr
  4457  	Fdbm         uintptr
  4458  	Fdbv         uintptr
  4459  	FpTable      uintptr
  4460  	FpScan       uintptr
  4461  	FpWrite      uintptr
  4462  	FpStatement  uintptr
  4463  	FbRun        int32
  4464  	FpzErrmsg    uintptr
  4465  	Frc          int32
  4466  	FhIdx        IdxHash
  4467  	FzCandidates uintptr
  4468  }
  4469  
  4470  type sqlite3expert = sqlite3expert1
  4471  
  4472  type __locale_struct = struct {
  4473  	F__locales       [13]uintptr
  4474  	F__ctype_b       uintptr
  4475  	F__ctype_tolower uintptr
  4476  	F__ctype_toupper uintptr
  4477  	F__names         [13]uintptr
  4478  }
  4479  
  4480  type locale_t = uintptr
  4481  
  4482  type _G_fpos_t = struct {
  4483  	F__pos   int32
  4484  	F__state struct {
  4485  		F__count int32
  4486  		F__value struct{ F__wch uint32 }
  4487  	}
  4488  }
  4489  
  4490  type _G_fpos64_t = struct {
  4491  	F__pos   int64
  4492  	F__state struct {
  4493  		F__count int32
  4494  		F__value struct{ F__wch uint32 }
  4495  	}
  4496  }
  4497  
  4498  type _IO_FILE = struct {
  4499  	F_flags          int32
  4500  	F_IO_read_ptr    uintptr
  4501  	F_IO_read_end    uintptr
  4502  	F_IO_read_base   uintptr
  4503  	F_IO_write_base  uintptr
  4504  	F_IO_write_ptr   uintptr
  4505  	F_IO_write_end   uintptr
  4506  	F_IO_buf_base    uintptr
  4507  	F_IO_buf_end     uintptr
  4508  	F_IO_save_base   uintptr
  4509  	F_IO_backup_base uintptr
  4510  	F_IO_save_end    uintptr
  4511  	F_markers        uintptr
  4512  	F_chain          uintptr
  4513  	F_fileno         int32
  4514  	F_flags2         int32
  4515  	F_old_offset     int32
  4516  	F_cur_column     uint16
  4517  	F_vtable_offset  int8
  4518  	F_shortbuf       [1]int8
  4519  	F_lock           uintptr
  4520  	F_offset         int64
  4521  	F_codecvt        uintptr
  4522  	F_wide_data      uintptr
  4523  	F_freeres_list   uintptr
  4524  	F_freeres_buf    uintptr
  4525  	F__pad5          size_t
  4526  	F_mode           int32
  4527  	F_unused2        [40]int8
  4528  }
  4529  
  4530  type FILE = _IO_FILE
  4531  
  4532  type off_t = int64
  4533  
  4534  type ssize_t = int32
  4535  
  4536  type fpos_t = _G_fpos64_t
  4537  
  4538  type i64 = sqlite3_int64
  4539  type u64 = sqlite3_uint64
  4540  
  4541  type IdxColumn1 = struct {
  4542  	FzName uintptr
  4543  	FzColl uintptr
  4544  	FiPk   int32
  4545  }
  4546  
  4547  type IdxColumn = IdxColumn1
  4548  type IdxConstraint1 = struct {
  4549  	FzColl  uintptr
  4550  	FbRange int32
  4551  	FiCol   int32
  4552  	FbFlag  int32
  4553  	FbDesc  int32
  4554  	FpNext  uintptr
  4555  	FpLink  uintptr
  4556  }
  4557  
  4558  type IdxConstraint = IdxConstraint1
  4559  type IdxScan1 = struct {
  4560  	FpTab      uintptr
  4561  	FiDb       int32
  4562  	Fcovering  i64
  4563  	FpOrder    uintptr
  4564  	FpEq       uintptr
  4565  	FpRange    uintptr
  4566  	FpNextScan uintptr
  4567  }
  4568  
  4569  type IdxScan = IdxScan1
  4570  type IdxStatement1 = struct {
  4571  	FiId   int32
  4572  	FzSql  uintptr
  4573  	FzIdx  uintptr
  4574  	FzEQP  uintptr
  4575  	FpNext uintptr
  4576  }
  4577  
  4578  type IdxStatement = IdxStatement1
  4579  type IdxTable1 = struct {
  4580  	FnCol  int32
  4581  	FzName uintptr
  4582  	FaCol  uintptr
  4583  	FpNext uintptr
  4584  }
  4585  
  4586  type IdxTable = IdxTable1
  4587  type IdxWrite1 = struct {
  4588  	FpTab  uintptr
  4589  	FeOp   int32
  4590  	FpNext uintptr
  4591  }
  4592  
  4593  type IdxWrite = IdxWrite1
  4594  
  4595  type IdxHashEntry1 = struct {
  4596  	FzKey      uintptr
  4597  	FzVal      uintptr
  4598  	FzVal2     uintptr
  4599  	FpHashNext uintptr
  4600  	FpNext     uintptr
  4601  }
  4602  
  4603  type IdxHashEntry = IdxHashEntry1
  4604  type IdxHash1 = struct {
  4605  	FpFirst uintptr
  4606  	FaHash  [1023]uintptr
  4607  }
  4608  
  4609  type IdxHash = IdxHash1
  4610  
  4611  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4612  	var pRet uintptr
  4613  
  4614  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4615  	if pRet != 0 {
  4616  		libc.Xmemset(tls, pRet, 0, uint32(nByte))
  4617  	} else {
  4618  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4619  	}
  4620  	return pRet
  4621  }
  4622  
  4623  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4624  	libc.Xmemset(tls, pHash, 0, uint32(unsafe.Sizeof(IdxHash{})))
  4625  }
  4626  
  4627  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4628  	var i int32
  4629  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4630  		var pEntry uintptr
  4631  		var pNext uintptr
  4632  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 4 + uintptr(i)*4)); pEntry != 0; pEntry = pNext {
  4633  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4634  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4635  			sqlite3.Xsqlite3_free(tls, pEntry)
  4636  		}
  4637  	}
  4638  	libc.Xmemset(tls, pHash, 0, uint32(unsafe.Sizeof(IdxHash{})))
  4639  }
  4640  
  4641  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  4642  	var ret uint32 = uint32(0)
  4643  	var i int32
  4644  	for i = 0; i < n; i++ {
  4645  		ret = ret + (ret<<3 + uint32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i))))))
  4646  	}
  4647  	return int32(ret % uint32(IDX_HASH_SIZE))
  4648  }
  4649  
  4650  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  4651  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  4652  	var iHash int32 = idxHashString(tls, zKey, nKey)
  4653  	var nVal int32 = func() int32 {
  4654  		if zVal != 0 {
  4655  			return int32(libc.Xstrlen(tls, zVal))
  4656  		}
  4657  		return 0
  4658  	}()
  4659  	var pEntry uintptr
  4660  
  4661  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 4 + uintptr(iHash)*4)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4662  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint32(nKey)) {
  4663  			return 1
  4664  		}
  4665  	}
  4666  	pEntry = idxMalloc(tls, pRc, int32(uint32(unsafe.Sizeof(IdxHashEntry{}))+uint32(nKey)+uint32(1)+uint32(nVal)+uint32(1)))
  4667  	if pEntry != 0 {
  4668  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*20
  4669  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint32(nKey))
  4670  		if zVal != 0 {
  4671  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  4672  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint32(nVal))
  4673  		}
  4674  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 4 + uintptr(iHash)*4))
  4675  		*(*uintptr)(unsafe.Pointer(pHash + 4 + uintptr(iHash)*4)) = pEntry
  4676  
  4677  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  4678  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  4679  	}
  4680  	return 0
  4681  }
  4682  
  4683  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4684  	var iHash int32
  4685  	var pEntry uintptr
  4686  	if nKey < 0 {
  4687  		nKey = int32(libc.Xstrlen(tls, zKey))
  4688  	}
  4689  	iHash = idxHashString(tls, zKey, nKey)
  4690  
  4691  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 4 + uintptr(iHash)*4)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4692  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint32(nKey)) {
  4693  			return pEntry
  4694  		}
  4695  	}
  4696  	return uintptr(0)
  4697  }
  4698  
  4699  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4700  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  4701  	if pEntry != 0 {
  4702  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  4703  	}
  4704  	return uintptr(0)
  4705  }
  4706  
  4707  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  4708  	var pNew uintptr
  4709  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  4710  
  4711  	pNew = idxMalloc(tls, pRc, int32(uint32(unsafe.Sizeof(IdxConstraint{}))*uint32(nColl)+uint32(1)))
  4712  	if pNew != 0 {
  4713  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*28
  4714  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint32(nColl+1))
  4715  	}
  4716  	return pNew
  4717  }
  4718  
  4719  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  4720  	bp := tls.Alloc(8)
  4721  	defer tls.Free(8)
  4722  
  4723  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  4724  }
  4725  
  4726  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  4727  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  4728  	if rc != SQLITE_OK {
  4729  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  4730  		idxDatabaseError(tls, db, pzErrmsg)
  4731  	}
  4732  	return rc
  4733  }
  4734  
  4735  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  4736  	var ap va_list
  4737  	_ = ap
  4738  	var rc int32
  4739  	var zSql uintptr
  4740  	ap = va
  4741  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4742  	if zSql == uintptr(0) {
  4743  		rc = SQLITE_NOMEM
  4744  	} else {
  4745  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  4746  		sqlite3.Xsqlite3_free(tls, zSql)
  4747  	}
  4748  	_ = ap
  4749  	return rc
  4750  }
  4751  
  4752  type ExpertVtab1 = struct {
  4753  	Fbase    sqlite3_vtab
  4754  	FpTab    uintptr
  4755  	FpExpert uintptr
  4756  }
  4757  
  4758  type ExpertVtab = ExpertVtab1
  4759  
  4760  type ExpertCsr1 = struct {
  4761  	Fbase  sqlite3_vtab_cursor
  4762  	FpData uintptr
  4763  }
  4764  
  4765  type ExpertCsr = ExpertCsr1
  4766  
  4767  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  4768  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  4769  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  4770  
  4771  	if zRet != 0 {
  4772  		var iOut int32 = 0
  4773  		var iIn int32 = 0
  4774  		for iIn = 1; iIn < n-1; iIn++ {
  4775  			if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  4776  				iIn++
  4777  			}
  4778  			*(*int8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
  4779  		}
  4780  		*(*int8)(unsafe.Pointer(zRet + uintptr(iOut))) = int8(0)
  4781  	}
  4782  
  4783  	return zRet
  4784  }
  4785  
  4786  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  4787  	bp := tls.Alloc(4)
  4788  	defer tls.Free(4)
  4789  
  4790  	var pExpert uintptr = pAux
  4791  	var p uintptr = uintptr(0)
  4792  
  4793  	if argc != 4 {
  4794  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  4795  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  4796  	} else {
  4797  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
  4798  		if zCreateTable != 0 {
  4799  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  4800  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4801  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  4802  			}
  4803  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4804  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  4805  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  4806  
  4807  			}
  4808  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  4809  		} else {
  4810  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  4811  		}
  4812  	}
  4813  
  4814  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  4815  	return *(*int32)(unsafe.Pointer(bp))
  4816  }
  4817  
  4818  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  4819  	var p uintptr = pVtab
  4820  	sqlite3.Xsqlite3_free(tls, p)
  4821  	return SQLITE_OK
  4822  }
  4823  
  4824  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  4825  	bp := tls.Alloc(4)
  4826  	defer tls.Free(4)
  4827  
  4828  	var p uintptr = pVtab
  4829  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4830  	var n int32 = 0
  4831  	var pScan uintptr
  4832  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  4833  
  4834  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  4835  	if pScan != 0 {
  4836  		var i int32
  4837  
  4838  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  4839  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  4840  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  4841  
  4842  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  4843  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  4844  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  4845  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  4846  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*12)).FiPk == 0 &&
  4847  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  4848  				var pNew uintptr
  4849  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  4850  				pNew = idxNewConstraint(tls, bp, zColl)
  4851  				if pNew != 0 {
  4852  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  4853  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  4854  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  4855  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  4856  					} else {
  4857  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  4858  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  4859  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  4860  					}
  4861  				}
  4862  				n++
  4863  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  4864  			}
  4865  		}
  4866  
  4867  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  4868  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  4869  			if iCol >= 0 {
  4870  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*12)).FzColl)
  4871  				if pNew != 0 {
  4872  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  4873  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  4874  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4875  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4876  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  4877  					n++
  4878  				}
  4879  			}
  4880  		}
  4881  	}
  4882  
  4883  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  4884  	return *(*int32)(unsafe.Pointer(bp))
  4885  }
  4886  
  4887  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  4888  	_ = pVtab
  4889  	_ = nData
  4890  	_ = azData
  4891  	_ = pRowid
  4892  	return SQLITE_OK
  4893  }
  4894  
  4895  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  4896  	bp := tls.Alloc(4)
  4897  	defer tls.Free(4)
  4898  
  4899  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4900  	var pCsr uintptr
  4901  	_ = pVTab
  4902  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  4903  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  4904  	return *(*int32)(unsafe.Pointer(bp))
  4905  }
  4906  
  4907  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  4908  	var pCsr uintptr = cur
  4909  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4910  	sqlite3.Xsqlite3_free(tls, pCsr)
  4911  	return SQLITE_OK
  4912  }
  4913  
  4914  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  4915  	var pCsr uintptr = cur
  4916  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  4917  }
  4918  
  4919  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  4920  	var pCsr uintptr = cur
  4921  	var rc int32 = SQLITE_OK
  4922  
  4923  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4924  	if rc != SQLITE_ROW {
  4925  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4926  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4927  	} else {
  4928  		rc = SQLITE_OK
  4929  	}
  4930  
  4931  	return rc
  4932  }
  4933  
  4934  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  4935  	_ = cur
  4936  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  4937  	return SQLITE_OK
  4938  }
  4939  
  4940  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  4941  	var pCsr uintptr = cur
  4942  	var pVal uintptr
  4943  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  4944  	if pVal != 0 {
  4945  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  4946  	}
  4947  	return SQLITE_OK
  4948  }
  4949  
  4950  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  4951  	bp := tls.Alloc(8)
  4952  	defer tls.Free(8)
  4953  
  4954  	var pCsr uintptr = cur
  4955  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  4956  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  4957  	var rc int32
  4958  
  4959  	_ = idxNum
  4960  	_ = idxStr
  4961  	_ = argc
  4962  	_ = argv
  4963  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4964  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4965  	if rc == SQLITE_OK {
  4966  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+4, pVtab+8,
  4967  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  4968  	}
  4969  
  4970  	if rc == SQLITE_OK {
  4971  		rc = expertNext(tls, cur)
  4972  	}
  4973  	return rc
  4974  }
  4975  
  4976  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  4977  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  4978  }
  4979  
  4980  var expertModule = sqlite3_module{
  4981  	FiVersion:    2,
  4982  	FxCreate:     0,
  4983  	FxConnect:    0,
  4984  	FxBestIndex:  0,
  4985  	FxDisconnect: 0,
  4986  	FxDestroy:    0,
  4987  	FxOpen:       0,
  4988  	FxClose:      0,
  4989  	FxFilter:     0,
  4990  	FxNext:       0,
  4991  	FxEof:        0,
  4992  	FxColumn:     0,
  4993  	FxRowid:      0,
  4994  	FxUpdate:     0,
  4995  }
  4996  
  4997  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  4998  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  4999  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5000  		*(*int32)(unsafe.Pointer(pRc)) = rc
  5001  	}
  5002  }
  5003  
  5004  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  5005  	bp := tls.Alloc(24)
  5006  	defer tls.Free(24)
  5007  
  5008  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  5009  	var nCol int32 = 0
  5010  	var nTab int32
  5011  	var nByte int32
  5012  	var pNew uintptr = uintptr(0)
  5013  
  5014  	var rc2 int32
  5015  	var pCsr uintptr = uintptr(0)
  5016  	var nPk int32 = 0
  5017  
  5018  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  5019  	if zTab == uintptr(0) {
  5020  		return SQLITE_ERROR
  5021  	}
  5022  	nTab = int32(libc.Xstrlen(tls, zTab))
  5023  	nByte = int32(uint32(unsafe.Sizeof(IdxTable{})) + uint32(nTab) + uint32(1))
  5024  	*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  5025  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5026  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5027  		*(*uintptr)(unsafe.Pointer(bp + 12)) = uintptr(0)
  5028  		if zCol == uintptr(0) {
  5029  			*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_ERROR
  5030  			break
  5031  		}
  5032  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  5033  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5034  			db, ts+85, zTab, zCol, uintptr(0), bp+12, uintptr(0), uintptr(0), uintptr(0))
  5035  		if *(*uintptr)(unsafe.Pointer(bp + 12)) == uintptr(0) {
  5036  			*(*uintptr)(unsafe.Pointer(bp + 12)) = ts + 90
  5037  		}
  5038  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 12)))))
  5039  		nCol++
  5040  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  5041  	}
  5042  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5043  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5044  		*(*int32)(unsafe.Pointer(bp + 16)) = rc2
  5045  	}
  5046  
  5047  	nByte = int32(uint32(nByte) + uint32(unsafe.Sizeof(IdxColumn{}))*uint32(nCol))
  5048  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5049  		pNew = idxMalloc(tls, bp+16, nByte)
  5050  	}
  5051  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5052  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*16
  5053  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  5054  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*12
  5055  	}
  5056  
  5057  	nCol = 0
  5058  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  5059  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  5060  		*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
  5061  		var nCopy int32
  5062  		if zCol == uintptr(0) {
  5063  			continue
  5064  		}
  5065  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  5066  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*12)).FzName = pCsr
  5067  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*12)).FiPk = libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) == 1 && nPk == 1)
  5068  		libc.Xmemcpy(tls, pCsr, zCol, uint32(nCopy))
  5069  		pCsr += uintptr(nCopy)
  5070  
  5071  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  5072  			db, ts+85, zTab, zCol, uintptr(0), bp+20, uintptr(0), uintptr(0), uintptr(0))
  5073  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5074  			if *(*uintptr)(unsafe.Pointer(bp + 20)) == uintptr(0) {
  5075  				*(*uintptr)(unsafe.Pointer(bp + 20)) = ts + 90
  5076  			}
  5077  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))) + 1
  5078  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*12)).FzColl = pCsr
  5079  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 20)), uint32(nCopy))
  5080  			pCsr += uintptr(nCopy)
  5081  		}
  5082  
  5083  		nCol++
  5084  	}
  5085  	idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8)))
  5086  
  5087  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5088  		sqlite3.Xsqlite3_free(tls, pNew)
  5089  		pNew = uintptr(0)
  5090  	} else if pNew != uintptr(0) {
  5091  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  5092  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  5093  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint32(nTab+1))
  5094  		}
  5095  	}
  5096  
  5097  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  5098  	return *(*int32)(unsafe.Pointer(bp + 16))
  5099  }
  5100  
  5101  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  5102  	var ap va_list
  5103  	_ = ap
  5104  	var zAppend uintptr = uintptr(0)
  5105  	var zRet uintptr = uintptr(0)
  5106  	var nIn int32
  5107  	if zIn != 0 {
  5108  		nIn = int32(libc.Xstrlen(tls, zIn))
  5109  	} else {
  5110  		nIn = 0
  5111  	}
  5112  	var nAppend int32 = 0
  5113  	ap = va
  5114  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  5115  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  5116  		if zAppend != 0 {
  5117  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  5118  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  5119  		}
  5120  		if zAppend != 0 && zRet != 0 {
  5121  			if nIn != 0 {
  5122  				libc.Xmemcpy(tls, zRet, zIn, uint32(nIn))
  5123  			}
  5124  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint32(nAppend+1))
  5125  		} else {
  5126  			sqlite3.Xsqlite3_free(tls, zRet)
  5127  			zRet = uintptr(0)
  5128  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  5129  		}
  5130  		sqlite3.Xsqlite3_free(tls, zAppend)
  5131  		sqlite3.Xsqlite3_free(tls, zIn)
  5132  	}
  5133  	_ = ap
  5134  	return zRet
  5135  }
  5136  
  5137  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  5138  	var i int32
  5139  	for i = 0; *(*int8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  5140  		if !(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  5141  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  5142  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  5143  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  5144  			return 1
  5145  		}
  5146  	}
  5147  	return 0
  5148  }
  5149  
  5150  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  5151  	bp := tls.Alloc(32)
  5152  	defer tls.Free(32)
  5153  
  5154  	var zRet uintptr = zIn
  5155  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*12
  5156  	if zRet != 0 {
  5157  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  5158  	}
  5159  
  5160  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  5161  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5162  	} else {
  5163  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  5164  	}
  5165  
  5166  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5167  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  5168  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5169  		} else {
  5170  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  5171  		}
  5172  	}
  5173  
  5174  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  5175  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  5176  	}
  5177  	return zRet
  5178  }
  5179  
  5180  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5181  	bp := tls.Alloc(28)
  5182  	defer tls.Free(28)
  5183  
  5184  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5185  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  5186  	var pIter uintptr
  5187  	var nEq int32 = 0
  5188  
  5189  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5190  		nEq++
  5191  	}
  5192  
  5193  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  5194  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  5195  		var bMatch int32 = 1
  5196  		var pT uintptr = pTail
  5197  		*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
  5198  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  5199  		if zIdx == uintptr(0) {
  5200  			continue
  5201  		}
  5202  
  5203  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5204  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  5205  		}
  5206  
  5207  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, dbm, bp+20, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  5208  		for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 20))) == SQLITE_ROW {
  5209  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), 0)
  5210  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), 1)
  5211  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), 4)
  5212  
  5213  			if iIdx < nEq {
  5214  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  5215  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  5216  						continue
  5217  					}
  5218  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  5219  						continue
  5220  					}
  5221  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  5222  						continue
  5223  					}
  5224  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  5225  					break
  5226  				}
  5227  				if pIter == uintptr(0) {
  5228  					bMatch = 0
  5229  					break
  5230  				}
  5231  			} else {
  5232  				if pT != 0 {
  5233  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  5234  						bMatch = 0
  5235  						break
  5236  					}
  5237  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  5238  				}
  5239  			}
  5240  		}
  5241  		idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 20)))
  5242  
  5243  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && bMatch != 0 {
  5244  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5245  			return 1
  5246  		}
  5247  	}
  5248  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16)))
  5249  
  5250  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 24))
  5251  	return 0
  5252  }
  5253  
  5254  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  5255  	_ = azColumns
  5256  	if nc > 0 && (int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  5257  		*(*int32)(unsafe.Pointer(pCount)) += 1
  5258  	}
  5259  	return 0
  5260  }
  5261  
  5262  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  5263  	bp := tls.Alloc(56)
  5264  	defer tls.Free(56)
  5265  
  5266  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5267  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  5268  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  5269  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  5270  		var zCols uintptr = uintptr(0)
  5271  		var zIdx uintptr = uintptr(0)
  5272  		var pCons uintptr
  5273  		var h uint32 = uint32(0)
  5274  		var zFmt uintptr
  5275  
  5276  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5277  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5278  		}
  5279  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  5280  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  5281  		}
  5282  
  5283  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5284  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  5285  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  5286  			var zName uintptr = uintptr(0)
  5287  			var collisions int32 = 0
  5288  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  5289  				var zFind uintptr
  5290  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  5291  					h = h + (h<<3 + uint32(*(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  5292  				}
  5293  				sqlite3.Xsqlite3_free(tls, zName)
  5294  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  5295  				if zName == uintptr(0) {
  5296  					break
  5297  				}
  5298  
  5299  				zFmt = ts + 188
  5300  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  5301  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  5302  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  5303  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  5304  				}{countNonzeros})), bp+52, uintptr(0))
  5305  
  5306  				sqlite3.Xsqlite3_free(tls, zFind)
  5307  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  5308  					collisions = 0
  5309  					break
  5310  				}
  5311  				collisions++
  5312  			}
  5313  			if collisions != 0 {
  5314  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5315  			} else if zName == uintptr(0) {
  5316  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5317  			} else {
  5318  				if quoteTable != 0 {
  5319  					zFmt = ts + 274
  5320  				} else {
  5321  					zFmt = ts + 304
  5322  				}
  5323  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  5324  				if !(zIdx != 0) {
  5325  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  5326  				} else {
  5327  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  5328  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  5329  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  5330  					} else {
  5331  						idxHashAdd(tls, bp+48, p+44, zName, zIdx)
  5332  					}
  5333  				}
  5334  				sqlite3.Xsqlite3_free(tls, zName)
  5335  				sqlite3.Xsqlite3_free(tls, zIdx)
  5336  			}
  5337  		}
  5338  
  5339  		sqlite3.Xsqlite3_free(tls, zCols)
  5340  	}
  5341  	return *(*int32)(unsafe.Pointer(bp + 48))
  5342  }
  5343  
  5344  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  5345  	var pCmp uintptr
  5346  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  5347  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  5348  			return 1
  5349  		}
  5350  	}
  5351  	return 0
  5352  }
  5353  
  5354  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  5355  	var p1 uintptr = uintptr(0)
  5356  	var pCon uintptr
  5357  	var rc int32
  5358  
  5359  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5360  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5361  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  5362  			p1 = pCon
  5363  		}
  5364  	}
  5365  
  5366  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  5367  
  5368  	if pTail == uintptr(0) {
  5369  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  5370  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  5371  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  5372  			}
  5373  		}
  5374  	}
  5375  
  5376  	return rc
  5377  }
  5378  
  5379  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  5380  	var rc int32 = SQLITE_OK
  5381  	var pIter uintptr
  5382  
  5383  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  5384  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  5385  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  5386  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  5387  		}
  5388  	}
  5389  
  5390  	return rc
  5391  }
  5392  
  5393  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  5394  	var pNext uintptr
  5395  	var p uintptr
  5396  
  5397  	for p = pConstraint; p != 0; p = pNext {
  5398  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  5399  		sqlite3.Xsqlite3_free(tls, p)
  5400  	}
  5401  }
  5402  
  5403  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  5404  	var p uintptr
  5405  	var pNext uintptr
  5406  	for p = pScan; p != pLast; p = pNext {
  5407  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  5408  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  5409  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  5410  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  5411  		sqlite3.Xsqlite3_free(tls, p)
  5412  	}
  5413  }
  5414  
  5415  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  5416  	var p uintptr
  5417  	var pNext uintptr
  5418  	for p = pStatement; p != pLast; p = pNext {
  5419  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  5420  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  5421  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  5422  		sqlite3.Xsqlite3_free(tls, p)
  5423  	}
  5424  }
  5425  
  5426  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  5427  	var pIter uintptr
  5428  	var pNext uintptr
  5429  	for pIter = pTab; pIter != 0; pIter = pNext {
  5430  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  5431  		sqlite3.Xsqlite3_free(tls, pIter)
  5432  	}
  5433  }
  5434  
  5435  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  5436  	var pIter uintptr
  5437  	var pNext uintptr
  5438  	for pIter = pTab; pIter != 0; pIter = pNext {
  5439  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5440  		sqlite3.Xsqlite3_free(tls, pIter)
  5441  	}
  5442  }
  5443  
  5444  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5445  	bp := tls.Alloc(4128)
  5446  	defer tls.Free(4128)
  5447  
  5448  	var pStmt uintptr
  5449  	var dbm uintptr
  5450  
  5451  	var zSql uintptr
  5452  	var nIdx int32
  5453  	var zIdx uintptr
  5454  
  5455  	var zDetail uintptr
  5456  	var nDetail int32
  5457  	var i int32
  5458  	var pEntry uintptr
  5459  
  5460  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5461  	*(*int32)(unsafe.Pointer(bp + 4124)) = SQLITE_OK
  5462  	idxHashInit(tls, bp+24)
  5463  
  5464  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5465  __1:
  5466  	if !(*(*int32)(unsafe.Pointer(bp + 4124)) == SQLITE_OK && pStmt != 0) {
  5467  		goto __3
  5468  	}
  5469  	*(*uintptr)(unsafe.Pointer(bp + 4120)) = uintptr(0)
  5470  	idxHashClear(tls, bp+24)
  5471  	*(*int32)(unsafe.Pointer(bp + 4124)) = idxPrintfPrepareStmt(tls, dbm, bp+4120, pzErr,
  5472  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5473  __4:
  5474  	if !(*(*int32)(unsafe.Pointer(bp + 4124)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 4120))) == SQLITE_ROW) {
  5475  		goto __5
  5476  	}
  5477  
  5478  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 4120)), 3)
  5479  
  5480  	if !!(zDetail != 0) {
  5481  		goto __6
  5482  	}
  5483  	goto __4
  5484  __6:
  5485  	;
  5486  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5487  
  5488  	i = 0
  5489  __7:
  5490  	if !(i < nDetail) {
  5491  		goto __9
  5492  	}
  5493  	zIdx = uintptr(0)
  5494  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint32(13)) == 0) {
  5495  		goto __10
  5496  	}
  5497  	zIdx = zDetail + uintptr(i+13)
  5498  	goto __11
  5499  __10:
  5500  	if !(i+22 < nDetail &&
  5501  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint32(22)) == 0) {
  5502  		goto __12
  5503  	}
  5504  	zIdx = zDetail + uintptr(i+22)
  5505  __12:
  5506  	;
  5507  __11:
  5508  	;
  5509  	if !(zIdx != 0) {
  5510  		goto __13
  5511  	}
  5512  	nIdx = 0
  5513  __14:
  5514  	if !(int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5515  		goto __15
  5516  	}
  5517  	nIdx++
  5518  	goto __14
  5519  __15:
  5520  	;
  5521  	zSql = idxHashSearch(tls, p+44, zIdx, nIdx)
  5522  	if !(zSql != 0) {
  5523  		goto __16
  5524  	}
  5525  	idxHashAdd(tls, bp+4124, bp+24, zSql, uintptr(0))
  5526  	if !(*(*int32)(unsafe.Pointer(bp + 4124)) != 0) {
  5527  		goto __17
  5528  	}
  5529  	goto find_indexes_out
  5530  __17:
  5531  	;
  5532  __16:
  5533  	;
  5534  	goto __9
  5535  __13:
  5536  	;
  5537  	goto __8
  5538  __8:
  5539  	i++
  5540  	goto __7
  5541  	goto __9
  5542  __9:
  5543  	;
  5544  	if !(int32(*(*int8)(unsafe.Pointer(zDetail))) != '-') {
  5545  		goto __18
  5546  	}
  5547  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+4124, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5548  __18:
  5549  	;
  5550  	goto __4
  5551  __5:
  5552  	;
  5553  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5554  __19:
  5555  	if !(pEntry != 0) {
  5556  		goto __21
  5557  	}
  5558  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx = idxAppendText(tls, bp+4124, (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx, ts+393, libc.VaList(bp+16, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey))
  5559  	goto __20
  5560  __20:
  5561  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5562  	goto __19
  5563  	goto __21
  5564  __21:
  5565  	;
  5566  	idxFinalize(tls, bp+4124, *(*uintptr)(unsafe.Pointer(bp + 4120)))
  5567  	goto __2
  5568  __2:
  5569  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5570  	goto __1
  5571  	goto __3
  5572  __3:
  5573  	;
  5574  find_indexes_out:
  5575  	idxHashClear(tls, bp+24)
  5576  	return *(*int32)(unsafe.Pointer(bp + 4124))
  5577  }
  5578  
  5579  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5580  	bp := tls.Alloc(4)
  5581  	defer tls.Free(4)
  5582  
  5583  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5584  	_ = z4
  5585  	_ = zTrigger
  5586  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5587  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5588  			var p uintptr = pCtx
  5589  			var pTab uintptr
  5590  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5591  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5592  					break
  5593  				}
  5594  			}
  5595  			if pTab != 0 {
  5596  				var pWrite uintptr
  5597  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5598  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5599  						break
  5600  					}
  5601  				}
  5602  				if pWrite == uintptr(0) {
  5603  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5604  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5605  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5606  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5607  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5608  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5609  					}
  5610  				}
  5611  			}
  5612  		}
  5613  	}
  5614  	return *(*int32)(unsafe.Pointer(bp))
  5615  }
  5616  
  5617  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5618  	bp := tls.Alloc(92)
  5619  	defer tls.Free(92)
  5620  
  5621  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5622  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5623  	var zSql uintptr = ts + 398
  5624  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5625  	*(*int32)(unsafe.Pointer(bp + 84)) = SQLITE_OK
  5626  	var zWrite uintptr = uintptr(0)
  5627  
  5628  	*(*int32)(unsafe.Pointer(bp + 84)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5629  	for *(*int32)(unsafe.Pointer(bp + 84)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5630  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5631  		if zCreate == uintptr(0) {
  5632  			continue
  5633  		}
  5634  		*(*int32)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5635  	}
  5636  	idxFinalize(tls, bp+84, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5637  
  5638  	if *(*int32)(unsafe.Pointer(bp + 84)) == SQLITE_OK {
  5639  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  5640  		if z == uintptr(0) {
  5641  			*(*int32)(unsafe.Pointer(bp + 84)) = SQLITE_NOMEM
  5642  		} else {
  5643  			*(*int32)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  5644  			sqlite3.Xsqlite3_free(tls, z)
  5645  		}
  5646  	}
  5647  
  5648  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  5649  	case SQLITE_INSERT:
  5650  		{
  5651  			var i int32
  5652  			zWrite = idxAppendText(tls, bp+84, zWrite, ts+557, libc.VaList(bp+32, zInt))
  5653  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5654  				zWrite = idxAppendText(tls, bp+84, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  5655  					if i == 0 {
  5656  						return ts + 584
  5657  					}
  5658  					return ts + 97
  5659  				}()))
  5660  			}
  5661  			zWrite = idxAppendText(tls, bp+84, zWrite, ts+585, 0)
  5662  			break
  5663  
  5664  		}
  5665  	case SQLITE_UPDATE:
  5666  		{
  5667  			var i int32
  5668  			zWrite = idxAppendText(tls, bp+84, zWrite, ts+587, libc.VaList(bp+48, zInt))
  5669  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5670  				zWrite = idxAppendText(tls, bp+84, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  5671  					if i == 0 {
  5672  						return ts + 584
  5673  					}
  5674  					return ts + 97
  5675  				}(),
  5676  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*12)).FzName))
  5677  			}
  5678  			break
  5679  
  5680  		}
  5681  	default:
  5682  		{
  5683  			if *(*int32)(unsafe.Pointer(bp + 84)) == SQLITE_OK {
  5684  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  5685  				if zWrite == uintptr(0) {
  5686  					*(*int32)(unsafe.Pointer(bp + 84)) = SQLITE_NOMEM
  5687  				}
  5688  			}
  5689  
  5690  		}
  5691  	}
  5692  
  5693  	if *(*int32)(unsafe.Pointer(bp + 84)) == SQLITE_OK {
  5694  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
  5695  		*(*int32)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+88, uintptr(0))
  5696  		idxFinalize(tls, bp+84, *(*uintptr)(unsafe.Pointer(bp + 88)))
  5697  		if *(*int32)(unsafe.Pointer(bp + 84)) != SQLITE_OK {
  5698  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5699  		}
  5700  	}
  5701  	sqlite3.Xsqlite3_free(tls, zWrite)
  5702  
  5703  	if *(*int32)(unsafe.Pointer(bp + 84)) == SQLITE_OK {
  5704  		*(*int32)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  5705  	}
  5706  
  5707  	return *(*int32)(unsafe.Pointer(bp + 84))
  5708  }
  5709  
  5710  var zInt uintptr = ts + 624
  5711  var zDrop uintptr = ts + 662
  5712  
  5713  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5714  	var rc int32 = SQLITE_OK
  5715  	var pEnd uintptr = uintptr(0)
  5716  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5717  
  5718  	for rc == SQLITE_OK && pFirst != pEnd {
  5719  		var pIter uintptr
  5720  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  5721  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  5722  		}
  5723  		pEnd = pFirst
  5724  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5725  	}
  5726  
  5727  	return rc
  5728  }
  5729  
  5730  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  5731  	bp := tls.Alloc(52)
  5732  	defer tls.Free(52)
  5733  
  5734  	*(*int32)(unsafe.Pointer(bp + 48)) = idxRegisterVtab(tls, p)
  5735  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5736  
  5737  	*(*int32)(unsafe.Pointer(bp + 48)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  5738  		ts+711)
  5739  	for *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5740  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5741  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5742  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5743  
  5744  		if zType == uintptr(0) || zName == uintptr(0) {
  5745  			continue
  5746  		}
  5747  		if int32(*(*int8)(unsafe.Pointer(zType))) == 'v' || int32(*(*int8)(unsafe.Pointer(zType + 1))) == 'r' {
  5748  			if zSql != 0 {
  5749  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5750  			}
  5751  		} else {
  5752  			*(*int32)(unsafe.Pointer(bp + 48)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+44, pzErrmsg)
  5753  			if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5754  				var i int32
  5755  				var zInner uintptr = uintptr(0)
  5756  				var zOuter uintptr = uintptr(0)
  5757  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  5758  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 44))
  5759  
  5760  				zInner = idxAppendText(tls, bp+48, uintptr(0), ts+979, 0)
  5761  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)))).FnCol; i++ {
  5762  					zInner = idxAppendText(tls, bp+48, zInner, ts+995,
  5763  						libc.VaList(bp, func() uintptr {
  5764  							if i == 0 {
  5765  								return ts + 584
  5766  							}
  5767  							return ts + 97
  5768  						}(), (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)))).FaCol+uintptr(i)*12)).FzName, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)))).FaCol+uintptr(i)*12)).FzColl))
  5769  				}
  5770  				zInner = idxAppendText(tls, bp+48, zInner, ts+585, 0)
  5771  
  5772  				zOuter = idxAppendText(tls, bp+48, uintptr(0),
  5773  					ts+1011, libc.VaList(bp+24, zName, zInner))
  5774  				if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  5775  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  5776  				}
  5777  				sqlite3.Xsqlite3_free(tls, zInner)
  5778  				sqlite3.Xsqlite3_free(tls, zOuter)
  5779  			}
  5780  		}
  5781  	}
  5782  	idxFinalize(tls, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5783  	return *(*int32)(unsafe.Pointer(bp + 48))
  5784  }
  5785  
  5786  type IdxSampleCtx = struct {
  5787  	FiTarget int32
  5788  	Ftarget  float64
  5789  	FnRow    float64
  5790  	FnRet    float64
  5791  }
  5792  
  5793  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5794  	bp := tls.Alloc(2)
  5795  	defer tls.Free(2)
  5796  
  5797  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5798  	var bRet int32
  5799  
  5800  	_ = argv
  5801  
  5802  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  5803  		bRet = 1
  5804  	} else {
  5805  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  5806  		if bRet == 0 {
  5807  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  5808  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  5809  		}
  5810  	}
  5811  
  5812  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  5813  	*(*float64)(unsafe.Pointer(p + 12)) += 1.0
  5814  	*(*float64)(unsafe.Pointer(p + 20)) += float64(bRet)
  5815  }
  5816  
  5817  type IdxRemCtx = struct {
  5818  	FnSlot int32
  5819  	FaSlot [1]struct {
  5820  		FeType int32
  5821  		FiVal  i64
  5822  		FrVal  float64
  5823  		FnByte int32
  5824  		Fn     int32
  5825  		Fz     uintptr
  5826  	}
  5827  }
  5828  
  5829  type IdxRemSlot = struct {
  5830  	FeType int32
  5831  	FiVal  i64
  5832  	FrVal  float64
  5833  	FnByte int32
  5834  	Fn     int32
  5835  	Fz     uintptr
  5836  }
  5837  
  5838  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5839  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5840  	var pSlot uintptr
  5841  	var iSlot int32
  5842  
  5843  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  5844  
  5845  	pSlot = p + 4 + uintptr(iSlot)*32
  5846  
  5847  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5848  	case SQLITE_NULL:
  5849  		break
  5850  
  5851  	case SQLITE_INTEGER:
  5852  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  5853  		break
  5854  
  5855  	case SQLITE_FLOAT:
  5856  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  5857  		break
  5858  
  5859  	case SQLITE_BLOB:
  5860  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5861  		break
  5862  
  5863  	case SQLITE_TEXT:
  5864  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5865  		break
  5866  	}
  5867  
  5868  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5869  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5870  	case SQLITE_NULL:
  5871  		break
  5872  
  5873  	case SQLITE_INTEGER:
  5874  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5875  		break
  5876  
  5877  	case SQLITE_FLOAT:
  5878  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5879  		break
  5880  
  5881  	case SQLITE_BLOB:
  5882  		fallthrough
  5883  	case SQLITE_TEXT:
  5884  		{
  5885  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5886  			var pData uintptr = uintptr(0)
  5887  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  5888  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  5889  				if zNew == uintptr(0) {
  5890  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  5891  					return
  5892  				}
  5893  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  5894  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  5895  			}
  5896  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  5897  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  5898  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5899  				if pData != 0 {
  5900  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint32(nByte))
  5901  				}
  5902  			} else {
  5903  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
  5904  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint32(nByte))
  5905  			}
  5906  			break
  5907  
  5908  		}
  5909  	}
  5910  }
  5911  
  5912  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  5913  	bp := tls.Alloc(8)
  5914  	defer tls.Free(8)
  5915  
  5916  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  5917  	var zMax uintptr = ts + 1052
  5918  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5919  
  5920  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  5921  	*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  5922  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  5923  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  5924  	}
  5925  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp)))
  5926  
  5927  	return *(*int32)(unsafe.Pointer(bp + 4))
  5928  }
  5929  
  5930  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  5931  	bp := tls.Alloc(120)
  5932  	defer tls.Free(120)
  5933  
  5934  	var zCols uintptr = uintptr(0)
  5935  	var zOrder uintptr = uintptr(0)
  5936  	var zQuery uintptr = uintptr(0)
  5937  	var nCol int32 = 0
  5938  	var i int32
  5939  	*(*uintptr)(unsafe.Pointer(bp + 116)) = uintptr(0)
  5940  	var aStat uintptr = uintptr(0)
  5941  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  5942  
  5943  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  5944  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  5945  		var zComma uintptr
  5946  		if zCols == uintptr(0) {
  5947  			zComma = ts + 584
  5948  		} else {
  5949  			zComma = ts + 97
  5950  		}
  5951  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  5952  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  5953  		zCols = idxAppendText(tls, bp+112, zCols,
  5954  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  5955  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  5956  	}
  5957  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  5958  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5959  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5960  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5961  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  5962  		} else {
  5963  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5964  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  5965  		}
  5966  	}
  5967  	sqlite3.Xsqlite3_free(tls, zCols)
  5968  	sqlite3.Xsqlite3_free(tls, zOrder)
  5969  
  5970  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5971  		var dbrem uintptr = func() uintptr {
  5972  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5973  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5974  			}
  5975  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5976  		}()
  5977  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+116, pzErr, zQuery)
  5978  	}
  5979  	sqlite3.Xsqlite3_free(tls, zQuery)
  5980  
  5981  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5982  		aStat = idxMalloc(tls, bp+112, int32(uint32(unsafe.Sizeof(int32(0)))*uint32(nCol+1)))
  5983  	}
  5984  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 116))) {
  5985  		var pEntry uintptr
  5986  		var zStat uintptr = uintptr(0)
  5987  		for i = 0; i <= nCol; i++ {
  5988  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  5989  		}
  5990  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 116))) {
  5991  			*(*int32)(unsafe.Pointer(aStat))++
  5992  			for i = 0; i < nCol; i++ {
  5993  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 116)), i) == 0 {
  5994  					break
  5995  				}
  5996  			}
  5997  			for ; i < nCol; i++ {
  5998  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  5999  			}
  6000  		}
  6001  
  6002  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6003  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  6004  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  6005  			if zStat == uintptr(0) {
  6006  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  6007  			}
  6008  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  6009  				zStat = idxAppendText(tls, bp+112, zStat, ts+1336, libc.VaList(bp+104, (s0+*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4))/2) / *(*int32)(unsafe.Pointer(aStat + uintptr(i)*4))))
  6010  			}
  6011  		}
  6012  
  6013  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  6014  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  6015  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  6016  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  6017  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  6018  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  6019  		}
  6020  
  6021  		pEntry = idxHashFind(tls, p+44, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  6022  		if pEntry != 0 {
  6023  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  6024  		} else {
  6025  			sqlite3.Xsqlite3_free(tls, zStat)
  6026  		}
  6027  	}
  6028  	sqlite3.Xsqlite3_free(tls, aStat)
  6029  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 116)))
  6030  
  6031  	return *(*int32)(unsafe.Pointer(bp + 112))
  6032  }
  6033  
  6034  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  6035  	bp := tls.Alloc(8)
  6036  	defer tls.Free(8)
  6037  
  6038  	var rc int32
  6039  	var zSql uintptr
  6040  
  6041  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6042  	if rc != SQLITE_OK {
  6043  		return rc
  6044  	}
  6045  
  6046  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  6047  		ts+1404, libc.VaList(bp, zTab))
  6048  	if zSql == uintptr(0) {
  6049  		return SQLITE_NOMEM
  6050  	}
  6051  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  6052  	sqlite3.Xsqlite3_free(tls, zSql)
  6053  
  6054  	return rc
  6055  }
  6056  
  6057  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6058  	bp := tls.Alloc(48)
  6059  	defer tls.Free(48)
  6060  
  6061  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  6062  	*(*int32)(unsafe.Pointer(bp)) = 0
  6063  	var pCtx uintptr = uintptr(0)
  6064  
  6065  	var i int32
  6066  	var iPrev i64 = int64(-100000)
  6067  	*(*uintptr)(unsafe.Pointer(bp + 36)) = uintptr(0)
  6068  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  6069  	*(*uintptr)(unsafe.Pointer(bp + 44)) = uintptr(0)
  6070  
  6071  	var zAllIndex uintptr = ts + 1480
  6072  	var zIndexXInfo uintptr = ts + 1594
  6073  	var zWrite uintptr = ts + 1649
  6074  
  6075  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  6076  		return SQLITE_OK
  6077  	}
  6078  
  6079  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  6080  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6081  		return *(*int32)(unsafe.Pointer(bp + 4))
  6082  	}
  6083  
  6084  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  6085  
  6086  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6087  		var nByte int32 = int32(uint32(unsafe.Sizeof(IdxRemCtx{})) + uint32(unsafe.Sizeof(IdxRemSlot{}))*uint32(*(*int32)(unsafe.Pointer(bp))))
  6088  		pCtx = idxMalloc(tls, bp+4, nByte)
  6089  	}
  6090  
  6091  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6092  		var dbrem uintptr = func() uintptr {
  6093  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  6094  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  6095  			}
  6096  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  6097  		}()
  6098  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6099  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  6100  				f func(*libc.TLS, uintptr, int32, uintptr)
  6101  			}{idxRemFunc})), uintptr(0), uintptr(0))
  6102  	}
  6103  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6104  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  6105  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  6106  				f func(*libc.TLS, uintptr, int32, uintptr)
  6107  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  6108  	}
  6109  
  6110  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6111  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  6112  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+36, pzErr, zAllIndex)
  6113  	}
  6114  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6115  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zIndexXInfo)
  6116  	}
  6117  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6118  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+44, pzErr, zWrite)
  6119  	}
  6120  
  6121  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 36))) {
  6122  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 36)), 0)
  6123  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 36)), 1)
  6124  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 36)), 2)
  6125  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  6126  			continue
  6127  		}
  6128  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  6129  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  6130  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  6131  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  6132  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  6133  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  6134  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  6135  				break
  6136  			}
  6137  		}
  6138  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(bp + 44)), zTab, zIdx, pzErr)
  6139  		iPrev = iRowid
  6140  	}
  6141  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  6142  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  6143  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6144  	}
  6145  
  6146  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 36)))
  6147  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  6148  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 44)))
  6149  
  6150  	if pCtx != 0 {
  6151  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  6152  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+4+uintptr(i)*32)).Fz)
  6153  		}
  6154  		sqlite3.Xsqlite3_free(tls, pCtx)
  6155  	}
  6156  
  6157  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  6158  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  6159  	}
  6160  
  6161  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  6162  	return *(*int32)(unsafe.Pointer(bp + 4))
  6163  }
  6164  
  6165  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  6166  	bp := tls.Alloc(24)
  6167  	defer tls.Free(24)
  6168  
  6169  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  6170  	var pNew uintptr
  6171  
  6172  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  6173  
  6174  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6175  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  6176  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  6177  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+12)
  6178  	}
  6179  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6180  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+8)
  6181  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6182  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  6183  		}
  6184  	}
  6185  
  6186  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6187  		*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
  6188  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+20, pzErrmsg,
  6189  			ts+1766, 0)
  6190  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 20))) {
  6191  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), 0)
  6192  			if zSql != 0 {
  6193  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  6194  			}
  6195  		}
  6196  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 20)))
  6197  	}
  6198  
  6199  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6200  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  6201  	}
  6202  
  6203  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  6204  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  6205  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  6206  		}{idxAuthCallback})), pNew)
  6207  	}
  6208  
  6209  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  6210  		sqlite3_expert_destroy(tls, pNew)
  6211  		pNew = uintptr(0)
  6212  	}
  6213  	return pNew
  6214  }
  6215  
  6216  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  6217  	var rc int32 = SQLITE_OK
  6218  	var ap va_list
  6219  	_ = ap
  6220  	ap = va
  6221  	switch op {
  6222  	case EXPERT_CONFIG_SAMPLE:
  6223  		{
  6224  			var iVal int32 = libc.VaInt32(&ap)
  6225  			if iVal < 0 {
  6226  				iVal = 0
  6227  			}
  6228  			if iVal > 100 {
  6229  				iVal = 100
  6230  			}
  6231  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  6232  			break
  6233  
  6234  		}
  6235  	default:
  6236  		rc = SQLITE_NOTFOUND
  6237  		break
  6238  	}
  6239  
  6240  	_ = ap
  6241  	return rc
  6242  }
  6243  
  6244  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  6245  	bp := tls.Alloc(12)
  6246  	defer tls.Free(12)
  6247  
  6248  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  6249  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6250  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  6251  	*(*uintptr)(unsafe.Pointer(bp + 4)) = zSql
  6252  
  6253  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  6254  		return SQLITE_MISUSE
  6255  	}
  6256  
  6257  	for *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 4)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)))) != 0 {
  6258  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  6259  		*(*int32)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 4)), -1, bp, bp+4)
  6260  		if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK {
  6261  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  6262  				var pNew uintptr
  6263  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6264  				var n int32 = int32(libc.Xstrlen(tls, z))
  6265  				pNew = idxMalloc(tls, bp+8, int32(uint32(unsafe.Sizeof(IdxStatement{}))+uint32(n)+uint32(1)))
  6266  				if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK {
  6267  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*20
  6268  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint32(n+1))
  6269  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  6270  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6271  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6272  					}
  6273  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  6274  				}
  6275  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  6276  			}
  6277  		} else {
  6278  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  6279  		}
  6280  	}
  6281  
  6282  	if *(*int32)(unsafe.Pointer(bp + 8)) != SQLITE_OK {
  6283  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  6284  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  6285  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  6286  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  6287  	}
  6288  
  6289  	return *(*int32)(unsafe.Pointer(bp + 8))
  6290  }
  6291  
  6292  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  6293  	bp := tls.Alloc(28)
  6294  	defer tls.Free(28)
  6295  
  6296  	var pEntry uintptr
  6297  
  6298  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  6299  
  6300  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6301  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  6302  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  6303  		if pzErr != 0 {
  6304  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  6305  		}
  6306  		return *(*int32)(unsafe.Pointer(bp + 24))
  6307  	}
  6308  
  6309  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6310  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  6311  	}
  6312  
  6313  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  6314  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  6315  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  6316  				func() uintptr {
  6317  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  6318  						return ts + 1918
  6319  					}
  6320  					return ts + 584
  6321  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  6322  	}
  6323  
  6324  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6325  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  6326  	}
  6327  
  6328  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  6329  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  6330  	}
  6331  	return *(*int32)(unsafe.Pointer(bp + 24))
  6332  }
  6333  
  6334  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  6335  	var nRet int32 = 0
  6336  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  6337  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  6338  	}
  6339  	return nRet
  6340  }
  6341  
  6342  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  6343  	var zRet uintptr = uintptr(0)
  6344  	var pStmt uintptr
  6345  
  6346  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  6347  		return uintptr(0)
  6348  	}
  6349  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  6350  	}
  6351  	switch eReport {
  6352  	case EXPERT_REPORT_SQL:
  6353  		if pStmt != 0 {
  6354  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  6355  		}
  6356  		break
  6357  	case EXPERT_REPORT_INDEXES:
  6358  		if pStmt != 0 {
  6359  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  6360  		}
  6361  		break
  6362  	case EXPERT_REPORT_PLAN:
  6363  		if pStmt != 0 {
  6364  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  6365  		}
  6366  		break
  6367  	case EXPERT_REPORT_CANDIDATES:
  6368  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  6369  		break
  6370  	}
  6371  	return zRet
  6372  }
  6373  
  6374  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  6375  	if p != 0 {
  6376  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  6377  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  6378  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  6379  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  6380  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  6381  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  6382  		idxHashClear(tls, p+44)
  6383  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  6384  		sqlite3.Xsqlite3_free(tls, p)
  6385  	}
  6386  }
  6387  
  6388  type ClientData = uintptr
  6389  
  6390  type Tcl_WideInt = int64
  6391  type Tcl_WideUInt = uint64
  6392  
  6393  type stat = struct {
  6394  	Fst_dev      uint64
  6395  	F__pad1      uint16
  6396  	F__ccgo_pad1 [2]byte
  6397  	F__st_ino    uint32
  6398  	Fst_mode     uint32
  6399  	Fst_nlink    uint32
  6400  	Fst_uid      uint32
  6401  	Fst_gid      uint32
  6402  	Fst_rdev     uint64
  6403  	F__pad2      uint16
  6404  	F__ccgo_pad2 [2]byte
  6405  	Fst_size     int64
  6406  	Fst_blksize  int32
  6407  	Fst_blocks   int64
  6408  	Fst_atim     struct {
  6409  		Ftv_sec  int32
  6410  		Ftv_nsec int32
  6411  	}
  6412  	Fst_mtim struct {
  6413  		Ftv_sec  int32
  6414  		Ftv_nsec int32
  6415  	}
  6416  	Fst_ctim struct {
  6417  		Ftv_sec  int32
  6418  		Ftv_nsec int32
  6419  	}
  6420  	Fst_ino uint64
  6421  }
  6422  
  6423  type Tcl_Interp1 = struct {
  6424  	FresultDontUse    uintptr
  6425  	FfreeProcDontUse  uintptr
  6426  	FerrorLineDontUse int32
  6427  }
  6428  
  6429  type Tcl_Interp = Tcl_Interp1
  6430  
  6431  type Tcl_AsyncHandler = uintptr
  6432  type Tcl_Channel = uintptr
  6433  type Tcl_ChannelTypeVersion = uintptr
  6434  type Tcl_Command = uintptr
  6435  type Tcl_Condition = uintptr
  6436  type Tcl_Dict = uintptr
  6437  type Tcl_EncodingState = uintptr
  6438  type Tcl_Encoding = uintptr
  6439  type Tcl_Event1 = struct {
  6440  	Fproc    uintptr
  6441  	FnextPtr uintptr
  6442  }
  6443  
  6444  type Tcl_Event = Tcl_Event1
  6445  type Tcl_InterpState = uintptr
  6446  type Tcl_LoadHandle = uintptr
  6447  type Tcl_Mutex = uintptr
  6448  type Tcl_Pid = uintptr
  6449  type Tcl_RegExp = uintptr
  6450  type Tcl_ThreadDataKey = uintptr
  6451  type Tcl_ThreadId = uintptr
  6452  type Tcl_TimerToken = uintptr
  6453  type Tcl_Trace = uintptr
  6454  type Tcl_Var = uintptr
  6455  type Tcl_ZlibStream = uintptr
  6456  
  6457  type Tcl_RegExpIndices1 = struct {
  6458  	Fstart int32
  6459  	Fend   int32
  6460  }
  6461  
  6462  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6463  
  6464  type Tcl_RegExpInfo1 = struct {
  6465  	Fnsubs       int32
  6466  	Fmatches     uintptr
  6467  	FextendStart int32
  6468  	Freserved    int32
  6469  }
  6470  
  6471  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6472  
  6473  type Tcl_Stat_ = uintptr
  6474  type Tcl_OldStat_ = uintptr
  6475  
  6476  type Tcl_ValueType = uint32
  6477  
  6478  type Tcl_Value1 = struct {
  6479  	Ftype        Tcl_ValueType
  6480  	FintValue    int32
  6481  	FdoubleValue float64
  6482  	FwideValue   Tcl_WideInt
  6483  }
  6484  
  6485  type Tcl_Value = Tcl_Value1
  6486  
  6487  type Tcl_Obj1 = struct {
  6488  	FrefCount    int32
  6489  	Fbytes       uintptr
  6490  	Flength      int32
  6491  	FtypePtr     uintptr
  6492  	FinternalRep struct {
  6493  		FlongValue   int32
  6494  		F__ccgo_pad1 [4]byte
  6495  	}
  6496  }
  6497  
  6498  type Tcl_ObjType1 = struct {
  6499  	Fname             uintptr
  6500  	FfreeIntRepProc   uintptr
  6501  	FdupIntRepProc    uintptr
  6502  	FupdateStringProc uintptr
  6503  	FsetFromAnyProc   uintptr
  6504  }
  6505  
  6506  type Tcl_ObjType = Tcl_ObjType1
  6507  
  6508  type Tcl_Obj = Tcl_Obj1
  6509  
  6510  type Tcl_SavedResult1 = struct {
  6511  	Fresult       uintptr
  6512  	FfreeProc     uintptr
  6513  	FobjResultPtr uintptr
  6514  	FappendResult uintptr
  6515  	FappendAvl    int32
  6516  	FappendUsed   int32
  6517  	FresultSpace  [201]int8
  6518  	F__ccgo_pad1  [3]byte
  6519  }
  6520  
  6521  type Tcl_SavedResult = Tcl_SavedResult1
  6522  
  6523  type Tcl_Namespace1 = struct {
  6524  	Fname       uintptr
  6525  	FfullName   uintptr
  6526  	FclientData ClientData
  6527  	FdeleteProc uintptr
  6528  	FparentPtr  uintptr
  6529  }
  6530  
  6531  type Tcl_Namespace = Tcl_Namespace1
  6532  
  6533  type Tcl_CallFrame1 = struct {
  6534  	FnsPtr   uintptr
  6535  	Fdummy1  int32
  6536  	Fdummy2  int32
  6537  	Fdummy3  uintptr
  6538  	Fdummy4  uintptr
  6539  	Fdummy5  uintptr
  6540  	Fdummy6  int32
  6541  	Fdummy7  uintptr
  6542  	Fdummy8  uintptr
  6543  	Fdummy9  int32
  6544  	Fdummy10 uintptr
  6545  	Fdummy11 uintptr
  6546  	Fdummy12 uintptr
  6547  	Fdummy13 uintptr
  6548  }
  6549  
  6550  type Tcl_CallFrame = Tcl_CallFrame1
  6551  
  6552  type Tcl_CmdInfo1 = struct {
  6553  	FisNativeObjectProc int32
  6554  	FobjProc            uintptr
  6555  	FobjClientData      ClientData
  6556  	Fproc               uintptr
  6557  	FclientData         ClientData
  6558  	FdeleteProc         uintptr
  6559  	FdeleteData         ClientData
  6560  	FnamespacePtr       uintptr
  6561  }
  6562  
  6563  type Tcl_CmdInfo = Tcl_CmdInfo1
  6564  
  6565  type Tcl_DString1 = struct {
  6566  	Fstring      uintptr
  6567  	Flength      int32
  6568  	FspaceAvl    int32
  6569  	FstaticSpace [200]int8
  6570  }
  6571  
  6572  type Tcl_DString = Tcl_DString1
  6573  
  6574  type Tcl_HashKeyType1 = struct {
  6575  	Fversion         int32
  6576  	Fflags           int32
  6577  	FhashKeyProc     uintptr
  6578  	FcompareKeysProc uintptr
  6579  	FallocEntryProc  uintptr
  6580  	FfreeEntryProc   uintptr
  6581  }
  6582  
  6583  type Tcl_HashKeyType = Tcl_HashKeyType1
  6584  type Tcl_HashTable1 = struct {
  6585  	Fbuckets       uintptr
  6586  	FstaticBuckets [4]uintptr
  6587  	FnumBuckets    int32
  6588  	FnumEntries    int32
  6589  	FrebuildSize   int32
  6590  	FdownShift     int32
  6591  	Fmask          int32
  6592  	FkeyType       int32
  6593  	FfindProc      uintptr
  6594  	FcreateProc    uintptr
  6595  	FtypePtr       uintptr
  6596  }
  6597  
  6598  type Tcl_HashTable = Tcl_HashTable1
  6599  type Tcl_HashEntry1 = struct {
  6600  	FnextPtr    uintptr
  6601  	FtablePtr   uintptr
  6602  	Fhash       uintptr
  6603  	FclientData ClientData
  6604  	Fkey        struct{ FoneWordValue uintptr }
  6605  }
  6606  
  6607  type Tcl_HashEntry = Tcl_HashEntry1
  6608  
  6609  type Tcl_HashSearch1 = struct {
  6610  	FtablePtr     uintptr
  6611  	FnextIndex    int32
  6612  	FnextEntryPtr uintptr
  6613  }
  6614  
  6615  type Tcl_HashSearch = Tcl_HashSearch1
  6616  
  6617  type Tcl_DictSearch = struct {
  6618  	Fnext          uintptr
  6619  	Fepoch         int32
  6620  	FdictionaryPtr Tcl_Dict
  6621  }
  6622  
  6623  type Tcl_QueuePosition = uint32
  6624  
  6625  type Tcl_Time1 = struct {
  6626  	Fsec  int32
  6627  	Fusec int32
  6628  }
  6629  
  6630  type Tcl_Time = Tcl_Time1
  6631  
  6632  type Tcl_ChannelType1 = struct {
  6633  	FtypeName         uintptr
  6634  	Fversion          Tcl_ChannelTypeVersion
  6635  	FcloseProc        uintptr
  6636  	FinputProc        uintptr
  6637  	FoutputProc       uintptr
  6638  	FseekProc         uintptr
  6639  	FsetOptionProc    uintptr
  6640  	FgetOptionProc    uintptr
  6641  	FwatchProc        uintptr
  6642  	FgetHandleProc    uintptr
  6643  	Fclose2Proc       uintptr
  6644  	FblockModeProc    uintptr
  6645  	FflushProc        uintptr
  6646  	FhandlerProc      uintptr
  6647  	FwideSeekProc     uintptr
  6648  	FthreadActionProc uintptr
  6649  	FtruncateProc     uintptr
  6650  }
  6651  
  6652  type Tcl_ChannelType = Tcl_ChannelType1
  6653  
  6654  type Tcl_PathType = uint32
  6655  
  6656  type Tcl_GlobTypeData1 = struct {
  6657  	Ftype       int32
  6658  	Fperm       int32
  6659  	FmacType    uintptr
  6660  	FmacCreator uintptr
  6661  }
  6662  
  6663  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  6664  
  6665  type utimbuf = struct {
  6666  	Factime  int32
  6667  	Fmodtime int32
  6668  }
  6669  
  6670  type Tcl_FSVersion = uintptr
  6671  
  6672  type Tcl_Filesystem1 = struct {
  6673  	FtypeName                 uintptr
  6674  	FstructureLength          int32
  6675  	Fversion                  Tcl_FSVersion
  6676  	FpathInFilesystemProc     uintptr
  6677  	FdupInternalRepProc       uintptr
  6678  	FfreeInternalRepProc      uintptr
  6679  	FinternalToNormalizedProc uintptr
  6680  	FcreateInternalRepProc    uintptr
  6681  	FnormalizePathProc        uintptr
  6682  	FfilesystemPathTypeProc   uintptr
  6683  	FfilesystemSeparatorProc  uintptr
  6684  	FstatProc                 uintptr
  6685  	FaccessProc               uintptr
  6686  	FopenFileChannelProc      uintptr
  6687  	FmatchInDirectoryProc     uintptr
  6688  	FutimeProc                uintptr
  6689  	FlinkProc                 uintptr
  6690  	FlistVolumesProc          uintptr
  6691  	FfileAttrStringsProc      uintptr
  6692  	FfileAttrsGetProc         uintptr
  6693  	FfileAttrsSetProc         uintptr
  6694  	FcreateDirectoryProc      uintptr
  6695  	FremoveDirectoryProc      uintptr
  6696  	FdeleteFileProc           uintptr
  6697  	FcopyFileProc             uintptr
  6698  	FrenameFileProc           uintptr
  6699  	FcopyDirectoryProc        uintptr
  6700  	FlstatProc                uintptr
  6701  	FloadFileProc             uintptr
  6702  	FgetCwdProc               uintptr
  6703  	FchdirProc                uintptr
  6704  }
  6705  
  6706  type Tcl_Filesystem = Tcl_Filesystem1
  6707  
  6708  type Tcl_NotifierProcs1 = struct {
  6709  	FsetTimerProc          uintptr
  6710  	FwaitForEventProc      uintptr
  6711  	FcreateFileHandlerProc uintptr
  6712  	FdeleteFileHandlerProc uintptr
  6713  	FinitNotifierProc      uintptr
  6714  	FfinalizeNotifierProc  uintptr
  6715  	FalertNotifierProc     uintptr
  6716  	FserviceModeHookProc   uintptr
  6717  }
  6718  
  6719  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  6720  
  6721  type Tcl_Token1 = struct {
  6722  	Ftype          int32
  6723  	Fstart         uintptr
  6724  	Fsize          int32
  6725  	FnumComponents int32
  6726  }
  6727  
  6728  type Tcl_Token = Tcl_Token1
  6729  
  6730  type Tcl_Parse1 = struct {
  6731  	FcommentStart    uintptr
  6732  	FcommentSize     int32
  6733  	FcommandStart    uintptr
  6734  	FcommandSize     int32
  6735  	FnumWords        int32
  6736  	FtokenPtr        uintptr
  6737  	FnumTokens       int32
  6738  	FtokensAvailable int32
  6739  	FerrorType       int32
  6740  	Fstring          uintptr
  6741  	Fend             uintptr
  6742  	Finterp          uintptr
  6743  	Fterm            uintptr
  6744  	Fincomplete      int32
  6745  	FstaticTokens    [20]Tcl_Token
  6746  }
  6747  
  6748  type Tcl_Parse = Tcl_Parse1
  6749  
  6750  type Tcl_EncodingType1 = struct {
  6751  	FencodingName uintptr
  6752  	FtoUtfProc    uintptr
  6753  	FfromUtfProc  uintptr
  6754  	FfreeProc     uintptr
  6755  	FclientData   ClientData
  6756  	FnullSize     int32
  6757  }
  6758  
  6759  type Tcl_EncodingType = Tcl_EncodingType1
  6760  
  6761  type Tcl_UniChar = uint16
  6762  
  6763  type Tcl_Config1 = struct {
  6764  	Fkey   uintptr
  6765  	Fvalue uintptr
  6766  }
  6767  
  6768  type Tcl_Config = Tcl_Config1
  6769  type mp_digit = uint32
  6770  
  6771  type Tcl_ArgvInfo = struct {
  6772  	Ftype       int32
  6773  	FkeyStr     uintptr
  6774  	FsrcPtr     uintptr
  6775  	FdstPtr     uintptr
  6776  	FhelpStr    uintptr
  6777  	FclientData ClientData
  6778  }
  6779  
  6780  type TclPlatStubs1 = struct {
  6781  	Fmagic int32
  6782  	Fhooks uintptr
  6783  }
  6784  
  6785  type TclStubHooks = struct {
  6786  	FtclPlatStubs    uintptr
  6787  	FtclIntStubs     uintptr
  6788  	FtclIntPlatStubs uintptr
  6789  }
  6790  
  6791  type TclStubs1 = struct {
  6792  	Fmagic                                  int32
  6793  	Fhooks                                  uintptr
  6794  	Ftcl_PkgProvideEx                       uintptr
  6795  	Ftcl_PkgRequireEx                       uintptr
  6796  	Ftcl_Panic                              uintptr
  6797  	Ftcl_Alloc                              uintptr
  6798  	Ftcl_Free                               uintptr
  6799  	Ftcl_Realloc                            uintptr
  6800  	Ftcl_DbCkalloc                          uintptr
  6801  	Ftcl_DbCkfree                           uintptr
  6802  	Ftcl_DbCkrealloc                        uintptr
  6803  	Ftcl_CreateFileHandler                  uintptr
  6804  	Ftcl_DeleteFileHandler                  uintptr
  6805  	Ftcl_SetTimer                           uintptr
  6806  	Ftcl_Sleep                              uintptr
  6807  	Ftcl_WaitForEvent                       uintptr
  6808  	Ftcl_AppendAllObjTypes                  uintptr
  6809  	Ftcl_AppendStringsToObj                 uintptr
  6810  	Ftcl_AppendToObj                        uintptr
  6811  	Ftcl_ConcatObj                          uintptr
  6812  	Ftcl_ConvertToType                      uintptr
  6813  	Ftcl_DbDecrRefCount                     uintptr
  6814  	Ftcl_DbIncrRefCount                     uintptr
  6815  	Ftcl_DbIsShared                         uintptr
  6816  	Ftcl_DbNewBooleanObj                    uintptr
  6817  	Ftcl_DbNewByteArrayObj                  uintptr
  6818  	Ftcl_DbNewDoubleObj                     uintptr
  6819  	Ftcl_DbNewListObj                       uintptr
  6820  	Ftcl_DbNewLongObj                       uintptr
  6821  	Ftcl_DbNewObj                           uintptr
  6822  	Ftcl_DbNewStringObj                     uintptr
  6823  	Ftcl_DuplicateObj                       uintptr
  6824  	FtclFreeObj                             uintptr
  6825  	Ftcl_GetBoolean                         uintptr
  6826  	Ftcl_GetBooleanFromObj                  uintptr
  6827  	Ftcl_GetByteArrayFromObj                uintptr
  6828  	Ftcl_GetDouble                          uintptr
  6829  	Ftcl_GetDoubleFromObj                   uintptr
  6830  	Ftcl_GetIndexFromObj                    uintptr
  6831  	Ftcl_GetInt                             uintptr
  6832  	Ftcl_GetIntFromObj                      uintptr
  6833  	Ftcl_GetLongFromObj                     uintptr
  6834  	Ftcl_GetObjType                         uintptr
  6835  	Ftcl_GetStringFromObj                   uintptr
  6836  	Ftcl_InvalidateStringRep                uintptr
  6837  	Ftcl_ListObjAppendList                  uintptr
  6838  	Ftcl_ListObjAppendElement               uintptr
  6839  	Ftcl_ListObjGetElements                 uintptr
  6840  	Ftcl_ListObjIndex                       uintptr
  6841  	Ftcl_ListObjLength                      uintptr
  6842  	Ftcl_ListObjReplace                     uintptr
  6843  	Ftcl_NewBooleanObj                      uintptr
  6844  	Ftcl_NewByteArrayObj                    uintptr
  6845  	Ftcl_NewDoubleObj                       uintptr
  6846  	Ftcl_NewIntObj                          uintptr
  6847  	Ftcl_NewListObj                         uintptr
  6848  	Ftcl_NewLongObj                         uintptr
  6849  	Ftcl_NewObj                             uintptr
  6850  	Ftcl_NewStringObj                       uintptr
  6851  	Ftcl_SetBooleanObj                      uintptr
  6852  	Ftcl_SetByteArrayLength                 uintptr
  6853  	Ftcl_SetByteArrayObj                    uintptr
  6854  	Ftcl_SetDoubleObj                       uintptr
  6855  	Ftcl_SetIntObj                          uintptr
  6856  	Ftcl_SetListObj                         uintptr
  6857  	Ftcl_SetLongObj                         uintptr
  6858  	Ftcl_SetObjLength                       uintptr
  6859  	Ftcl_SetStringObj                       uintptr
  6860  	Ftcl_AddErrorInfo                       uintptr
  6861  	Ftcl_AddObjErrorInfo                    uintptr
  6862  	Ftcl_AllowExceptions                    uintptr
  6863  	Ftcl_AppendElement                      uintptr
  6864  	Ftcl_AppendResult                       uintptr
  6865  	Ftcl_AsyncCreate                        uintptr
  6866  	Ftcl_AsyncDelete                        uintptr
  6867  	Ftcl_AsyncInvoke                        uintptr
  6868  	Ftcl_AsyncMark                          uintptr
  6869  	Ftcl_AsyncReady                         uintptr
  6870  	Ftcl_BackgroundError                    uintptr
  6871  	Ftcl_Backslash                          uintptr
  6872  	Ftcl_BadChannelOption                   uintptr
  6873  	Ftcl_CallWhenDeleted                    uintptr
  6874  	Ftcl_CancelIdleCall                     uintptr
  6875  	Ftcl_Close                              uintptr
  6876  	Ftcl_CommandComplete                    uintptr
  6877  	Ftcl_Concat                             uintptr
  6878  	Ftcl_ConvertElement                     uintptr
  6879  	Ftcl_ConvertCountedElement              uintptr
  6880  	Ftcl_CreateAlias                        uintptr
  6881  	Ftcl_CreateAliasObj                     uintptr
  6882  	Ftcl_CreateChannel                      uintptr
  6883  	Ftcl_CreateChannelHandler               uintptr
  6884  	Ftcl_CreateCloseHandler                 uintptr
  6885  	Ftcl_CreateCommand                      uintptr
  6886  	Ftcl_CreateEventSource                  uintptr
  6887  	Ftcl_CreateExitHandler                  uintptr
  6888  	Ftcl_CreateInterp                       uintptr
  6889  	Ftcl_CreateMathFunc                     uintptr
  6890  	Ftcl_CreateObjCommand                   uintptr
  6891  	Ftcl_CreateSlave                        uintptr
  6892  	Ftcl_CreateTimerHandler                 uintptr
  6893  	Ftcl_CreateTrace                        uintptr
  6894  	Ftcl_DeleteAssocData                    uintptr
  6895  	Ftcl_DeleteChannelHandler               uintptr
  6896  	Ftcl_DeleteCloseHandler                 uintptr
  6897  	Ftcl_DeleteCommand                      uintptr
  6898  	Ftcl_DeleteCommandFromToken             uintptr
  6899  	Ftcl_DeleteEvents                       uintptr
  6900  	Ftcl_DeleteEventSource                  uintptr
  6901  	Ftcl_DeleteExitHandler                  uintptr
  6902  	Ftcl_DeleteHashEntry                    uintptr
  6903  	Ftcl_DeleteHashTable                    uintptr
  6904  	Ftcl_DeleteInterp                       uintptr
  6905  	Ftcl_DetachPids                         uintptr
  6906  	Ftcl_DeleteTimerHandler                 uintptr
  6907  	Ftcl_DeleteTrace                        uintptr
  6908  	Ftcl_DontCallWhenDeleted                uintptr
  6909  	Ftcl_DoOneEvent                         uintptr
  6910  	Ftcl_DoWhenIdle                         uintptr
  6911  	Ftcl_DStringAppend                      uintptr
  6912  	Ftcl_DStringAppendElement               uintptr
  6913  	Ftcl_DStringEndSublist                  uintptr
  6914  	Ftcl_DStringFree                        uintptr
  6915  	Ftcl_DStringGetResult                   uintptr
  6916  	Ftcl_DStringInit                        uintptr
  6917  	Ftcl_DStringResult                      uintptr
  6918  	Ftcl_DStringSetLength                   uintptr
  6919  	Ftcl_DStringStartSublist                uintptr
  6920  	Ftcl_Eof                                uintptr
  6921  	Ftcl_ErrnoId                            uintptr
  6922  	Ftcl_ErrnoMsg                           uintptr
  6923  	Ftcl_Eval                               uintptr
  6924  	Ftcl_EvalFile                           uintptr
  6925  	Ftcl_EvalObj                            uintptr
  6926  	Ftcl_EventuallyFree                     uintptr
  6927  	Ftcl_Exit                               uintptr
  6928  	Ftcl_ExposeCommand                      uintptr
  6929  	Ftcl_ExprBoolean                        uintptr
  6930  	Ftcl_ExprBooleanObj                     uintptr
  6931  	Ftcl_ExprDouble                         uintptr
  6932  	Ftcl_ExprDoubleObj                      uintptr
  6933  	Ftcl_ExprLong                           uintptr
  6934  	Ftcl_ExprLongObj                        uintptr
  6935  	Ftcl_ExprObj                            uintptr
  6936  	Ftcl_ExprString                         uintptr
  6937  	Ftcl_Finalize                           uintptr
  6938  	Ftcl_FindExecutable                     uintptr
  6939  	Ftcl_FirstHashEntry                     uintptr
  6940  	Ftcl_Flush                              uintptr
  6941  	Ftcl_FreeResult                         uintptr
  6942  	Ftcl_GetAlias                           uintptr
  6943  	Ftcl_GetAliasObj                        uintptr
  6944  	Ftcl_GetAssocData                       uintptr
  6945  	Ftcl_GetChannel                         uintptr
  6946  	Ftcl_GetChannelBufferSize               uintptr
  6947  	Ftcl_GetChannelHandle                   uintptr
  6948  	Ftcl_GetChannelInstanceData             uintptr
  6949  	Ftcl_GetChannelMode                     uintptr
  6950  	Ftcl_GetChannelName                     uintptr
  6951  	Ftcl_GetChannelOption                   uintptr
  6952  	Ftcl_GetChannelType                     uintptr
  6953  	Ftcl_GetCommandInfo                     uintptr
  6954  	Ftcl_GetCommandName                     uintptr
  6955  	Ftcl_GetErrno                           uintptr
  6956  	Ftcl_GetHostName                        uintptr
  6957  	Ftcl_GetInterpPath                      uintptr
  6958  	Ftcl_GetMaster                          uintptr
  6959  	Ftcl_GetNameOfExecutable                uintptr
  6960  	Ftcl_GetObjResult                       uintptr
  6961  	Ftcl_GetOpenFile                        uintptr
  6962  	Ftcl_GetPathType                        uintptr
  6963  	Ftcl_Gets                               uintptr
  6964  	Ftcl_GetsObj                            uintptr
  6965  	Ftcl_GetServiceMode                     uintptr
  6966  	Ftcl_GetSlave                           uintptr
  6967  	Ftcl_GetStdChannel                      uintptr
  6968  	Ftcl_GetStringResult                    uintptr
  6969  	Ftcl_GetVar                             uintptr
  6970  	Ftcl_GetVar2                            uintptr
  6971  	Ftcl_GlobalEval                         uintptr
  6972  	Ftcl_GlobalEvalObj                      uintptr
  6973  	Ftcl_HideCommand                        uintptr
  6974  	Ftcl_Init                               uintptr
  6975  	Ftcl_InitHashTable                      uintptr
  6976  	Ftcl_InputBlocked                       uintptr
  6977  	Ftcl_InputBuffered                      uintptr
  6978  	Ftcl_InterpDeleted                      uintptr
  6979  	Ftcl_IsSafe                             uintptr
  6980  	Ftcl_JoinPath                           uintptr
  6981  	Ftcl_LinkVar                            uintptr
  6982  	Freserved188                            uintptr
  6983  	Ftcl_MakeFileChannel                    uintptr
  6984  	Ftcl_MakeSafe                           uintptr
  6985  	Ftcl_MakeTcpClientChannel               uintptr
  6986  	Ftcl_Merge                              uintptr
  6987  	Ftcl_NextHashEntry                      uintptr
  6988  	Ftcl_NotifyChannel                      uintptr
  6989  	Ftcl_ObjGetVar2                         uintptr
  6990  	Ftcl_ObjSetVar2                         uintptr
  6991  	Ftcl_OpenCommandChannel                 uintptr
  6992  	Ftcl_OpenFileChannel                    uintptr
  6993  	Ftcl_OpenTcpClient                      uintptr
  6994  	Ftcl_OpenTcpServer                      uintptr
  6995  	Ftcl_Preserve                           uintptr
  6996  	Ftcl_PrintDouble                        uintptr
  6997  	Ftcl_PutEnv                             uintptr
  6998  	Ftcl_PosixError                         uintptr
  6999  	Ftcl_QueueEvent                         uintptr
  7000  	Ftcl_Read                               uintptr
  7001  	Ftcl_ReapDetachedProcs                  uintptr
  7002  	Ftcl_RecordAndEval                      uintptr
  7003  	Ftcl_RecordAndEvalObj                   uintptr
  7004  	Ftcl_RegisterChannel                    uintptr
  7005  	Ftcl_RegisterObjType                    uintptr
  7006  	Ftcl_RegExpCompile                      uintptr
  7007  	Ftcl_RegExpExec                         uintptr
  7008  	Ftcl_RegExpMatch                        uintptr
  7009  	Ftcl_RegExpRange                        uintptr
  7010  	Ftcl_Release                            uintptr
  7011  	Ftcl_ResetResult                        uintptr
  7012  	Ftcl_ScanElement                        uintptr
  7013  	Ftcl_ScanCountedElement                 uintptr
  7014  	Ftcl_SeekOld                            uintptr
  7015  	Ftcl_ServiceAll                         uintptr
  7016  	Ftcl_ServiceEvent                       uintptr
  7017  	Ftcl_SetAssocData                       uintptr
  7018  	Ftcl_SetChannelBufferSize               uintptr
  7019  	Ftcl_SetChannelOption                   uintptr
  7020  	Ftcl_SetCommandInfo                     uintptr
  7021  	Ftcl_SetErrno                           uintptr
  7022  	Ftcl_SetErrorCode                       uintptr
  7023  	Ftcl_SetMaxBlockTime                    uintptr
  7024  	Ftcl_SetPanicProc                       uintptr
  7025  	Ftcl_SetRecursionLimit                  uintptr
  7026  	Ftcl_SetResult                          uintptr
  7027  	Ftcl_SetServiceMode                     uintptr
  7028  	Ftcl_SetObjErrorCode                    uintptr
  7029  	Ftcl_SetObjResult                       uintptr
  7030  	Ftcl_SetStdChannel                      uintptr
  7031  	Ftcl_SetVar                             uintptr
  7032  	Ftcl_SetVar2                            uintptr
  7033  	Ftcl_SignalId                           uintptr
  7034  	Ftcl_SignalMsg                          uintptr
  7035  	Ftcl_SourceRCFile                       uintptr
  7036  	Ftcl_SplitList                          uintptr
  7037  	Ftcl_SplitPath                          uintptr
  7038  	Ftcl_StaticPackage                      uintptr
  7039  	Ftcl_StringMatch                        uintptr
  7040  	Ftcl_TellOld                            uintptr
  7041  	Ftcl_TraceVar                           uintptr
  7042  	Ftcl_TraceVar2                          uintptr
  7043  	Ftcl_TranslateFileName                  uintptr
  7044  	Ftcl_Ungets                             uintptr
  7045  	Ftcl_UnlinkVar                          uintptr
  7046  	Ftcl_UnregisterChannel                  uintptr
  7047  	Ftcl_UnsetVar                           uintptr
  7048  	Ftcl_UnsetVar2                          uintptr
  7049  	Ftcl_UntraceVar                         uintptr
  7050  	Ftcl_UntraceVar2                        uintptr
  7051  	Ftcl_UpdateLinkedVar                    uintptr
  7052  	Ftcl_UpVar                              uintptr
  7053  	Ftcl_UpVar2                             uintptr
  7054  	Ftcl_VarEval                            uintptr
  7055  	Ftcl_VarTraceInfo                       uintptr
  7056  	Ftcl_VarTraceInfo2                      uintptr
  7057  	Ftcl_Write                              uintptr
  7058  	Ftcl_WrongNumArgs                       uintptr
  7059  	Ftcl_DumpActiveMemory                   uintptr
  7060  	Ftcl_ValidateAllMemory                  uintptr
  7061  	Ftcl_AppendResultVA                     uintptr
  7062  	Ftcl_AppendStringsToObjVA               uintptr
  7063  	Ftcl_HashStats                          uintptr
  7064  	Ftcl_ParseVar                           uintptr
  7065  	Ftcl_PkgPresent                         uintptr
  7066  	Ftcl_PkgPresentEx                       uintptr
  7067  	Ftcl_PkgProvide                         uintptr
  7068  	Ftcl_PkgRequire                         uintptr
  7069  	Ftcl_SetErrorCodeVA                     uintptr
  7070  	Ftcl_VarEvalVA                          uintptr
  7071  	Ftcl_WaitPid                            uintptr
  7072  	Ftcl_PanicVA                            uintptr
  7073  	Ftcl_GetVersion                         uintptr
  7074  	Ftcl_InitMemory                         uintptr
  7075  	Ftcl_StackChannel                       uintptr
  7076  	Ftcl_UnstackChannel                     uintptr
  7077  	Ftcl_GetStackedChannel                  uintptr
  7078  	Ftcl_SetMainLoop                        uintptr
  7079  	Freserved285                            uintptr
  7080  	Ftcl_AppendObjToObj                     uintptr
  7081  	Ftcl_CreateEncoding                     uintptr
  7082  	Ftcl_CreateThreadExitHandler            uintptr
  7083  	Ftcl_DeleteThreadExitHandler            uintptr
  7084  	Ftcl_DiscardResult                      uintptr
  7085  	Ftcl_EvalEx                             uintptr
  7086  	Ftcl_EvalObjv                           uintptr
  7087  	Ftcl_EvalObjEx                          uintptr
  7088  	Ftcl_ExitThread                         uintptr
  7089  	Ftcl_ExternalToUtf                      uintptr
  7090  	Ftcl_ExternalToUtfDString               uintptr
  7091  	Ftcl_FinalizeThread                     uintptr
  7092  	Ftcl_FinalizeNotifier                   uintptr
  7093  	Ftcl_FreeEncoding                       uintptr
  7094  	Ftcl_GetCurrentThread                   uintptr
  7095  	Ftcl_GetEncoding                        uintptr
  7096  	Ftcl_GetEncodingName                    uintptr
  7097  	Ftcl_GetEncodingNames                   uintptr
  7098  	Ftcl_GetIndexFromObjStruct              uintptr
  7099  	Ftcl_GetThreadData                      uintptr
  7100  	Ftcl_GetVar2Ex                          uintptr
  7101  	Ftcl_InitNotifier                       uintptr
  7102  	Ftcl_MutexLock                          uintptr
  7103  	Ftcl_MutexUnlock                        uintptr
  7104  	Ftcl_ConditionNotify                    uintptr
  7105  	Ftcl_ConditionWait                      uintptr
  7106  	Ftcl_NumUtfChars                        uintptr
  7107  	Ftcl_ReadChars                          uintptr
  7108  	Ftcl_RestoreResult                      uintptr
  7109  	Ftcl_SaveResult                         uintptr
  7110  	Ftcl_SetSystemEncoding                  uintptr
  7111  	Ftcl_SetVar2Ex                          uintptr
  7112  	Ftcl_ThreadAlert                        uintptr
  7113  	Ftcl_ThreadQueueEvent                   uintptr
  7114  	Ftcl_UniCharAtIndex                     uintptr
  7115  	Ftcl_UniCharToLower                     uintptr
  7116  	Ftcl_UniCharToTitle                     uintptr
  7117  	Ftcl_UniCharToUpper                     uintptr
  7118  	Ftcl_UniCharToUtf                       uintptr
  7119  	Ftcl_UtfAtIndex                         uintptr
  7120  	Ftcl_UtfCharComplete                    uintptr
  7121  	Ftcl_UtfBackslash                       uintptr
  7122  	Ftcl_UtfFindFirst                       uintptr
  7123  	Ftcl_UtfFindLast                        uintptr
  7124  	Ftcl_UtfNext                            uintptr
  7125  	Ftcl_UtfPrev                            uintptr
  7126  	Ftcl_UtfToExternal                      uintptr
  7127  	Ftcl_UtfToExternalDString               uintptr
  7128  	Ftcl_UtfToLower                         uintptr
  7129  	Ftcl_UtfToTitle                         uintptr
  7130  	Ftcl_UtfToUniChar                       uintptr
  7131  	Ftcl_UtfToUpper                         uintptr
  7132  	Ftcl_WriteChars                         uintptr
  7133  	Ftcl_WriteObj                           uintptr
  7134  	Ftcl_GetString                          uintptr
  7135  	Ftcl_GetDefaultEncodingDir              uintptr
  7136  	Ftcl_SetDefaultEncodingDir              uintptr
  7137  	Ftcl_AlertNotifier                      uintptr
  7138  	Ftcl_ServiceModeHook                    uintptr
  7139  	Ftcl_UniCharIsAlnum                     uintptr
  7140  	Ftcl_UniCharIsAlpha                     uintptr
  7141  	Ftcl_UniCharIsDigit                     uintptr
  7142  	Ftcl_UniCharIsLower                     uintptr
  7143  	Ftcl_UniCharIsSpace                     uintptr
  7144  	Ftcl_UniCharIsUpper                     uintptr
  7145  	Ftcl_UniCharIsWordChar                  uintptr
  7146  	Ftcl_UniCharLen                         uintptr
  7147  	Ftcl_UniCharNcmp                        uintptr
  7148  	Ftcl_UniCharToUtfDString                uintptr
  7149  	Ftcl_UtfToUniCharDString                uintptr
  7150  	Ftcl_GetRegExpFromObj                   uintptr
  7151  	Ftcl_EvalTokens                         uintptr
  7152  	Ftcl_FreeParse                          uintptr
  7153  	Ftcl_LogCommandInfo                     uintptr
  7154  	Ftcl_ParseBraces                        uintptr
  7155  	Ftcl_ParseCommand                       uintptr
  7156  	Ftcl_ParseExpr                          uintptr
  7157  	Ftcl_ParseQuotedString                  uintptr
  7158  	Ftcl_ParseVarName                       uintptr
  7159  	Ftcl_GetCwd                             uintptr
  7160  	Ftcl_Chdir                              uintptr
  7161  	Ftcl_Access                             uintptr
  7162  	Ftcl_Stat                               uintptr
  7163  	Ftcl_UtfNcmp                            uintptr
  7164  	Ftcl_UtfNcasecmp                        uintptr
  7165  	Ftcl_StringCaseMatch                    uintptr
  7166  	Ftcl_UniCharIsControl                   uintptr
  7167  	Ftcl_UniCharIsGraph                     uintptr
  7168  	Ftcl_UniCharIsPrint                     uintptr
  7169  	Ftcl_UniCharIsPunct                     uintptr
  7170  	Ftcl_RegExpExecObj                      uintptr
  7171  	Ftcl_RegExpGetInfo                      uintptr
  7172  	Ftcl_NewUnicodeObj                      uintptr
  7173  	Ftcl_SetUnicodeObj                      uintptr
  7174  	Ftcl_GetCharLength                      uintptr
  7175  	Ftcl_GetUniChar                         uintptr
  7176  	Ftcl_GetUnicode                         uintptr
  7177  	Ftcl_GetRange                           uintptr
  7178  	Ftcl_AppendUnicodeToObj                 uintptr
  7179  	Ftcl_RegExpMatchObj                     uintptr
  7180  	Ftcl_SetNotifier                        uintptr
  7181  	Ftcl_GetAllocMutex                      uintptr
  7182  	Ftcl_GetChannelNames                    uintptr
  7183  	Ftcl_GetChannelNamesEx                  uintptr
  7184  	Ftcl_ProcObjCmd                         uintptr
  7185  	Ftcl_ConditionFinalize                  uintptr
  7186  	Ftcl_MutexFinalize                      uintptr
  7187  	Ftcl_CreateThread                       uintptr
  7188  	Ftcl_ReadRaw                            uintptr
  7189  	Ftcl_WriteRaw                           uintptr
  7190  	Ftcl_GetTopChannel                      uintptr
  7191  	Ftcl_ChannelBuffered                    uintptr
  7192  	Ftcl_ChannelName                        uintptr
  7193  	Ftcl_ChannelVersion                     uintptr
  7194  	Ftcl_ChannelBlockModeProc               uintptr
  7195  	Ftcl_ChannelCloseProc                   uintptr
  7196  	Ftcl_ChannelClose2Proc                  uintptr
  7197  	Ftcl_ChannelInputProc                   uintptr
  7198  	Ftcl_ChannelOutputProc                  uintptr
  7199  	Ftcl_ChannelSeekProc                    uintptr
  7200  	Ftcl_ChannelSetOptionProc               uintptr
  7201  	Ftcl_ChannelGetOptionProc               uintptr
  7202  	Ftcl_ChannelWatchProc                   uintptr
  7203  	Ftcl_ChannelGetHandleProc               uintptr
  7204  	Ftcl_ChannelFlushProc                   uintptr
  7205  	Ftcl_ChannelHandlerProc                 uintptr
  7206  	Ftcl_JoinThread                         uintptr
  7207  	Ftcl_IsChannelShared                    uintptr
  7208  	Ftcl_IsChannelRegistered                uintptr
  7209  	Ftcl_CutChannel                         uintptr
  7210  	Ftcl_SpliceChannel                      uintptr
  7211  	Ftcl_ClearChannelHandlers               uintptr
  7212  	Ftcl_IsChannelExisting                  uintptr
  7213  	Ftcl_UniCharNcasecmp                    uintptr
  7214  	Ftcl_UniCharCaseMatch                   uintptr
  7215  	Ftcl_FindHashEntry                      uintptr
  7216  	Ftcl_CreateHashEntry                    uintptr
  7217  	Ftcl_InitCustomHashTable                uintptr
  7218  	Ftcl_InitObjHashTable                   uintptr
  7219  	Ftcl_CommandTraceInfo                   uintptr
  7220  	Ftcl_TraceCommand                       uintptr
  7221  	Ftcl_UntraceCommand                     uintptr
  7222  	Ftcl_AttemptAlloc                       uintptr
  7223  	Ftcl_AttemptDbCkalloc                   uintptr
  7224  	Ftcl_AttemptRealloc                     uintptr
  7225  	Ftcl_AttemptDbCkrealloc                 uintptr
  7226  	Ftcl_AttemptSetObjLength                uintptr
  7227  	Ftcl_GetChannelThread                   uintptr
  7228  	Ftcl_GetUnicodeFromObj                  uintptr
  7229  	Ftcl_GetMathFuncInfo                    uintptr
  7230  	Ftcl_ListMathFuncs                      uintptr
  7231  	Ftcl_SubstObj                           uintptr
  7232  	Ftcl_DetachChannel                      uintptr
  7233  	Ftcl_IsStandardChannel                  uintptr
  7234  	Ftcl_FSCopyFile                         uintptr
  7235  	Ftcl_FSCopyDirectory                    uintptr
  7236  	Ftcl_FSCreateDirectory                  uintptr
  7237  	Ftcl_FSDeleteFile                       uintptr
  7238  	Ftcl_FSLoadFile                         uintptr
  7239  	Ftcl_FSMatchInDirectory                 uintptr
  7240  	Ftcl_FSLink                             uintptr
  7241  	Ftcl_FSRemoveDirectory                  uintptr
  7242  	Ftcl_FSRenameFile                       uintptr
  7243  	Ftcl_FSLstat                            uintptr
  7244  	Ftcl_FSUtime                            uintptr
  7245  	Ftcl_FSFileAttrsGet                     uintptr
  7246  	Ftcl_FSFileAttrsSet                     uintptr
  7247  	Ftcl_FSFileAttrStrings                  uintptr
  7248  	Ftcl_FSStat                             uintptr
  7249  	Ftcl_FSAccess                           uintptr
  7250  	Ftcl_FSOpenFileChannel                  uintptr
  7251  	Ftcl_FSGetCwd                           uintptr
  7252  	Ftcl_FSChdir                            uintptr
  7253  	Ftcl_FSConvertToPathType                uintptr
  7254  	Ftcl_FSJoinPath                         uintptr
  7255  	Ftcl_FSSplitPath                        uintptr
  7256  	Ftcl_FSEqualPaths                       uintptr
  7257  	Ftcl_FSGetNormalizedPath                uintptr
  7258  	Ftcl_FSJoinToPath                       uintptr
  7259  	Ftcl_FSGetInternalRep                   uintptr
  7260  	Ftcl_FSGetTranslatedPath                uintptr
  7261  	Ftcl_FSEvalFile                         uintptr
  7262  	Ftcl_FSNewNativePath                    uintptr
  7263  	Ftcl_FSGetNativePath                    uintptr
  7264  	Ftcl_FSFileSystemInfo                   uintptr
  7265  	Ftcl_FSPathSeparator                    uintptr
  7266  	Ftcl_FSListVolumes                      uintptr
  7267  	Ftcl_FSRegister                         uintptr
  7268  	Ftcl_FSUnregister                       uintptr
  7269  	Ftcl_FSData                             uintptr
  7270  	Ftcl_FSGetTranslatedStringPath          uintptr
  7271  	Ftcl_FSGetFileSystemForPath             uintptr
  7272  	Ftcl_FSGetPathType                      uintptr
  7273  	Ftcl_OutputBuffered                     uintptr
  7274  	Ftcl_FSMountsChanged                    uintptr
  7275  	Ftcl_EvalTokensStandard                 uintptr
  7276  	Ftcl_GetTime                            uintptr
  7277  	Ftcl_CreateObjTrace                     uintptr
  7278  	Ftcl_GetCommandInfoFromToken            uintptr
  7279  	Ftcl_SetCommandInfoFromToken            uintptr
  7280  	Ftcl_DbNewWideIntObj                    uintptr
  7281  	Ftcl_GetWideIntFromObj                  uintptr
  7282  	Ftcl_NewWideIntObj                      uintptr
  7283  	Ftcl_SetWideIntObj                      uintptr
  7284  	Ftcl_AllocStatBuf                       uintptr
  7285  	Ftcl_Seek                               uintptr
  7286  	Ftcl_Tell                               uintptr
  7287  	Ftcl_ChannelWideSeekProc                uintptr
  7288  	Ftcl_DictObjPut                         uintptr
  7289  	Ftcl_DictObjGet                         uintptr
  7290  	Ftcl_DictObjRemove                      uintptr
  7291  	Ftcl_DictObjSize                        uintptr
  7292  	Ftcl_DictObjFirst                       uintptr
  7293  	Ftcl_DictObjNext                        uintptr
  7294  	Ftcl_DictObjDone                        uintptr
  7295  	Ftcl_DictObjPutKeyList                  uintptr
  7296  	Ftcl_DictObjRemoveKeyList               uintptr
  7297  	Ftcl_NewDictObj                         uintptr
  7298  	Ftcl_DbNewDictObj                       uintptr
  7299  	Ftcl_RegisterConfig                     uintptr
  7300  	Ftcl_CreateNamespace                    uintptr
  7301  	Ftcl_DeleteNamespace                    uintptr
  7302  	Ftcl_AppendExportList                   uintptr
  7303  	Ftcl_Export                             uintptr
  7304  	Ftcl_Import                             uintptr
  7305  	Ftcl_ForgetImport                       uintptr
  7306  	Ftcl_GetCurrentNamespace                uintptr
  7307  	Ftcl_GetGlobalNamespace                 uintptr
  7308  	Ftcl_FindNamespace                      uintptr
  7309  	Ftcl_FindCommand                        uintptr
  7310  	Ftcl_GetCommandFromObj                  uintptr
  7311  	Ftcl_GetCommandFullName                 uintptr
  7312  	Ftcl_FSEvalFileEx                       uintptr
  7313  	Ftcl_SetExitProc                        uintptr
  7314  	Ftcl_LimitAddHandler                    uintptr
  7315  	Ftcl_LimitRemoveHandler                 uintptr
  7316  	Ftcl_LimitReady                         uintptr
  7317  	Ftcl_LimitCheck                         uintptr
  7318  	Ftcl_LimitExceeded                      uintptr
  7319  	Ftcl_LimitSetCommands                   uintptr
  7320  	Ftcl_LimitSetTime                       uintptr
  7321  	Ftcl_LimitSetGranularity                uintptr
  7322  	Ftcl_LimitTypeEnabled                   uintptr
  7323  	Ftcl_LimitTypeExceeded                  uintptr
  7324  	Ftcl_LimitTypeSet                       uintptr
  7325  	Ftcl_LimitTypeReset                     uintptr
  7326  	Ftcl_LimitGetCommands                   uintptr
  7327  	Ftcl_LimitGetTime                       uintptr
  7328  	Ftcl_LimitGetGranularity                uintptr
  7329  	Ftcl_SaveInterpState                    uintptr
  7330  	Ftcl_RestoreInterpState                 uintptr
  7331  	Ftcl_DiscardInterpState                 uintptr
  7332  	Ftcl_SetReturnOptions                   uintptr
  7333  	Ftcl_GetReturnOptions                   uintptr
  7334  	Ftcl_IsEnsemble                         uintptr
  7335  	Ftcl_CreateEnsemble                     uintptr
  7336  	Ftcl_FindEnsemble                       uintptr
  7337  	Ftcl_SetEnsembleSubcommandList          uintptr
  7338  	Ftcl_SetEnsembleMappingDict             uintptr
  7339  	Ftcl_SetEnsembleUnknownHandler          uintptr
  7340  	Ftcl_SetEnsembleFlags                   uintptr
  7341  	Ftcl_GetEnsembleSubcommandList          uintptr
  7342  	Ftcl_GetEnsembleMappingDict             uintptr
  7343  	Ftcl_GetEnsembleUnknownHandler          uintptr
  7344  	Ftcl_GetEnsembleFlags                   uintptr
  7345  	Ftcl_GetEnsembleNamespace               uintptr
  7346  	Ftcl_SetTimeProc                        uintptr
  7347  	Ftcl_QueryTimeProc                      uintptr
  7348  	Ftcl_ChannelThreadActionProc            uintptr
  7349  	Ftcl_NewBignumObj                       uintptr
  7350  	Ftcl_DbNewBignumObj                     uintptr
  7351  	Ftcl_SetBignumObj                       uintptr
  7352  	Ftcl_GetBignumFromObj                   uintptr
  7353  	Ftcl_TakeBignumFromObj                  uintptr
  7354  	Ftcl_TruncateChannel                    uintptr
  7355  	Ftcl_ChannelTruncateProc                uintptr
  7356  	Ftcl_SetChannelErrorInterp              uintptr
  7357  	Ftcl_GetChannelErrorInterp              uintptr
  7358  	Ftcl_SetChannelError                    uintptr
  7359  	Ftcl_GetChannelError                    uintptr
  7360  	Ftcl_InitBignumFromDouble               uintptr
  7361  	Ftcl_GetNamespaceUnknownHandler         uintptr
  7362  	Ftcl_SetNamespaceUnknownHandler         uintptr
  7363  	Ftcl_GetEncodingFromObj                 uintptr
  7364  	Ftcl_GetEncodingSearchPath              uintptr
  7365  	Ftcl_SetEncodingSearchPath              uintptr
  7366  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  7367  	Ftcl_PkgRequireProc                     uintptr
  7368  	Ftcl_AppendObjToErrorInfo               uintptr
  7369  	Ftcl_AppendLimitedToObj                 uintptr
  7370  	Ftcl_Format                             uintptr
  7371  	Ftcl_AppendFormatToObj                  uintptr
  7372  	Ftcl_ObjPrintf                          uintptr
  7373  	Ftcl_AppendPrintfToObj                  uintptr
  7374  	Ftcl_CancelEval                         uintptr
  7375  	Ftcl_Canceled                           uintptr
  7376  	Ftcl_CreatePipe                         uintptr
  7377  	Ftcl_NRCreateCommand                    uintptr
  7378  	Ftcl_NREvalObj                          uintptr
  7379  	Ftcl_NREvalObjv                         uintptr
  7380  	Ftcl_NRCmdSwap                          uintptr
  7381  	Ftcl_NRAddCallback                      uintptr
  7382  	Ftcl_NRCallObjProc                      uintptr
  7383  	Ftcl_GetFSDeviceFromStat                uintptr
  7384  	Ftcl_GetFSInodeFromStat                 uintptr
  7385  	Ftcl_GetModeFromStat                    uintptr
  7386  	Ftcl_GetLinkCountFromStat               uintptr
  7387  	Ftcl_GetUserIdFromStat                  uintptr
  7388  	Ftcl_GetGroupIdFromStat                 uintptr
  7389  	Ftcl_GetDeviceTypeFromStat              uintptr
  7390  	Ftcl_GetAccessTimeFromStat              uintptr
  7391  	Ftcl_GetModificationTimeFromStat        uintptr
  7392  	Ftcl_GetChangeTimeFromStat              uintptr
  7393  	Ftcl_GetSizeFromStat                    uintptr
  7394  	Ftcl_GetBlocksFromStat                  uintptr
  7395  	Ftcl_GetBlockSizeFromStat               uintptr
  7396  	Ftcl_SetEnsembleParameterList           uintptr
  7397  	Ftcl_GetEnsembleParameterList           uintptr
  7398  	Ftcl_ParseArgsObjv                      uintptr
  7399  	Ftcl_GetErrorLine                       uintptr
  7400  	Ftcl_SetErrorLine                       uintptr
  7401  	Ftcl_TransferResult                     uintptr
  7402  	Ftcl_InterpActive                       uintptr
  7403  	Ftcl_BackgroundException                uintptr
  7404  	Ftcl_ZlibDeflate                        uintptr
  7405  	Ftcl_ZlibInflate                        uintptr
  7406  	Ftcl_ZlibCRC32                          uintptr
  7407  	Ftcl_ZlibAdler32                        uintptr
  7408  	Ftcl_ZlibStreamInit                     uintptr
  7409  	Ftcl_ZlibStreamGetCommandName           uintptr
  7410  	Ftcl_ZlibStreamEof                      uintptr
  7411  	Ftcl_ZlibStreamChecksum                 uintptr
  7412  	Ftcl_ZlibStreamPut                      uintptr
  7413  	Ftcl_ZlibStreamGet                      uintptr
  7414  	Ftcl_ZlibStreamClose                    uintptr
  7415  	Ftcl_ZlibStreamReset                    uintptr
  7416  	Ftcl_SetStartupScript                   uintptr
  7417  	Ftcl_GetStartupScript                   uintptr
  7418  	Ftcl_CloseEx                            uintptr
  7419  	Ftcl_NRExprObj                          uintptr
  7420  	Ftcl_NRSubstObj                         uintptr
  7421  	Ftcl_LoadFile                           uintptr
  7422  	Ftcl_FindSymbol                         uintptr
  7423  	Ftcl_FSUnloadFile                       uintptr
  7424  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7425  	Freserved631                            uintptr
  7426  	Freserved632                            uintptr
  7427  	Freserved633                            uintptr
  7428  	Freserved634                            uintptr
  7429  	Freserved635                            uintptr
  7430  	Freserved636                            uintptr
  7431  	Freserved637                            uintptr
  7432  	Freserved638                            uintptr
  7433  	Freserved639                            uintptr
  7434  	Freserved640                            uintptr
  7435  	Freserved641                            uintptr
  7436  	Freserved642                            uintptr
  7437  	Freserved643                            uintptr
  7438  	Freserved644                            uintptr
  7439  	Freserved645                            uintptr
  7440  	Freserved646                            uintptr
  7441  	Freserved647                            uintptr
  7442  	Freserved648                            uintptr
  7443  	FtclUnusedStubEntry                     uintptr
  7444  }
  7445  
  7446  type TclStubs = TclStubs1
  7447  
  7448  type TclPlatStubs = TclPlatStubs1
  7449  
  7450  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7451  	bp := tls.Alloc(56)
  7452  	defer tls.Free(56)
  7453  
  7454  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7455  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7456  		return TCL_ERROR
  7457  	}
  7458  
  7459  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7460  	return TCL_OK
  7461  }
  7462  
  7463  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7464  	bp := tls.Alloc(108)
  7465  	defer tls.Free(108)
  7466  
  7467  	var pExpert uintptr = clientData
  7468  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7469  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7470  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7471  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7472  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7473  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7474  		{},
  7475  	}
  7476  
  7477  	var rc int32 = TCL_OK
  7478  	*(*uintptr)(unsafe.Pointer(bp + 76)) = uintptr(0)
  7479  
  7480  	if objc < 2 {
  7481  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7482  		return TCL_ERROR
  7483  	}
  7484  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7485  		*(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+72)
  7486  	if rc != TCL_OK {
  7487  		return rc
  7488  	}
  7489  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 72)))*12)).FnArg {
  7490  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 72)))*12)).FzMsg)
  7491  		return TCL_ERROR
  7492  	}
  7493  
  7494  	switch *(*int32)(unsafe.Pointer(bp + 72)) {
  7495  	case 0:
  7496  		{
  7497  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
  7498  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+76)
  7499  			break
  7500  
  7501  		}
  7502  
  7503  	case 1:
  7504  		{
  7505  			rc = sqlite3_expert_analyze(tls, pExpert, bp+76)
  7506  			break
  7507  
  7508  		}
  7509  
  7510  	case 2:
  7511  		{
  7512  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7513  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7514  			break
  7515  
  7516  		}
  7517  
  7518  	case 3:
  7519  		{
  7520  			*(*[5]uintptr)(unsafe.Pointer(bp + 84)) = [5]uintptr{
  7521  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7522  			}
  7523  
  7524  			var zReport uintptr
  7525  
  7526  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+80) != 0 ||
  7527  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+84, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+104) != 0 {
  7528  				return TCL_ERROR
  7529  			}
  7530  
  7531  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 80)), 1+*(*int32)(unsafe.Pointer(bp + 104)))
  7532  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7533  			break
  7534  
  7535  		}
  7536  
  7537  	default:
  7538  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7539  		break
  7540  	}
  7541  
  7542  	if rc != TCL_OK {
  7543  		if *(*uintptr)(unsafe.Pointer(bp + 76)) != 0 {
  7544  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 76)), -1))
  7545  		} else {
  7546  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7547  		}
  7548  	}
  7549  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 76)))
  7550  	return rc
  7551  }
  7552  
  7553  type Subcmd = struct {
  7554  	FzSub uintptr
  7555  	FnArg int32
  7556  	FzMsg uintptr
  7557  }
  7558  
  7559  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7560  	var pExpert uintptr = clientData
  7561  	sqlite3_expert_destroy(tls, pExpert)
  7562  }
  7563  
  7564  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7565  	bp := tls.Alloc(48)
  7566  	defer tls.Free(48)
  7567  
  7568  	var zCmd uintptr = uintptr(0)
  7569  	*(*uintptr)(unsafe.Pointer(bp + 44)) = uintptr(0)
  7570  	var pExpert uintptr
  7571  	var rc int32 = TCL_OK
  7572  
  7573  	if objc != 2 {
  7574  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7575  		return TCL_ERROR
  7576  	}
  7577  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+40) != 0 {
  7578  		return TCL_ERROR
  7579  	}
  7580  
  7581  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7582  	if zCmd == uintptr(0) {
  7583  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7584  		return TCL_ERROR
  7585  	}
  7586  
  7587  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+44)
  7588  	if pExpert == uintptr(0) {
  7589  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 44)), uintptr(0)))
  7590  		rc = TCL_ERROR
  7591  	} else {
  7592  		var p uintptr = pExpert
  7593  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7594  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7595  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7596  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7597  	}
  7598  
  7599  	sqlite3.Xsqlite3_free(tls, zCmd)
  7600  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 44)))
  7601  	return rc
  7602  }
  7603  
  7604  var iCmd int32 = 0
  7605  
  7606  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7607  	bp := tls.Alloc(8)
  7608  	defer tls.Free(8)
  7609  
  7610  	*(*[1]struct {
  7611  		FzCmd  uintptr
  7612  		FxProc uintptr
  7613  	})(unsafe.Pointer(bp)) = [1]struct {
  7614  		FzCmd  uintptr
  7615  		FxProc uintptr
  7616  	}{
  7617  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7618  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7619  		}{test_sqlite3_expert_new}))},
  7620  	}
  7621  	var i int32
  7622  
  7623  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([1]struct {
  7624  		FzCmd  uintptr
  7625  		FxProc uintptr
  7626  	}{}))/uint32(unsafe.Sizeof(struct {
  7627  		FzCmd  uintptr
  7628  		FxProc uintptr
  7629  	}{})); i++ {
  7630  		var p uintptr = bp + uintptr(i)*8
  7631  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7632  			FzCmd  uintptr
  7633  			FxProc uintptr
  7634  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7635  			FzCmd  uintptr
  7636  			FxProc uintptr
  7637  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7638  	}
  7639  	return TCL_OK
  7640  }
  7641  
  7642  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7643  	bp := tls.Alloc(32)
  7644  	defer tls.Free(32)
  7645  
  7646  	var p uintptr
  7647  
  7648  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7649  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7650  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7651  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7652  		return TCL_OK
  7653  	}
  7654  	return TCL_ERROR
  7655  }
  7656  
  7657  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7658  	bp := tls.Alloc(32)
  7659  	defer tls.Free(32)
  7660  
  7661  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7662  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7663  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7664  		{FzError: ts + 2127},
  7665  		{FzError: ts + 584},
  7666  	}
  7667  	var i int32
  7668  
  7669  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([4]ErrorCode{}))/uint32(unsafe.Sizeof(ErrorCode{})); i++ {
  7670  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*8)).FzError) {
  7671  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*8)).Frc
  7672  		}
  7673  	}
  7674  
  7675  	return SQLITE_ERROR
  7676  }
  7677  
  7678  type ErrorCode = struct {
  7679  	Frc     int32
  7680  	FzError uintptr
  7681  }
  7682  
  7683  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7684  	bp := tls.Alloc(60)
  7685  	defer tls.Free(60)
  7686  
  7687  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7688  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7689  	if rc != TCL_OK {
  7690  		return TCL_ERROR
  7691  	} else {
  7692  		*(*uintptr)(unsafe.Pointer(bp + 52)) = uintptr(0)
  7693  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  7694  
  7695  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+52, uintptr(0))
  7696  		if rc != SQLITE_OK {
  7697  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7698  			return TCL_ERROR
  7699  		}
  7700  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 52)), 1, bp+56, ts+2161, uintptr(0))
  7701  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 52)))
  7702  
  7703  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 52))) != SQLITE_OK {
  7704  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7705  			return TCL_ERROR
  7706  		}
  7707  
  7708  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  7709  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 56))
  7710  	}
  7711  
  7712  	return TCL_OK
  7713  }
  7714  
  7715  type F5tFunction1 = struct {
  7716  	Finterp  uintptr
  7717  	FpScript uintptr
  7718  }
  7719  
  7720  type F5tFunction = F5tFunction1
  7721  
  7722  type F5tApi1 = struct {
  7723  	FpApi uintptr
  7724  	FpFts uintptr
  7725  }
  7726  
  7727  type F5tApi = F5tApi1
  7728  
  7729  type F5tAuxData1 = struct{ FpObj uintptr }
  7730  
  7731  type F5tAuxData = F5tAuxData1
  7732  
  7733  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7734  	var p uintptr = pCtx
  7735  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7736  	var rc int32
  7737  
  7738  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7739  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7740  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  7741  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  7742  
  7743  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7744  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7745  		var _objPtr uintptr = pEval
  7746  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7747  			tcl.XTclFreeObj(tls, _objPtr)
  7748  		}
  7749  	}
  7750  	if rc == TCL_OK {
  7751  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7752  	}
  7753  
  7754  	return rc
  7755  }
  7756  
  7757  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  7758  	bp := tls.Alloc(80)
  7759  	defer tls.Free(80)
  7760  
  7761  	var p uintptr = pCtx
  7762  	var pEval uintptr
  7763  	var rc int32
  7764  
  7765  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7766  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7767  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  7768  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7769  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7770  	}{xF5tApi})), bp+72, uintptr(0))
  7771  
  7772  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7773  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7774  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7775  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7776  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7777  		var _objPtr uintptr = pEval
  7778  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7779  			tcl.XTclFreeObj(tls, _objPtr)
  7780  		}
  7781  	}
  7782  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7783  
  7784  	if rc == TCL_OK {
  7785  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7786  	}
  7787  
  7788  	return rc
  7789  }
  7790  
  7791  var iCmd1 sqlite3_int64 = int64(0)
  7792  
  7793  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  7794  	var pData uintptr = p
  7795  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7796  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  7797  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7798  			tcl.XTclFreeObj(tls, _objPtr)
  7799  		}
  7800  	}
  7801  	sqlite3.Xsqlite3_free(tls, pData)
  7802  }
  7803  
  7804  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7805  	bp := tls.Alloc(400)
  7806  	defer tls.Free(400)
  7807  
  7808  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  7809  		{FzName: ts + 2185, FzMsg: ts + 584},
  7810  		{FzName: ts + 2198, FzMsg: ts + 584},
  7811  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  7812  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  7813  		{FzName: ts + 2251, FzMsg: ts + 584},
  7814  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  7815  		{FzName: ts + 2283, FzMsg: ts + 584},
  7816  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  7817  		{FzName: ts + 2304, FzMsg: ts + 584},
  7818  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  7819  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  7820  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  7821  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  7822  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  7823  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  7824  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  7825  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  7826  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  7827  		{},
  7828  	}
  7829  	var rc int32
  7830  	*(*int32)(unsafe.Pointer(bp + 260)) = 0
  7831  	var p uintptr = clientData
  7832  
  7833  	if objc < 2 {
  7834  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  7835  		return TCL_ERROR
  7836  	}
  7837  
  7838  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  7839  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+260)
  7840  	if rc != TCL_OK {
  7841  		return rc
  7842  	}
  7843  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 260)))*12)).FnArg != objc-2 {
  7844  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 260)))*12)).FzMsg)
  7845  		return TCL_ERROR
  7846  	}
  7847  
  7848  	switch *(*int32)(unsafe.Pointer(bp + 260)) {
  7849  	case 0:
  7850  		{
  7851  			var nCol int32
  7852  			nCol = (*struct {
  7853  				f func(*libc.TLS, uintptr) int32
  7854  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7855  			if rc == SQLITE_OK {
  7856  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  7857  			}
  7858  			break
  7859  
  7860  		}
  7861  	case 1:
  7862  		{
  7863  			rc = (*struct {
  7864  				f func(*libc.TLS, uintptr, uintptr) int32
  7865  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+264)
  7866  			if rc == SQLITE_OK {
  7867  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 264))))
  7868  			}
  7869  			break
  7870  
  7871  		}
  7872  	case 2:
  7873  		{
  7874  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+272) != 0 {
  7875  				return TCL_ERROR
  7876  			}
  7877  			rc = (*struct {
  7878  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7879  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnTotalSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 272)), bp+276)
  7880  			if rc == SQLITE_OK {
  7881  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 276))))
  7882  			}
  7883  			break
  7884  
  7885  		}
  7886  	case 3:
  7887  		{
  7888  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+284)
  7889  
  7890  			(*F5tFunction)(unsafe.Pointer(bp + 288)).Finterp = interp
  7891  			(*F5tFunction)(unsafe.Pointer(bp + 288)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
  7892  			rc = (*struct {
  7893  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  7894  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxTokenize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, zText, *(*int32)(unsafe.Pointer(bp + 284)), bp+288, *(*uintptr)(unsafe.Pointer(&struct {
  7895  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7896  			}{xTokenizeCb})))
  7897  			if rc == SQLITE_OK {
  7898  				tcl.XTcl_ResetResult(tls, interp)
  7899  			}
  7900  			return rc
  7901  
  7902  		}
  7903  	case 4:
  7904  		{
  7905  			var nPhrase int32
  7906  			nPhrase = (*struct {
  7907  				f func(*libc.TLS, uintptr) int32
  7908  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7909  			if rc == SQLITE_OK {
  7910  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  7911  			}
  7912  			break
  7913  
  7914  		}
  7915  	case 5:
  7916  		{
  7917  			var sz int32
  7918  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+296) != 0 {
  7919  				return TCL_ERROR
  7920  			}
  7921  			sz = (*struct {
  7922  				f func(*libc.TLS, uintptr, int32) int32
  7923  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 296)))
  7924  			if rc == SQLITE_OK {
  7925  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  7926  			}
  7927  			break
  7928  
  7929  		}
  7930  	case 6:
  7931  		{
  7932  			rc = (*struct {
  7933  				f func(*libc.TLS, uintptr, uintptr) int32
  7934  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+300)
  7935  			if rc == SQLITE_OK {
  7936  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 300))))
  7937  			}
  7938  			break
  7939  
  7940  		}
  7941  	case 7:
  7942  		{
  7943  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+304) != 0 {
  7944  				return TCL_ERROR
  7945  			}
  7946  			rc = (*struct {
  7947  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7948  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInst})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 304)), bp+308, bp+312, bp+316)
  7949  			if rc == SQLITE_OK {
  7950  				var pList uintptr = tcl.XTcl_NewObj(tls)
  7951  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 308))))
  7952  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 312))))
  7953  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 316))))
  7954  				tcl.XTcl_SetObjResult(tls, interp, pList)
  7955  			}
  7956  			break
  7957  
  7958  		}
  7959  	case 8:
  7960  		{
  7961  			var iRowid sqlite3_int64 = (*struct {
  7962  				f func(*libc.TLS, uintptr) sqlite3_int64
  7963  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7964  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  7965  			break
  7966  
  7967  		}
  7968  	case 9:
  7969  		{
  7970  			*(*uintptr)(unsafe.Pointer(bp + 324)) = uintptr(0)
  7971  			*(*int32)(unsafe.Pointer(bp + 328)) = 0
  7972  
  7973  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+320) != 0 {
  7974  				return TCL_ERROR
  7975  			}
  7976  			rc = (*struct {
  7977  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7978  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnText})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 320)), bp+324, bp+328)
  7979  			if rc == SQLITE_OK {
  7980  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 324)), *(*int32)(unsafe.Pointer(bp + 328))))
  7981  			}
  7982  			break
  7983  
  7984  		}
  7985  	case 10:
  7986  		{
  7987  			*(*int32)(unsafe.Pointer(bp + 336)) = 0
  7988  
  7989  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+332) != 0 {
  7990  				return TCL_ERROR
  7991  			}
  7992  			rc = (*struct {
  7993  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7994  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 332)), bp+336)
  7995  			if rc == SQLITE_OK {
  7996  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 336))))
  7997  			}
  7998  			break
  7999  
  8000  		}
  8001  	case 11:
  8002  		{
  8003  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+340) != 0 {
  8004  				return TCL_ERROR
  8005  			}
  8006  			(*F5tFunction)(unsafe.Pointer(bp + 344)).Finterp = interp
  8007  			(*F5tFunction)(unsafe.Pointer(bp + 344)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
  8008  			rc = (*struct {
  8009  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8010  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxQueryPhrase})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 340)), bp+344, *(*uintptr)(unsafe.Pointer(&struct {
  8011  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8012  			}{xQueryPhraseCb})))
  8013  			if rc == SQLITE_OK {
  8014  				tcl.XTcl_ResetResult(tls, interp)
  8015  			}
  8016  			break
  8017  
  8018  		}
  8019  	case 12:
  8020  		{
  8021  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  8022  			if pData == uintptr(0) {
  8023  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  8024  				return TCL_ERROR
  8025  			}
  8026  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*4))
  8027  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  8028  			rc = (*struct {
  8029  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8030  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxSetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xSetAuxdataDestructor})))
  8031  			break
  8032  
  8033  		}
  8034  	case 13:
  8035  		{
  8036  			var pData uintptr
  8037  
  8038  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+352) != 0 {
  8039  				return TCL_ERROR
  8040  			}
  8041  			pData = (*struct {
  8042  				f func(*libc.TLS, uintptr, int32) uintptr
  8043  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxGetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 352)))
  8044  			if pData == uintptr(0) {
  8045  				tcl.XTcl_ResetResult(tls, interp)
  8046  			} else {
  8047  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  8048  				if *(*int32)(unsafe.Pointer(bp + 352)) != 0 {
  8049  					xSetAuxdataDestructor(tls, pData)
  8050  				}
  8051  			}
  8052  			break
  8053  
  8054  		}
  8055  
  8056  	case 14:
  8057  		{
  8058  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+356) != 0 {
  8059  				return TCL_ERROR
  8060  			}
  8061  			rc = (*struct {
  8062  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8063  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxSetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, uintptr(0)+uintptr(*(*int32)(unsafe.Pointer(bp + 356))), uintptr(0))
  8064  			break
  8065  
  8066  		}
  8067  	case 15:
  8068  		{
  8069  			var iVal int32
  8070  
  8071  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+360) != 0 {
  8072  				return TCL_ERROR
  8073  			}
  8074  			iVal = (int32((*struct {
  8075  				f func(*libc.TLS, uintptr, int32) uintptr
  8076  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxGetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 360)))) - int32(uintptr(0))) / 1
  8077  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  8078  			break
  8079  
  8080  		}
  8081  
  8082  	case 16:
  8083  		{
  8084  			var zColvar uintptr
  8085  			var zOffvar uintptr
  8086  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*4))
  8087  
  8088  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+364) != 0 {
  8089  				return TCL_ERROR
  8090  			}
  8091  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
  8092  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
  8093  
  8094  			rc = (*struct {
  8095  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8096  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseFirst})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 364)), bp+368, bp+376, bp+380)
  8097  			if rc != SQLITE_OK {
  8098  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  8099  				return TCL_ERROR
  8100  			}
  8101  			for ; *(*int32)(unsafe.Pointer(bp + 376)) >= 0; (*struct {
  8102  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8103  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNext})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+368, bp+376, bp+380) {
  8104  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))), 0)
  8105  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))), 0)
  8106  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8107  				if rc == TCL_CONTINUE {
  8108  					rc = TCL_OK
  8109  				}
  8110  				if rc != TCL_OK {
  8111  					if rc == TCL_BREAK {
  8112  						rc = TCL_OK
  8113  					}
  8114  					break
  8115  				}
  8116  			}
  8117  
  8118  			break
  8119  
  8120  		}
  8121  
  8122  	case 17:
  8123  		{
  8124  			var zColvar uintptr
  8125  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*4))
  8126  
  8127  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+384) != 0 {
  8128  				return TCL_ERROR
  8129  			}
  8130  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
  8131  
  8132  			rc = (*struct {
  8133  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8134  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseFirstColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 384)), bp+388, bp+396)
  8135  			if rc != SQLITE_OK {
  8136  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8137  				return TCL_ERROR
  8138  			}
  8139  			for ; *(*int32)(unsafe.Pointer(bp + 396)) >= 0; (*struct {
  8140  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  8141  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+388, bp+396) {
  8142  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 396))), 0)
  8143  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  8144  				if rc == TCL_CONTINUE {
  8145  					rc = TCL_OK
  8146  				}
  8147  				if rc != TCL_OK {
  8148  					if rc == TCL_BREAK {
  8149  						rc = TCL_OK
  8150  					}
  8151  					break
  8152  				}
  8153  			}
  8154  
  8155  			break
  8156  
  8157  		}
  8158  
  8159  	default:
  8160  		break
  8161  	}
  8162  
  8163  	if rc != SQLITE_OK {
  8164  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8165  		return TCL_ERROR
  8166  	}
  8167  
  8168  	return TCL_OK
  8169  }
  8170  
  8171  type Sub = struct {
  8172  	FzName uintptr
  8173  	FnArg  int32
  8174  	FzMsg  uintptr
  8175  }
  8176  
  8177  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8178  	bp := tls.Alloc(100)
  8179  	defer tls.Free(100)
  8180  
  8181  	var p uintptr = (*struct {
  8182  		f func(*libc.TLS, uintptr) uintptr
  8183  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  8184  	var pEval uintptr
  8185  	var i int32
  8186  	var rc int32
  8187  
  8188  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  8189  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  8190  
  8191  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  8192  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  8193  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8194  	}{xF5tApi})), bp+72, uintptr(0))
  8195  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  8196  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8197  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  8198  
  8199  	for i = 0; i < nVal; i++ {
  8200  		var pObj uintptr = uintptr(0)
  8201  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))) {
  8202  		case SQLITE_TEXT:
  8203  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))), -1)
  8204  			break
  8205  		case SQLITE_BLOB:
  8206  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  8207  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))))
  8208  			break
  8209  		case SQLITE_INTEGER:
  8210  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))))
  8211  			break
  8212  		case SQLITE_FLOAT:
  8213  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))))
  8214  			break
  8215  		default:
  8216  			pObj = tcl.XTcl_NewObj(tls)
  8217  			break
  8218  		}
  8219  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  8220  	}
  8221  
  8222  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8223  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8224  		var _objPtr uintptr = pEval
  8225  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8226  			tcl.XTclFreeObj(tls, _objPtr)
  8227  		}
  8228  	}
  8229  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  8230  
  8231  	if rc != TCL_OK {
  8232  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  8233  	} else {
  8234  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  8235  
  8236  		var zType uintptr = func() uintptr {
  8237  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  8238  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  8239  			}
  8240  			return ts + 584
  8241  		}()
  8242  		var c int8 = *(*int8)(unsafe.Pointer(zType))
  8243  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  8244  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+80)
  8245  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 80)), libc.UintptrFromInt32(-1))
  8246  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  8247  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+80)
  8248  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 80)))
  8249  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  8250  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+84)
  8251  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 84)))
  8252  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  8253  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+92)
  8254  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 92)))
  8255  		} else {
  8256  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+80)
  8257  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 80)), libc.UintptrFromInt32(-1))
  8258  		}
  8259  	}
  8260  }
  8261  
  8262  var iCmd2 sqlite3_int64 = int64(0)
  8263  
  8264  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  8265  	var p uintptr = pCtx
  8266  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8267  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  8268  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8269  			tcl.XTclFreeObj(tls, _objPtr)
  8270  		}
  8271  	}
  8272  	tcl.XTcl_Free(tls, p)
  8273  }
  8274  
  8275  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8276  	bp := tls.Alloc(32)
  8277  	defer tls.Free(32)
  8278  
  8279  	var zName uintptr
  8280  	var pScript uintptr
  8281  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  8282  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(0)
  8283  	var pCtx uintptr = uintptr(0)
  8284  	var rc int32
  8285  
  8286  	if objc != 4 {
  8287  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8288  		return TCL_ERROR
  8289  	}
  8290  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+24, bp+28) != 0 {
  8291  		return TCL_ERROR
  8292  	}
  8293  
  8294  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
  8295  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
  8296  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  8297  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  8298  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  8299  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8300  
  8301  	rc = (*struct {
  8302  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8303  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 28)))).FxCreateFunction})).f(tls,
  8304  		*(*uintptr)(unsafe.Pointer(bp + 28)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  8305  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8306  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  8307  	if rc != SQLITE_OK {
  8308  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  8309  		return TCL_ERROR
  8310  	}
  8311  
  8312  	return TCL_OK
  8313  }
  8314  
  8315  type F5tTokenizeCtx1 = struct {
  8316  	FpRet   uintptr
  8317  	FbSubst int32
  8318  	FzInput uintptr
  8319  }
  8320  
  8321  type F5tTokenizeCtx = F5tTokenizeCtx1
  8322  
  8323  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  8324  	var p uintptr = pCtx
  8325  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  8326  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8327  		tcl.XTcl_ListObjAppendElement(tls,
  8328  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  8329  	} else {
  8330  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  8331  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  8332  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  8333  	}
  8334  	return SQLITE_OK
  8335  }
  8336  
  8337  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8338  	bp := tls.Alloc(148)
  8339  	defer tls.Free(148)
  8340  
  8341  	var zText uintptr
  8342  
  8343  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  8344  	*(*uintptr)(unsafe.Pointer(bp + 100)) = uintptr(0)
  8345  	*(*uintptr)(unsafe.Pointer(bp + 132)) = uintptr(0)
  8346  
  8347  	var pRet uintptr = uintptr(0)
  8348  
  8349  	var rc int32
  8350  
  8351  	if objc != 4 && objc != 5 {
  8352  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  8353  		return TCL_ERROR
  8354  	}
  8355  	if objc == 5 {
  8356  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
  8357  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  8358  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  8359  			return TCL_ERROR
  8360  		}
  8361  	}
  8362  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*4)), bp+96, bp+100) != 0 {
  8363  		return TCL_ERROR
  8364  	}
  8365  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4))), bp+104, bp+108) != 0 {
  8366  		return TCL_ERROR
  8367  	}
  8368  	if *(*int32)(unsafe.Pointer(bp + 104)) == 0 {
  8369  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  8370  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 108)))
  8371  		return TCL_ERROR
  8372  	}
  8373  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4)), bp+112)
  8374  
  8375  	rc = (*struct {
  8376  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8377  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 100)))).FxFindTokenizer})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 100)), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 108)))), bp+116, bp+120)
  8378  	if rc != SQLITE_OK {
  8379  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 108)))), 0))
  8380  		return TCL_ERROR
  8381  	}
  8382  
  8383  	rc = (*struct {
  8384  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8385  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 120)).FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 116)), *(*uintptr)(unsafe.Pointer(bp + 108))+1*4, *(*int32)(unsafe.Pointer(bp + 104))-1, bp+132)
  8386  	if rc != SQLITE_OK {
  8387  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  8388  		return TCL_ERROR
  8389  	}
  8390  
  8391  	pRet = tcl.XTcl_NewObj(tls)
  8392  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  8393  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 136)).FbSubst = libc.Bool32(objc == 5)
  8394  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 136)).FpRet = pRet
  8395  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 136)).FzInput = zText
  8396  	rc = (*struct {
  8397  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8398  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 120)).FxTokenize})).f(tls,
  8399  		*(*uintptr)(unsafe.Pointer(bp + 132)), bp+136, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 112)), *(*uintptr)(unsafe.Pointer(&struct {
  8400  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8401  		}{xTokenizeCb2})))
  8402  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 120)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 132)))
  8403  	if rc != SQLITE_OK {
  8404  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8405  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8406  			var _objPtr uintptr = pRet
  8407  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8408  				tcl.XTclFreeObj(tls, _objPtr)
  8409  			}
  8410  		}
  8411  		return TCL_ERROR
  8412  	}
  8413  
  8414  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 108)))
  8415  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8416  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8417  		var _objPtr uintptr = pRet
  8418  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8419  			tcl.XTclFreeObj(tls, _objPtr)
  8420  		}
  8421  	}
  8422  	return TCL_OK
  8423  }
  8424  
  8425  type F5tTokenizerContext1 = struct {
  8426  	FpCtx   uintptr
  8427  	FxToken uintptr
  8428  }
  8429  
  8430  type F5tTokenizerContext = F5tTokenizerContext1
  8431  type F5tTokenizerModule1 = struct {
  8432  	Finterp   uintptr
  8433  	FpScript  uintptr
  8434  	FpContext uintptr
  8435  }
  8436  
  8437  type F5tTokenizerModule = F5tTokenizerModule1
  8438  type F5tTokenizerInstance1 = struct {
  8439  	Finterp   uintptr
  8440  	FpScript  uintptr
  8441  	FpContext uintptr
  8442  }
  8443  
  8444  type F5tTokenizerInstance = F5tTokenizerInstance1
  8445  
  8446  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8447  	var pMod uintptr = pCtx
  8448  	var pEval uintptr
  8449  	var rc int32 = TCL_OK
  8450  	var i int32
  8451  
  8452  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8453  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8454  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8455  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*4)), -1)
  8456  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8457  	}
  8458  
  8459  	if rc == TCL_OK {
  8460  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8461  	}
  8462  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8463  		var _objPtr uintptr = pEval
  8464  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8465  			tcl.XTclFreeObj(tls, _objPtr)
  8466  		}
  8467  	}
  8468  
  8469  	if rc == TCL_OK {
  8470  		var pInst uintptr
  8471  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8472  		libc.Xmemset(tls, pInst, 0, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8473  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8474  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8475  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8476  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8477  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8478  	}
  8479  
  8480  	return rc
  8481  }
  8482  
  8483  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8484  	var pInst uintptr = p
  8485  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8486  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8487  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8488  			tcl.XTclFreeObj(tls, _objPtr)
  8489  		}
  8490  	}
  8491  	tcl.XTcl_Free(tls, pInst)
  8492  }
  8493  
  8494  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8495  	var pInst uintptr = p
  8496  	var pOldCtx uintptr
  8497  	var xOldToken uintptr
  8498  	var pEval uintptr
  8499  	var rc int32
  8500  	var zFlags uintptr
  8501  
  8502  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8503  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8504  
  8505  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8506  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8507  
  8508  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8509  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8510  	switch flags {
  8511  	case FTS5_TOKENIZE_DOCUMENT:
  8512  		zFlags = ts + 2727
  8513  		break
  8514  	case FTS5_TOKENIZE_AUX:
  8515  		zFlags = ts + 2736
  8516  		break
  8517  	case FTS5_TOKENIZE_QUERY:
  8518  		zFlags = ts + 2740
  8519  		break
  8520  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8521  		zFlags = ts + 2746
  8522  		break
  8523  	default:
  8524  		zFlags = ts + 2758
  8525  		break
  8526  	}
  8527  
  8528  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8529  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8530  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8531  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8532  		var _objPtr uintptr = pEval
  8533  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8534  			tcl.XTclFreeObj(tls, _objPtr)
  8535  		}
  8536  	}
  8537  
  8538  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8539  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8540  	return rc
  8541  }
  8542  
  8543  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8544  	bp := tls.Alloc(32)
  8545  	defer tls.Free(32)
  8546  
  8547  	var p uintptr
  8548  
  8549  	var tflags int32
  8550  	var zToken uintptr
  8551  	var rc int32
  8552  
  8553  	var zArg uintptr
  8554  	p = clientData
  8555  	tflags = 0
  8556  
  8557  	if !(objc == 5) {
  8558  		goto __1
  8559  	}
  8560  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16)
  8561  	if !(*(*int32)(unsafe.Pointer(bp + 16)) <= 10 && *(*int32)(unsafe.Pointer(bp + 16)) >= 2 && libc.Xmemcmp(tls, ts+2766, zArg, uint32(*(*int32)(unsafe.Pointer(bp + 16)))) == 0) {
  8562  		goto __3
  8563  	}
  8564  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8565  	goto __4
  8566  __3:
  8567  	goto usage
  8568  __4:
  8569  	;
  8570  	goto __2
  8571  __1:
  8572  	if !(objc != 4) {
  8573  		goto __5
  8574  	}
  8575  	goto usage
  8576  __5:
  8577  	;
  8578  __2:
  8579  	;
  8580  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*4)), bp+20)
  8581  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4)), bp+24) != 0 ||
  8582  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4)), bp+28) != 0) {
  8583  		goto __6
  8584  	}
  8585  	return TCL_ERROR
  8586  __6:
  8587  	;
  8588  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8589  		goto __7
  8590  	}
  8591  	tcl.XTcl_AppendResult(tls, interp,
  8592  		libc.VaList(bp, ts+2777, 0))
  8593  	return TCL_ERROR
  8594  __7:
  8595  	;
  8596  	rc = (*struct {
  8597  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8598  	})(unsafe.Pointer(&struct{ uintptr }{(*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken})).f(tls, (*F5tTokenizerContext)(unsafe.Pointer(p)).FpCtx, tflags, zToken, *(*int32)(unsafe.Pointer(bp + 20)), *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 28)))
  8599  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8600  	if rc == SQLITE_OK {
  8601  		return TCL_OK
  8602  	}
  8603  	return TCL_ERROR
  8604  
  8605  usage:
  8606  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8607  	return TCL_ERROR
  8608  }
  8609  
  8610  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8611  	var pMod uintptr = pCtx
  8612  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8613  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  8614  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8615  			tcl.XTclFreeObj(tls, _objPtr)
  8616  		}
  8617  	}
  8618  	tcl.XTcl_Free(tls, pMod)
  8619  }
  8620  
  8621  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8622  	bp := tls.Alloc(36)
  8623  	defer tls.Free(36)
  8624  
  8625  	var pContext uintptr = clientData
  8626  
  8627  	var zName uintptr
  8628  	var pScript uintptr
  8629  
  8630  	var pMod uintptr
  8631  	var rc int32
  8632  
  8633  	if objc != 4 {
  8634  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8635  		return TCL_ERROR
  8636  	}
  8637  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16, bp+20) != 0 {
  8638  		return TCL_ERROR
  8639  	}
  8640  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
  8641  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
  8642  
  8643  	(*fts5_tokenizer)(unsafe.Pointer(bp + 24)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8644  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8645  	}{f5tTokenizerCreate}))
  8646  	(*fts5_tokenizer)(unsafe.Pointer(bp + 24)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8647  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8648  	}{f5tTokenizerTokenize}))
  8649  	(*fts5_tokenizer)(unsafe.Pointer(bp + 24)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8650  
  8651  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8652  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8653  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8654  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8655  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8656  	rc = (*struct {
  8657  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8658  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 20)))).FxCreateTokenizer})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), zName, pMod, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tDelTokenizer})))
  8659  	if rc != SQLITE_OK {
  8660  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8661  		return TCL_ERROR
  8662  	}
  8663  
  8664  	return TCL_OK
  8665  }
  8666  
  8667  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8668  	tcl.XTcl_Free(tls, clientData)
  8669  }
  8670  
  8671  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8672  	return TCL_OK
  8673  }
  8674  
  8675  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8676  	var i int32
  8677  	var h uint32 = uint32(13)
  8678  	for i = n - 1; i >= 0; i-- {
  8679  		h = h<<3 ^ h ^ uint32(*(*int8)(unsafe.Pointer(p + uintptr(i))))
  8680  	}
  8681  	return h % uint32(nSlot)
  8682  }
  8683  
  8684  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8685  	bp := tls.Alloc(8)
  8686  	defer tls.Free(8)
  8687  
  8688  	var z uintptr
  8689  
  8690  	var iVal uint32
  8691  
  8692  	if objc != 3 {
  8693  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  8694  		return TCL_ERROR
  8695  	}
  8696  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
  8697  		return TCL_ERROR
  8698  	}
  8699  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4)
  8700  
  8701  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  8702  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  8703  	return TCL_OK
  8704  }
  8705  
  8706  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8707  	bp := tls.Alloc(4)
  8708  	defer tls.Free(4)
  8709  
  8710  	var rc int32
  8711  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8712  
  8713  	if objc != 2 {
  8714  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8715  		return TCL_ERROR
  8716  	}
  8717  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
  8718  		return TCL_ERROR
  8719  	}
  8720  
  8721  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8722  	if rc != SQLITE_OK {
  8723  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8724  		return TCL_ERROR
  8725  	}
  8726  	return TCL_OK
  8727  }
  8728  
  8729  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8730  	bp := tls.Alloc(8)
  8731  	defer tls.Free(8)
  8732  
  8733  	var rc int32
  8734  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8735  	*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
  8736  
  8737  	if objc != 2 {
  8738  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8739  		return TCL_ERROR
  8740  	}
  8741  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, bp+4) != 0 {
  8742  		return TCL_ERROR
  8743  	}
  8744  
  8745  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 4)))
  8746  	if rc != SQLITE_OK {
  8747  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8748  		return TCL_ERROR
  8749  	}
  8750  	return TCL_OK
  8751  }
  8752  
  8753  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  8754  	var i int32
  8755  	var pContext uintptr
  8756  
  8757  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8758  	libc.Xmemset(tls, pContext, 0, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8759  
  8760  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd))/uint32(unsafe.Sizeof(struct {
  8761  		FzName        uintptr
  8762  		FxProc        uintptr
  8763  		FbTokenizeCtx int32
  8764  	}{})); i++ {
  8765  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*12
  8766  		var pCtx uintptr = uintptr(0)
  8767  		if (*struct {
  8768  			FzName        uintptr
  8769  			FxProc        uintptr
  8770  			FbTokenizeCtx int32
  8771  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  8772  			pCtx = pContext
  8773  		}
  8774  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8775  			FzName        uintptr
  8776  			FxProc        uintptr
  8777  			FbTokenizeCtx int32
  8778  		})(unsafe.Pointer(p)).FzName, (*struct {
  8779  			FzName        uintptr
  8780  			FxProc        uintptr
  8781  			FbTokenizeCtx int32
  8782  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  8783  			if i != 0 {
  8784  				return uintptr(0)
  8785  			}
  8786  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  8787  		}())
  8788  	}
  8789  
  8790  	return TCL_OK
  8791  }
  8792  
  8793  var aCmd = [8]struct {
  8794  	FzName        uintptr
  8795  	FxProc        uintptr
  8796  	FbTokenizeCtx int32
  8797  }{
  8798  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  8799  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  8800  	{FzName: ts + 2961, FxProc: 0},
  8801  	{FzName: ts + 2983, FxProc: 0},
  8802  	{FzName: ts + 3012, FxProc: 0},
  8803  	{FzName: ts + 3040, FxProc: 0},
  8804  	{FzName: ts + 3064, FxProc: 0},
  8805  	{FzName: ts + 3096, FxProc: 0},
  8806  }
  8807  
  8808  type Fts5MatchinfoCtx1 = struct {
  8809  	FnCol    int32
  8810  	FnPhrase int32
  8811  	FzArg    uintptr
  8812  	FnRet    int32
  8813  	FaRet    uintptr
  8814  }
  8815  
  8816  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  8817  
  8818  type u32 = uint32
  8819  
  8820  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  8821  	bp := tls.Alloc(4)
  8822  	defer tls.Free(4)
  8823  
  8824  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8825  	var rc int32
  8826  
  8827  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  8828  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  8829  	if rc == SQLITE_OK {
  8830  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  8831  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8832  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8833  	}
  8834  
  8835  	return rc
  8836  }
  8837  
  8838  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f int8) int32 {
  8839  	var ret int32 = -1
  8840  	switch int32(f) {
  8841  	case 'p':
  8842  		ret = 1
  8843  		break
  8844  	case 'c':
  8845  		ret = 1
  8846  		break
  8847  	case 'x':
  8848  		ret = 3 * nCol * nPhrase
  8849  		break
  8850  	case 'y':
  8851  		ret = nCol * nPhrase
  8852  		break
  8853  	case 'b':
  8854  		ret = (nCol + 31) / 32 * nPhrase
  8855  		break
  8856  	case 'n':
  8857  		ret = 1
  8858  		break
  8859  	case 'a':
  8860  		ret = nCol
  8861  		break
  8862  	case 'l':
  8863  		ret = nCol
  8864  		break
  8865  	case 's':
  8866  		ret = nCol
  8867  		break
  8868  	}
  8869  	return ret
  8870  }
  8871  
  8872  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  8873  	var i int32
  8874  	var n int32 = 0
  8875  	var rc int32 = SQLITE_OK
  8876  	var f int8
  8877  	for i = 0; libc.AssignInt8(&f, *(*int8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  8878  		rc = (*struct {
  8879  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8880  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  8881  		if rc != SQLITE_OK {
  8882  			break
  8883  		}
  8884  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  8885  	}
  8886  	return rc
  8887  }
  8888  
  8889  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  8890  	bp := tls.Alloc(16)
  8891  	defer tls.Free(16)
  8892  
  8893  	var aOut uintptr = pUserData
  8894  	var iPrev int32 = -1
  8895  
  8896  	for (*struct {
  8897  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8898  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirst})).f(tls, pFts, 0, bp, bp+8, bp+12); *(*int32)(unsafe.Pointer(bp + 8)) >= 0; (*struct {
  8899  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8900  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+8, bp+12) {
  8901  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 8))*3+1)*4))++
  8902  		if *(*int32)(unsafe.Pointer(bp + 8)) != iPrev {
  8903  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 8))*3+2)*4))++
  8904  		}
  8905  		iPrev = *(*int32)(unsafe.Pointer(bp + 8))
  8906  	}
  8907  
  8908  	return SQLITE_OK
  8909  }
  8910  
  8911  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8912  	bp := tls.Alloc(24)
  8913  	defer tls.Free(24)
  8914  
  8915  	var rc int32 = SQLITE_OK
  8916  	switch int32(f) {
  8917  	case 'p':
  8918  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  8919  		break
  8920  
  8921  	case 'c':
  8922  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  8923  		break
  8924  
  8925  	case 'x':
  8926  		{
  8927  			var i int32
  8928  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  8929  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  8930  				rc = (*struct {
  8931  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8932  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  8933  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8934  				}{fts5MatchinfoXCb})))
  8935  			}
  8936  			break
  8937  
  8938  		}
  8939  
  8940  	case 'n':
  8941  		{
  8942  			rc = (*struct {
  8943  				f func(*libc.TLS, uintptr, uintptr) int32
  8944  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  8945  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  8946  			break
  8947  
  8948  		}
  8949  
  8950  	case 'a':
  8951  		{
  8952  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  8953  			rc = (*struct {
  8954  				f func(*libc.TLS, uintptr, uintptr) int32
  8955  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  8956  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  8957  				libc.Xmemset(tls, aOut, 0, uint32(unsafe.Sizeof(u32(0)))*uint32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8958  			} else {
  8959  				var i int32
  8960  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8961  					rc = (*struct {
  8962  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  8963  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  8964  					if rc == SQLITE_OK {
  8965  						*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32((int64(2)**(*sqlite3_int64)(unsafe.Pointer(bp + 16)) + *(*sqlite3_int64)(unsafe.Pointer(bp + 8))) / (int64(2) * *(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
  8966  					}
  8967  				}
  8968  			}
  8969  			break
  8970  
  8971  		}
  8972  
  8973  	}
  8974  	return rc
  8975  }
  8976  
  8977  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8978  	bp := tls.Alloc(60)
  8979  	defer tls.Free(60)
  8980  
  8981  	var i int32
  8982  	var rc int32 = SQLITE_OK
  8983  
  8984  	switch int32(f) {
  8985  	case 'b':
  8986  		{
  8987  			var iPhrase int32
  8988  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  8989  			for i = 0; i < nInt; i++ {
  8990  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  8991  			}
  8992  
  8993  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8994  				for (*struct {
  8995  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8996  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+8); *(*int32)(unsafe.Pointer(bp + 8)) >= 0; (*struct {
  8997  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  8998  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+8) {
  8999  					*(*u32)(unsafe.Pointer(aOut + uintptr(iPhrase*(((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol+31)/32)+*(*int32)(unsafe.Pointer(bp + 8))/32)*4)) |= u32(1) << (*(*int32)(unsafe.Pointer(bp + 8)) % 32)
  9000  				}
  9001  			}
  9002  
  9003  			break
  9004  
  9005  		}
  9006  
  9007  	case 'x':
  9008  		fallthrough
  9009  	case 'y':
  9010  		{
  9011  			var nMul int32 = func() int32 {
  9012  				if int32(f) == 'x' {
  9013  					return 3
  9014  				}
  9015  				return 1
  9016  			}()
  9017  			var iPhrase int32
  9018  
  9019  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  9020  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  9021  			}
  9022  
  9023  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  9024  				for (*struct {
  9025  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9026  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirst})).f(tls, pFts, iPhrase, bp+12, bp+20, bp+24); *(*int32)(unsafe.Pointer(bp + 24)) >= 0; (*struct {
  9027  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  9028  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+12, bp+20, bp+24) {
  9029  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 20))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  9030  				}
  9031  			}
  9032  
  9033  			break
  9034  
  9035  		}
  9036  
  9037  	case 'l':
  9038  		{
  9039  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  9040  				rc = (*struct {
  9041  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  9042  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+28)
  9043  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
  9044  			}
  9045  			break
  9046  
  9047  		}
  9048  
  9049  	case 's':
  9050  		{
  9051  			libc.Xmemset(tls, aOut, 0, uint32(unsafe.Sizeof(u32(0)))*uint32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  9052  
  9053  			rc = (*struct {
  9054  				f func(*libc.TLS, uintptr, uintptr) int32
  9055  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+32)
  9056  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
  9057  				*(*int32)(unsafe.Pointer(bp + 40)) = 0
  9058  				var iNextPhrase int32
  9059  				var iNextOff int32
  9060  				var nSeq u32 = u32(1)
  9061  				var j int32
  9062  
  9063  				rc = (*struct {
  9064  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9065  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+36, bp+40, bp+44)
  9066  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 36)) + 1
  9067  				iNextOff = *(*int32)(unsafe.Pointer(bp + 44)) + (*struct {
  9068  					f func(*libc.TLS, uintptr, int32) int32
  9069  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  9070  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 32)); j++ {
  9071  					rc = (*struct {
  9072  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  9073  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+48, bp+52, bp+56)
  9074  					if *(*int32)(unsafe.Pointer(bp + 52)) != *(*int32)(unsafe.Pointer(bp + 40)) || *(*int32)(unsafe.Pointer(bp + 56)) > iNextOff {
  9075  						break
  9076  					}
  9077  					if *(*int32)(unsafe.Pointer(bp + 48)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 56)) == iNextOff {
  9078  						nSeq++
  9079  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 48)) + 1
  9080  						iNextOff = *(*int32)(unsafe.Pointer(bp + 56)) + (*struct {
  9081  							f func(*libc.TLS, uintptr, int32) int32
  9082  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 48)))
  9083  					}
  9084  				}
  9085  
  9086  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) {
  9087  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 40)))*4)) = nSeq
  9088  				}
  9089  			}
  9090  
  9091  			break
  9092  
  9093  		}
  9094  	}
  9095  	return rc
  9096  }
  9097  
  9098  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  9099  	bp := tls.Alloc(8)
  9100  	defer tls.Free(8)
  9101  
  9102  	var p uintptr
  9103  	var nCol int32
  9104  	var nPhrase int32
  9105  	var i int32
  9106  	var nInt int32
  9107  	var nByte sqlite3_int64
  9108  	var rc int32
  9109  
  9110  	nCol = (*struct {
  9111  		f func(*libc.TLS, uintptr) int32
  9112  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  9113  	nPhrase = (*struct {
  9114  		f func(*libc.TLS, uintptr) int32
  9115  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  9116  
  9117  	nInt = 0
  9118  	for i = 0; *(*int8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  9119  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*int8)(unsafe.Pointer(zArg + uintptr(i))))
  9120  		if n < 0 {
  9121  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i))))))
  9122  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  9123  			sqlite3.Xsqlite3_free(tls, zErr)
  9124  			return uintptr(0)
  9125  		}
  9126  		nInt = nInt + n
  9127  	}
  9128  
  9129  	nByte = sqlite3_int64(uint32(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  9130  		uint32(unsafe.Sizeof(u32(0)))*uint32(nInt) +
  9131  		uint32(i+1))
  9132  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  9133  	if p == uintptr(0) {
  9134  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  9135  		return uintptr(0)
  9136  	}
  9137  	libc.Xmemset(tls, p, 0, uint32(nByte))
  9138  
  9139  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  9140  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  9141  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*20
  9142  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  9143  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  9144  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint32(i))
  9145  
  9146  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9147  		f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  9148  	}{fts5MatchinfoGlobalCb})))
  9149  	if rc != SQLITE_OK {
  9150  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9151  		sqlite3.Xsqlite3_free(tls, p)
  9152  		p = uintptr(0)
  9153  	}
  9154  
  9155  	return p
  9156  }
  9157  
  9158  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  9159  	var zArg uintptr
  9160  	var p uintptr
  9161  	var rc int32 = SQLITE_OK
  9162  
  9163  	if nVal > 0 {
  9164  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9165  	} else {
  9166  		zArg = ts + 3163
  9167  	}
  9168  
  9169  	p = (*struct {
  9170  		f func(*libc.TLS, uintptr, int32) uintptr
  9171  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  9172  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  9173  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  9174  		if p == uintptr(0) {
  9175  			rc = SQLITE_NOMEM
  9176  		} else {
  9177  			rc = (*struct {
  9178  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  9179  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxSetAuxdata})).f(tls, pFts, p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
  9180  		}
  9181  	}
  9182  
  9183  	if rc == SQLITE_OK {
  9184  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  9185  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  9186  		}{fts5MatchinfoLocalCb})))
  9187  	}
  9188  	if rc != SQLITE_OK {
  9189  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  9190  	} else {
  9191  		var nByte int32 = int32(uint32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint32(unsafe.Sizeof(u32(0))))
  9192  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  9193  	}
  9194  }
  9195  
  9196  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  9197  	bp := tls.Alloc(4)
  9198  	defer tls.Free(4)
  9199  
  9200  	var rc int32
  9201  
  9202  	rc = fts5_api_from_db(tls, db, bp)
  9203  	if rc != SQLITE_OK {
  9204  		return rc
  9205  	}
  9206  
  9207  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  9208  		return SQLITE_ERROR
  9209  	}
  9210  
  9211  	rc = (*struct {
  9212  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  9213  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FxCreateFunction})).f(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+3167, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
  9214  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  9215  	}{fts5MatchinfoFunc})), uintptr(0))
  9216  
  9217  	return rc
  9218  }
  9219  
  9220  type Fts5tokTable1 = struct {
  9221  	Fbase sqlite3_vtab
  9222  	Ftok  fts5_tokenizer
  9223  	FpTok uintptr
  9224  }
  9225  
  9226  type Fts5tokTable = Fts5tokTable1
  9227  type Fts5tokCursor1 = struct {
  9228  	Fbase   sqlite3_vtab_cursor
  9229  	FiRowid int32
  9230  	FzInput uintptr
  9231  	FnRow   int32
  9232  	FaRow   uintptr
  9233  }
  9234  
  9235  type Fts5tokCursor = Fts5tokCursor1
  9236  type Fts5tokRow1 = struct {
  9237  	FzToken uintptr
  9238  	FiStart int32
  9239  	FiEnd   int32
  9240  	FiPos   int32
  9241  }
  9242  
  9243  type Fts5tokRow = Fts5tokRow1
  9244  
  9245  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  9246  	var q int8 = *(*int8)(unsafe.Pointer(z))
  9247  
  9248  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  9249  		var iIn int32 = 1
  9250  		var iOut int32 = 0
  9251  		if int32(q) == '[' {
  9252  			q = int8(']')
  9253  		}
  9254  
  9255  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  9256  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  9257  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  9258  					iIn++
  9259  					break
  9260  				} else {
  9261  					iIn = iIn + 2
  9262  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  9263  				}
  9264  			} else {
  9265  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  9266  			}
  9267  		}
  9268  
  9269  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
  9270  	}
  9271  }
  9272  
  9273  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  9274  	var rc int32 = SQLITE_OK
  9275  	if argc == 0 {
  9276  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  9277  	} else {
  9278  		var i int32
  9279  		var nByte int32 = 0
  9280  		var azDequote uintptr
  9281  
  9282  		for i = 0; i < argc; i++ {
  9283  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))+size_t(1))
  9284  		}
  9285  
  9286  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(uintptr(0)))*uint32(argc)+uint32(nByte))))
  9287  		if azDequote == uintptr(0) {
  9288  			rc = SQLITE_NOMEM
  9289  		} else {
  9290  			var pSpace uintptr = azDequote + uintptr(argc)*4
  9291  			for i = 0; i < argc; i++ {
  9292  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
  9293  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*4)) = pSpace
  9294  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), uint32(n+1))
  9295  				fts5tokDequote(tls, pSpace)
  9296  				pSpace += uintptr(n + 1)
  9297  			}
  9298  		}
  9299  	}
  9300  
  9301  	return rc
  9302  }
  9303  
  9304  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  9305  	bp := tls.Alloc(8)
  9306  	defer tls.Free(8)
  9307  
  9308  	var pApi uintptr = pCtx
  9309  	var pTab uintptr = uintptr(0)
  9310  	var rc int32
  9311  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  9312  	var nDequote int32 = 0
  9313  
  9314  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  9315  		ts+3177)
  9316  
  9317  	if rc == SQLITE_OK {
  9318  		nDequote = argc - 3
  9319  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*4, bp)
  9320  	}
  9321  
  9322  	if rc == SQLITE_OK {
  9323  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  9324  		if pTab == uintptr(0) {
  9325  			rc = SQLITE_NOMEM
  9326  		} else {
  9327  			libc.Xmemset(tls, pTab, 0, uint32(unsafe.Sizeof(Fts5tokTable{})))
  9328  		}
  9329  	}
  9330  
  9331  	if rc == SQLITE_OK {
  9332  		*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
  9333  		var zModule uintptr = uintptr(0)
  9334  		if nDequote > 0 {
  9335  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  9336  		}
  9337  
  9338  		rc = (*struct {
  9339  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  9340  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+4, pTab+12)
  9341  		if rc == SQLITE_OK {
  9342  			var azArg uintptr = func() uintptr {
  9343  				if nDequote > 1 {
  9344  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*4
  9345  				}
  9346  				return uintptr(0)
  9347  			}()
  9348  			var nArg int32
  9349  			if nDequote > 0 {
  9350  				nArg = nDequote - 1
  9351  			} else {
  9352  				nArg = 0
  9353  			}
  9354  			rc = (*struct {
  9355  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9356  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 4)), azArg, nArg, pTab+24)
  9357  		}
  9358  	}
  9359  
  9360  	if rc != SQLITE_OK {
  9361  		sqlite3.Xsqlite3_free(tls, pTab)
  9362  		pTab = uintptr(0)
  9363  	}
  9364  
  9365  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  9366  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9367  	return rc
  9368  }
  9369  
  9370  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  9371  	var pTab uintptr = pVtab
  9372  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  9373  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  9374  	}
  9375  	sqlite3.Xsqlite3_free(tls, pTab)
  9376  	return SQLITE_OK
  9377  }
  9378  
  9379  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  9380  	var i int32
  9381  
  9382  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  9383  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  9384  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  9385  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  9386  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  9387  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  9388  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  9389  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  9390  			return SQLITE_OK
  9391  		}
  9392  	}
  9393  
  9394  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9395  
  9396  	return SQLITE_OK
  9397  }
  9398  
  9399  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9400  	var pCsr uintptr
  9401  
  9402  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9403  	if pCsr == uintptr(0) {
  9404  		return SQLITE_NOMEM
  9405  	}
  9406  	libc.Xmemset(tls, pCsr, 0, uint32(unsafe.Sizeof(Fts5tokCursor{})))
  9407  
  9408  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9409  	return SQLITE_OK
  9410  }
  9411  
  9412  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9413  	var i int32
  9414  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9415  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*16)).FzToken)
  9416  	}
  9417  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9418  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9419  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9420  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9421  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9422  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9423  }
  9424  
  9425  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9426  	var pCsr uintptr = pCursor
  9427  	fts5tokResetCursor(tls, pCsr)
  9428  	sqlite3.Xsqlite3_free(tls, pCsr)
  9429  	return SQLITE_OK
  9430  }
  9431  
  9432  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9433  	var pCsr uintptr = pCursor
  9434  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9435  	return SQLITE_OK
  9436  }
  9437  
  9438  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9439  	var pCsr uintptr = pCtx
  9440  	var pRow uintptr
  9441  
  9442  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9443  		var nNew int32
  9444  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9445  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9446  		} else {
  9447  			nNew = 32
  9448  		}
  9449  		var aNew uintptr
  9450  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(uint32(nNew)*uint32(unsafe.Sizeof(Fts5tokRow{}))))
  9451  		if aNew == uintptr(0) {
  9452  			return SQLITE_NOMEM
  9453  		}
  9454  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*16, 0, uint32(unsafe.Sizeof(Fts5tokRow{}))*uint32(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9455  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9456  	}
  9457  
  9458  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*16
  9459  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9460  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9461  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9462  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*16)).FiPos + func() int32 {
  9463  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9464  				return 0
  9465  			}
  9466  			return 1
  9467  		}()
  9468  	}
  9469  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9470  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9471  		return SQLITE_NOMEM
  9472  	}
  9473  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint32(nToken))
  9474  	*(*int8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = int8(0)
  9475  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9476  
  9477  	return SQLITE_OK
  9478  }
  9479  
  9480  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9481  	var rc int32 = SQLITE_ERROR
  9482  	var pCsr uintptr = pCursor
  9483  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9484  
  9485  	fts5tokResetCursor(tls, pCsr)
  9486  	if idxNum == 1 {
  9487  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9488  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9489  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9490  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9491  			rc = SQLITE_NOMEM
  9492  		} else {
  9493  			if nByte > 0 {
  9494  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint32(nByte))
  9495  			}
  9496  			*(*int8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = int8(0)
  9497  			rc = (*struct {
  9498  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9499  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9500  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9501  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9502  				}{fts5tokCb})))
  9503  		}
  9504  	}
  9505  
  9506  	if rc != SQLITE_OK {
  9507  		return rc
  9508  	}
  9509  	return fts5tokNextMethod(tls, pCursor)
  9510  }
  9511  
  9512  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9513  	var pCsr uintptr = pCursor
  9514  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9515  }
  9516  
  9517  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9518  	var pCsr uintptr = pCursor
  9519  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*16
  9520  
  9521  	switch iCol {
  9522  	case 0:
  9523  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9524  		break
  9525  	case 1:
  9526  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9527  		break
  9528  	case 2:
  9529  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9530  		break
  9531  	case 3:
  9532  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9533  		break
  9534  	default:
  9535  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9536  		break
  9537  	}
  9538  	return SQLITE_OK
  9539  }
  9540  
  9541  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9542  	var pCsr uintptr = pCursor
  9543  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9544  	return SQLITE_OK
  9545  }
  9546  
  9547  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9548  	var rc int32
  9549  
  9550  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9551  	return rc
  9552  }
  9553  
  9554  var fts5tok_module = sqlite3_module{
  9555  	FxCreate:     0,
  9556  	FxConnect:    0,
  9557  	FxBestIndex:  0,
  9558  	FxDisconnect: 0,
  9559  	FxDestroy:    0,
  9560  	FxOpen:       0,
  9561  	FxClose:      0,
  9562  	FxFilter:     0,
  9563  	FxNext:       0,
  9564  	FxEof:        0,
  9565  	FxColumn:     0,
  9566  	FxRowid:      0,
  9567  }
  9568  
  9569  type sqlite3_api_routines = sqlite3_api_routines1
  9570  
  9571  type sqlite3_loadext_entry = uintptr
  9572  
  9573  type ApndVfs = sqlite3_vfs1
  9574  type ApndFile1 = struct {
  9575  	Fbase   sqlite3_file
  9576  	FiPgOne sqlite3_int64
  9577  	FiMark  sqlite3_int64
  9578  }
  9579  
  9580  type ApndFile = ApndFile1
  9581  
  9582  var apnd_vfs = sqlite3_vfs{
  9583  	FiVersion:          3,
  9584  	FmxPathname:        1024,
  9585  	FzName:             ts + 3248,
  9586  	FxOpen:             0,
  9587  	FxDelete:           0,
  9588  	FxAccess:           0,
  9589  	FxFullPathname:     0,
  9590  	FxDlOpen:           0,
  9591  	FxDlError:          0,
  9592  	FxDlSym:            0,
  9593  	FxDlClose:          0,
  9594  	FxRandomness:       0,
  9595  	FxSleep:            0,
  9596  	FxCurrentTime:      0,
  9597  	FxGetLastError:     0,
  9598  	FxCurrentTimeInt64: 0,
  9599  	FxSetSystemCall:    0,
  9600  	FxGetSystemCall:    0,
  9601  	FxNextSystemCall:   0,
  9602  }
  9603  
  9604  var apnd_io_methods = sqlite3_io_methods{
  9605  	FiVersion:               3,
  9606  	FxClose:                 0,
  9607  	FxRead:                  0,
  9608  	FxWrite:                 0,
  9609  	FxTruncate:              0,
  9610  	FxSync:                  0,
  9611  	FxFileSize:              0,
  9612  	FxLock:                  0,
  9613  	FxUnlock:                0,
  9614  	FxCheckReservedLock:     0,
  9615  	FxFileControl:           0,
  9616  	FxSectorSize:            0,
  9617  	FxDeviceCharacteristics: 0,
  9618  	FxShmMap:                0,
  9619  	FxShmLock:               0,
  9620  	FxShmBarrier:            0,
  9621  	FxShmUnmap:              0,
  9622  	FxFetch:                 0,
  9623  	FxUnfetch:               0,
  9624  }
  9625  
  9626  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9627  	pFile = pFile + uintptr(1)*20
  9628  	return (*struct {
  9629  		f func(*libc.TLS, uintptr) int32
  9630  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9631  }
  9632  
  9633  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9634  	var paf uintptr = pFile
  9635  	pFile = pFile + uintptr(1)*20
  9636  	return (*struct {
  9637  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9638  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iOfst)
  9639  }
  9640  
  9641  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9642  	bp := tls.Alloc(25)
  9643  	defer tls.Free(25)
  9644  
  9645  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9646  
  9647  	var i int32 = APND_MARK_FOS_SZ
  9648  	var rc int32
  9649  
  9650  	libc.Xmemcpy(tls, bp, ts+3256, uint32(APND_MARK_PREFIX_SZ))
  9651  	for libc.PreDecInt32(&i, 1) >= 0 {
  9652  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9653  		iPgOne >>= 8
  9654  	}
  9655  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9656  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9657  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9658  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, bp, APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ, iWriteEnd)) {
  9659  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9660  	}
  9661  	return rc
  9662  }
  9663  
  9664  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9665  	var paf uintptr = pFile
  9666  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9667  	if iWriteEnd >= int64(0x40000000) {
  9668  		return SQLITE_FULL
  9669  	}
  9670  	pFile = pFile + uintptr(1)*20
  9671  
  9672  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9673  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9674  		if SQLITE_OK != rc {
  9675  			return rc
  9676  		}
  9677  	}
  9678  	return (*struct {
  9679  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9680  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iOfst)
  9681  }
  9682  
  9683  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
  9684  	var paf uintptr = pFile
  9685  	pFile = pFile + uintptr(1)*20
  9686  
  9687  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
  9688  		return SQLITE_IOERR
  9689  	}
  9690  
  9691  	return (*struct {
  9692  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
  9693  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, (*ApndFile)(unsafe.Pointer(paf)).FiMark+int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ))
  9694  }
  9695  
  9696  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
  9697  	pFile = pFile + uintptr(1)*20
  9698  	return (*struct {
  9699  		f func(*libc.TLS, uintptr, int32) int32
  9700  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
  9701  }
  9702  
  9703  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
  9704  	var paf uintptr = pFile
  9705  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
  9706  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
  9707  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9708  		}
  9709  		return int64(0)
  9710  	}()
  9711  	return SQLITE_OK
  9712  }
  9713  
  9714  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9715  	pFile = pFile + uintptr(1)*20
  9716  	return (*struct {
  9717  		f func(*libc.TLS, uintptr, int32) int32
  9718  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
  9719  }
  9720  
  9721  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9722  	pFile = pFile + uintptr(1)*20
  9723  	return (*struct {
  9724  		f func(*libc.TLS, uintptr, int32) int32
  9725  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
  9726  }
  9727  
  9728  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
  9729  	pFile = pFile + uintptr(1)*20
  9730  	return (*struct {
  9731  		f func(*libc.TLS, uintptr, uintptr) int32
  9732  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
  9733  }
  9734  
  9735  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
  9736  	bp := tls.Alloc(16)
  9737  	defer tls.Free(16)
  9738  
  9739  	var paf uintptr = pFile
  9740  	var rc int32
  9741  	pFile = pFile + uintptr(1)*20
  9742  	if op == SQLITE_FCNTL_SIZE_HINT {
  9743  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9744  	}
  9745  	rc = (*struct {
  9746  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9747  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
  9748  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
  9749  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
  9750  	}
  9751  	return rc
  9752  }
  9753  
  9754  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
  9755  	pFile = pFile + uintptr(1)*20
  9756  	return (*struct {
  9757  		f func(*libc.TLS, uintptr) int32
  9758  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
  9759  }
  9760  
  9761  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
  9762  	pFile = pFile + uintptr(1)*20
  9763  	return (*struct {
  9764  		f func(*libc.TLS, uintptr) int32
  9765  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
  9766  }
  9767  
  9768  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
  9769  	pFile = pFile + uintptr(1)*20
  9770  	return (*struct {
  9771  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
  9772  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
  9773  }
  9774  
  9775  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
  9776  	pFile = pFile + uintptr(1)*20
  9777  	return (*struct {
  9778  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
  9779  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
  9780  }
  9781  
  9782  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
  9783  	pFile = pFile + uintptr(1)*20
  9784  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmBarrier})).f(tls, pFile)
  9785  }
  9786  
  9787  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
  9788  	pFile = pFile + uintptr(1)*20
  9789  	return (*struct {
  9790  		f func(*libc.TLS, uintptr, int32) int32
  9791  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
  9792  }
  9793  
  9794  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
  9795  	var p uintptr = pFile
  9796  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
  9797  		return SQLITE_IOERR
  9798  	}
  9799  	pFile = pFile + uintptr(1)*20
  9800  	return (*struct {
  9801  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
  9802  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst+(*ApndFile)(unsafe.Pointer(p)).FiPgOne, iAmt, pp)
  9803  }
  9804  
  9805  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
  9806  	var p uintptr = pFile
  9807  	pFile = pFile + uintptr(1)*20
  9808  	return (*struct {
  9809  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
  9810  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst+(*ApndFile)(unsafe.Pointer(p)).FiPgOne, pPage)
  9811  }
  9812  
  9813  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
  9814  	bp := tls.Alloc(25)
  9815  	defer tls.Free(25)
  9816  
  9817  	var rc int32
  9818  	var i int32
  9819  	var iMark sqlite3_int64
  9820  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
  9821  
  9822  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
  9823  		return int64(-1)
  9824  	}
  9825  	rc = (*struct {
  9826  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9827  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ, sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ))
  9828  	if rc != 0 {
  9829  		return int64(-1)
  9830  	}
  9831  	if libc.Xmemcmp(tls, bp, ts+3256, uint32(APND_MARK_PREFIX_SZ)) != 0 {
  9832  		return int64(-1)
  9833  	}
  9834  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
  9835  	for i = 1; i < 8; i++ {
  9836  		msbs = msbs - 8
  9837  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
  9838  	}
  9839  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
  9840  		return int64(-1)
  9841  	}
  9842  	if iMark&int64(0x1ff) != 0 {
  9843  		return int64(-1)
  9844  	}
  9845  	return iMark
  9846  }
  9847  
  9848  var apvfsSqliteHdr = *(*[16]int8)(unsafe.Pointer(ts + 3288))
  9849  
  9850  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9851  	bp := tls.Alloc(16)
  9852  	defer tls.Free(16)
  9853  
  9854  	var rc int32
  9855  
  9856  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
  9857  	if iMark >= int64(0) {
  9858  		rc = (*struct {
  9859  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9860  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]int8{})), iMark)
  9861  		if SQLITE_OK == rc &&
  9862  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint32(unsafe.Sizeof([16]int8{}))) == 0 &&
  9863  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
  9864  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
  9865  			return 1
  9866  		}
  9867  	}
  9868  	return 0
  9869  }
  9870  
  9871  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9872  	bp := tls.Alloc(16)
  9873  	defer tls.Free(16)
  9874  
  9875  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
  9876  		sz&int64(0x1ff) != int64(0) ||
  9877  		SQLITE_OK != (*struct {
  9878  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9879  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, bp, int32(unsafe.Sizeof([16]int8{})), int64(0)) ||
  9880  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint32(unsafe.Sizeof([16]int8{}))) != 0 {
  9881  		return 0
  9882  	} else {
  9883  		return 1
  9884  	}
  9885  	return int32(0)
  9886  }
  9887  
  9888  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
  9889  	bp := tls.Alloc(8)
  9890  	defer tls.Free(8)
  9891  
  9892  	var pApndFile uintptr = pFile
  9893  	var pBaseFile uintptr = pFile + uintptr(1)*20
  9894  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
  9895  	var rc int32
  9896  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
  9897  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
  9898  		return (*struct {
  9899  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9900  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
  9901  	}
  9902  	libc.Xmemset(tls, pApndFile, 0, uint32(unsafe.Sizeof(ApndFile{})))
  9903  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
  9904  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
  9905  
  9906  	rc = (*struct {
  9907  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9908  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
  9909  	if rc == SQLITE_OK {
  9910  		rc = (*struct {
  9911  			f func(*libc.TLS, uintptr, uintptr) int32
  9912  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
  9913  		if rc != 0 {
  9914  			(*struct {
  9915  				f func(*libc.TLS, uintptr) int32
  9916  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9917  		}
  9918  	}
  9919  	if rc != 0 {
  9920  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9921  		return rc
  9922  	}
  9923  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
  9924  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint32((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
  9925  		return SQLITE_OK
  9926  	}
  9927  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
  9928  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
  9929  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
  9930  		return SQLITE_OK
  9931  	}
  9932  	if flags&SQLITE_OPEN_CREATE == 0 {
  9933  		(*struct {
  9934  			f func(*libc.TLS, uintptr) int32
  9935  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9936  		rc = SQLITE_CANTOPEN
  9937  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9938  	} else {
  9939  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
  9940  	}
  9941  	return rc
  9942  }
  9943  
  9944  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
  9945  	return (*struct {
  9946  		f func(*libc.TLS, uintptr, uintptr, int32) int32
  9947  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDelete})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, dirSync)
  9948  }
  9949  
  9950  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
  9951  	return (*struct {
  9952  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9953  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxAccess})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, flags, pResOut)
  9954  }
  9955  
  9956  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
  9957  	return (*struct {
  9958  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9959  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxFullPathname})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, nOut, zOut)
  9960  }
  9961  
  9962  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
  9963  	return (*struct {
  9964  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9965  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
  9966  }
  9967  
  9968  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
  9969  	(*struct {
  9970  		f func(*libc.TLS, uintptr, int32, uintptr)
  9971  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlError})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nByte, zErrMsg)
  9972  }
  9973  
  9974  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
  9975  	return (*struct {
  9976  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
  9977  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlSym})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p, zSym)
  9978  }
  9979  
  9980  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
  9981  	(*struct {
  9982  		f func(*libc.TLS, uintptr, uintptr)
  9983  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
  9984  }
  9985  
  9986  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
  9987  	return (*struct {
  9988  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9989  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxRandomness})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nByte, zBufOut)
  9990  }
  9991  
  9992  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
  9993  	return (*struct {
  9994  		f func(*libc.TLS, uintptr, int32) int32
  9995  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
  9996  }
  9997  
  9998  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
  9999  	return (*struct {
 10000  		f func(*libc.TLS, uintptr, uintptr) int32
 10001  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 10002  }
 10003  
 10004  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 10005  	return (*struct {
 10006  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 10007  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetLastError})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, a, b)
 10008  }
 10009  
 10010  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 10011  	return (*struct {
 10012  		f func(*libc.TLS, uintptr, uintptr) int32
 10013  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
 10014  }
 10015  
 10016  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 10017  	return (*struct {
 10018  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 10019  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName, pCall)
 10020  }
 10021  
 10022  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 10023  	return (*struct {
 10024  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 10025  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10026  }
 10027  
 10028  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 10029  	return (*struct {
 10030  		f func(*libc.TLS, uintptr, uintptr) uintptr
 10031  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 10032  }
 10033  
 10034  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10035  	var rc int32 = SQLITE_OK
 10036  	var pOrig uintptr
 10037  	_ = pApi
 10038  
 10039  	_ = pzErrMsg
 10040  	_ = db
 10041  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 10042  	if pOrig == uintptr(0) {
 10043  		return SQLITE_ERROR
 10044  	}
 10045  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 10046  	apnd_vfs.FpAppData = pOrig
 10047  	apnd_vfs.FszOsFile = int32(uint32((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint32(unsafe.Sizeof(ApndFile{})))
 10048  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
 10049  	if rc == SQLITE_OK {
 10050  		rc = SQLITE_OK | int32(1)<<8
 10051  	}
 10052  	return rc
 10053  }
 10054  
 10055  type idtype_t = uint32
 10056  
 10057  type div_t = struct {
 10058  	Fquot int32
 10059  	Frem  int32
 10060  }
 10061  
 10062  type ldiv_t = struct {
 10063  	Fquot int32
 10064  	Frem  int32
 10065  }
 10066  
 10067  type lldiv_t = struct {
 10068  	Fquot int64
 10069  	Frem  int64
 10070  }
 10071  
 10072  type u_char = uint8
 10073  type u_short = uint16
 10074  type u_int = uint32
 10075  type u_long = uint32
 10076  type quad_t = int64
 10077  type u_quad_t = uint64
 10078  type fsid_t = struct{ F__val [2]int32 }
 10079  type loff_t = int64
 10080  
 10081  type ino_t = uint64
 10082  
 10083  type dev_t = uint64
 10084  
 10085  type gid_t = uint32
 10086  
 10087  type mode_t = uint32
 10088  
 10089  type nlink_t = uint32
 10090  
 10091  type uid_t = uint32
 10092  
 10093  type pid_t = int32
 10094  
 10095  type id_t = uint32
 10096  
 10097  type daddr_t = int32
 10098  type caddr_t = uintptr
 10099  
 10100  type key_t = int32
 10101  
 10102  type clock_t = int32
 10103  
 10104  type clockid_t = int32
 10105  
 10106  type time_t = int32
 10107  
 10108  type timer_t = uintptr
 10109  
 10110  type ulong = uint32
 10111  type ushort = uint16
 10112  type uint = uint32
 10113  
 10114  type int8_t = int8
 10115  type int16_t = int16
 10116  type int32_t = int32
 10117  type int64_t = int64
 10118  
 10119  type u_int8_t = uint8
 10120  type u_int16_t = uint16
 10121  type u_int32_t = uint32
 10122  type u_int64_t = uint64
 10123  
 10124  type register_t = int32
 10125  
 10126  type sigset_t = struct{ F__val [32]uint32 }
 10127  
 10128  type timeval = struct {
 10129  	Ftv_sec  int32
 10130  	Ftv_usec int32
 10131  }
 10132  
 10133  type timespec = struct {
 10134  	Ftv_sec  int32
 10135  	Ftv_nsec int32
 10136  }
 10137  
 10138  type suseconds_t = int32
 10139  
 10140  type fd_set = struct{ F__fds_bits [32]int32 }
 10141  
 10142  type fd_mask = int32
 10143  
 10144  type blksize_t = int32
 10145  
 10146  type blkcnt_t = int64
 10147  type fsblkcnt_t = uint64
 10148  type fsfilcnt_t = uint64
 10149  
 10150  type __pthread_internal_list = struct {
 10151  	F__prev uintptr
 10152  	F__next uintptr
 10153  }
 10154  
 10155  type __pthread_internal_slist = struct{ F__next uintptr }
 10156  
 10157  type __pthread_mutex_s = struct {
 10158  	F__lock   int32
 10159  	F__count  uint32
 10160  	F__owner  int32
 10161  	F__kind   int32
 10162  	F__nusers uint32
 10163  	F__20     struct {
 10164  		F__ccgo_pad1    [0]uint32
 10165  		F__elision_data struct {
 10166  			F__espins   int16
 10167  			F__eelision int16
 10168  		}
 10169  	}
 10170  }
 10171  
 10172  type __pthread_rwlock_arch_t = struct {
 10173  	F__readers       uint32
 10174  	F__writers       uint32
 10175  	F__wrphase_futex uint32
 10176  	F__writers_futex uint32
 10177  	F__pad3          uint32
 10178  	F__pad4          uint32
 10179  	F__flags         uint8
 10180  	F__shared        uint8
 10181  	F__rwelision     int8
 10182  	F__pad2          uint8
 10183  	F__cur_writer    int32
 10184  }
 10185  
 10186  type __pthread_cond_s = struct {
 10187  	F__0            struct{ F__wseq uint64 }
 10188  	F__8            struct{ F__g1_start uint64 }
 10189  	F__g_refs       [2]uint32
 10190  	F__g_size       [2]uint32
 10191  	F__g1_orig_size uint32
 10192  	F__wrefs        uint32
 10193  	F__g_signals    [2]uint32
 10194  }
 10195  
 10196  type pthread_t = uint32
 10197  
 10198  type pthread_mutexattr_t = struct {
 10199  	F__ccgo_pad1 [0]uint32
 10200  	F__size      [4]int8
 10201  }
 10202  
 10203  type pthread_condattr_t = struct {
 10204  	F__ccgo_pad1 [0]uint32
 10205  	F__size      [4]int8
 10206  }
 10207  
 10208  type pthread_key_t = uint32
 10209  
 10210  type pthread_once_t = int32
 10211  
 10212  type pthread_attr_t1 = struct {
 10213  	F__ccgo_pad1 [0]uint32
 10214  	F__size      [36]int8
 10215  }
 10216  
 10217  type pthread_attr_t = pthread_attr_t1
 10218  
 10219  type pthread_mutex_t = struct{ F__data __pthread_mutex_s }
 10220  
 10221  type pthread_cond_t = struct{ F__data __pthread_cond_s }
 10222  
 10223  type pthread_rwlock_t = struct{ F__data __pthread_rwlock_arch_t }
 10224  
 10225  type pthread_rwlockattr_t = struct {
 10226  	F__ccgo_pad1 [0]uint32
 10227  	F__size      [8]int8
 10228  }
 10229  
 10230  type pthread_spinlock_t = int32
 10231  
 10232  type pthread_barrier_t = struct {
 10233  	F__ccgo_pad1 [0]uint32
 10234  	F__size      [20]int8
 10235  }
 10236  
 10237  type pthread_barrierattr_t = struct {
 10238  	F__ccgo_pad1 [0]uint32
 10239  	F__size      [4]int8
 10240  }
 10241  
 10242  type random_data = struct {
 10243  	Ffptr      uintptr
 10244  	Frptr      uintptr
 10245  	Fstate     uintptr
 10246  	Frand_type int32
 10247  	Frand_deg  int32
 10248  	Frand_sep  int32
 10249  	Fend_ptr   uintptr
 10250  }
 10251  
 10252  type drand48_data = struct {
 10253  	F__x     [3]uint16
 10254  	F__old_x [3]uint16
 10255  	F__c     uint16
 10256  	F__init  uint16
 10257  	F__a     uint64
 10258  }
 10259  
 10260  type amatch_vtab1 = struct {
 10261  	Fbase       sqlite3_vtab
 10262  	FzClassName uintptr
 10263  	FzDb        uintptr
 10264  	FzSelf      uintptr
 10265  	FzCostTab   uintptr
 10266  	FzVocabTab  uintptr
 10267  	FzVocabWord uintptr
 10268  	FzVocabLang uintptr
 10269  	FpRule      uintptr
 10270  	FrIns       amatch_cost
 10271  	FrDel       amatch_cost
 10272  	FrSub       amatch_cost
 10273  	Fdb         uintptr
 10274  	FpVCheck    uintptr
 10275  	FnCursor    int32
 10276  }
 10277  
 10278  type amatch_vtab = amatch_vtab1
 10279  type amatch_cursor1 = struct {
 10280  	Fbase      sqlite3_vtab_cursor
 10281  	FiRowid    sqlite3_int64
 10282  	FiLang     amatch_langid
 10283  	FrLimit    amatch_cost
 10284  	FnBuf      int32
 10285  	FoomErr    int32
 10286  	FnWord     int32
 10287  	FzBuf      uintptr
 10288  	FzInput    uintptr
 10289  	FpVtab     uintptr
 10290  	FpAllWords uintptr
 10291  	FpCurrent  uintptr
 10292  	FpCost     uintptr
 10293  	FpWord     uintptr
 10294  }
 10295  
 10296  type amatch_cursor = amatch_cursor1
 10297  type amatch_rule1 = struct {
 10298  	FpNext       uintptr
 10299  	FzFrom       uintptr
 10300  	FrCost       amatch_cost
 10301  	FiLang       amatch_langid
 10302  	FnFrom       amatch_len
 10303  	FnTo         amatch_len
 10304  	FzTo         [4]int8
 10305  	F__ccgo_pad1 [2]byte
 10306  }
 10307  
 10308  type amatch_rule = amatch_rule1
 10309  type amatch_word1 = struct {
 10310  	FpNext  uintptr
 10311  	FsCost  amatch_avl
 10312  	FsWord  amatch_avl
 10313  	FrCost  amatch_cost
 10314  	FiSeq   int32
 10315  	FzCost  [10]int8
 10316  	FnMatch int16
 10317  	FzWord  [4]int8
 10318  }
 10319  
 10320  type amatch_word = amatch_word1
 10321  type amatch_avl1 = struct {
 10322  	FpWord     uintptr
 10323  	FzKey      uintptr
 10324  	FpBefore   uintptr
 10325  	FpAfter    uintptr
 10326  	FpUp       uintptr
 10327  	Fheight    int16
 10328  	Fimbalance int16
 10329  }
 10330  
 10331  type amatch_avl = amatch_avl1
 10332  
 10333  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 10334  	var hBefore int16
 10335  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10336  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 10337  	} else {
 10338  		hBefore = int16(0)
 10339  	}
 10340  	var hAfter int16
 10341  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10342  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 10343  	} else {
 10344  		hAfter = int16(0)
 10345  	}
 10346  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 10347  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 10348  		if int32(hBefore) > int32(hAfter) {
 10349  			return int32(hBefore)
 10350  		}
 10351  		return int32(hAfter)
 10352  	}() + 1)
 10353  }
 10354  
 10355  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 10356  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
 10357  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
 10358  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10359  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
 10360  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
 10361  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
 10362  	if pY != 0 {
 10363  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10364  	}
 10365  	amatchAvlRecomputeHeight(tls, pP)
 10366  	amatchAvlRecomputeHeight(tls, pB)
 10367  	return pB
 10368  }
 10369  
 10370  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 10371  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
 10372  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
 10373  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
 10374  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
 10375  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
 10376  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
 10377  	if pY != 0 {
 10378  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
 10379  	}
 10380  	amatchAvlRecomputeHeight(tls, pP)
 10381  	amatchAvlRecomputeHeight(tls, pA)
 10382  	return pA
 10383  }
 10384  
 10385  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 10386  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
 10387  	if pUp == uintptr(0) {
 10388  		return pp
 10389  	}
 10390  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 10391  		return pUp + 12
 10392  	}
 10393  	return pUp + 8
 10394  }
 10395  
 10396  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 10397  	bp := tls.Alloc(4)
 10398  	defer tls.Free(4)
 10399  	*(*uintptr)(unsafe.Pointer(bp)) = p
 10400  
 10401  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 10402  	var pp uintptr
 10403  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 10404  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 10405  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 10406  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 10407  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 10408  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
 10409  			}
 10410  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10411  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10412  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 10413  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 10414  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 10415  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
 10416  			}
 10417  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 10418  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 10419  		}
 10420  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 10421  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 10422  	}
 10423  	return pTop
 10424  }
 10425  
 10426  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
 10427  	var c int32
 10428  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
 10429  		if c < 0 {
 10430  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10431  		} else {
 10432  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10433  		}
 10434  	}
 10435  	return p
 10436  }
 10437  
 10438  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 10439  	if p != 0 {
 10440  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10441  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10442  		}
 10443  	}
 10444  	return p
 10445  }
 10446  
 10447  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 10448  	var c int32
 10449  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 10450  	if p == uintptr(0) {
 10451  		p = pNew
 10452  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 10453  	} else {
 10454  		for p != 0 {
 10455  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
 10456  			if c < 0 {
 10457  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 10458  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
 10459  				} else {
 10460  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
 10461  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10462  					break
 10463  				}
 10464  			} else if c > 0 {
 10465  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 10466  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
 10467  				} else {
 10468  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
 10469  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
 10470  					break
 10471  				}
 10472  			} else {
 10473  				return p
 10474  			}
 10475  		}
 10476  	}
 10477  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 10478  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 10479  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 10480  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 10481  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
 10482  
 10483  	return uintptr(0)
 10484  }
 10485  
 10486  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
 10487  	var ppParent uintptr
 10488  	var pBalance uintptr = uintptr(0)
 10489  
 10490  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
 10491  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10492  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
 10493  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10494  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
 10495  		var pX uintptr
 10496  		var pY uintptr
 10497  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10498  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
 10499  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10500  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10501  		}
 10502  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
 10503  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
 10504  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
 10505  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
 10506  		} else {
 10507  			pBalance = pX
 10508  		}
 10509  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10510  		if pY != 0 {
 10511  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
 10512  		}
 10513  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10514  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
 10515  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
 10516  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
 10517  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10518  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
 10519  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
 10520  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
 10521  	}
 10522  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
 10523  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
 10524  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
 10525  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
 10526  
 10527  }
 10528  
 10529  type amatch_cost = int32
 10530  type amatch_len = int8
 10531  type amatch_langid = int32
 10532  
 10533  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 10534  	bp := tls.Alloc(24)
 10535  	defer tls.Free(24)
 10536  
 10537  	var pTail uintptr
 10538  
 10539  	pTail = bp
 10540  	for pA != 0 && pB != 0 {
 10541  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
 10542  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10543  			pTail = pA
 10544  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
 10545  		} else {
 10546  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10547  			pTail = pB
 10548  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
 10549  		}
 10550  	}
 10551  	if pA == uintptr(0) {
 10552  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
 10553  	} else {
 10554  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
 10555  	}
 10556  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
 10557  }
 10558  
 10559  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 10560  	bp := tls.Alloc(48)
 10561  	defer tls.Free(48)
 10562  
 10563  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 10564  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 10565  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 10566  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 10567  
 10568  	var rc int32 = SQLITE_OK
 10569  	var nFrom int32
 10570  	var nTo int32
 10571  	var pRule uintptr = uintptr(0)
 10572  
 10573  	if zFrom == uintptr(0) {
 10574  		zFrom = ts + 584
 10575  	}
 10576  	if zTo == uintptr(0) {
 10577  		zTo = ts + 584
 10578  	}
 10579  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 10580  	nTo = int32(libc.Xstrlen(tls, zTo))
 10581  
 10582  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 10583  		if int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zFrom + 1))) == 0 {
 10584  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 10585  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 10586  			}
 10587  		}
 10588  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 10589  		return SQLITE_OK
 10590  	}
 10591  
 10592  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 10593  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 10594  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 10595  		rc = SQLITE_ERROR
 10596  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 10597  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 10598  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 10599  		rc = SQLITE_ERROR
 10600  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 10601  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 10602  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 10603  		rc = SQLITE_ERROR
 10604  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 10605  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 10606  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 10607  		}
 10608  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 10609  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 10610  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 10611  		}
 10612  	} else {
 10613  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(amatch_rule{}))+uint32(nFrom)+uint32(nTo)))
 10614  		if pRule == uintptr(0) {
 10615  			rc = SQLITE_NOMEM
 10616  		} else {
 10617  			libc.Xmemset(tls, pRule, 0, uint32(unsafe.Sizeof(amatch_rule{})))
 10618  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 18 + uintptr(nTo+1)
 10619  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 10620  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint32(nFrom+1))
 10621  			libc.Xmemcpy(tls, pRule+18, zTo, uint32(nTo+1))
 10622  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 10623  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 10624  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 10625  		}
 10626  	}
 10627  
 10628  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 10629  	return rc
 10630  }
 10631  
 10632  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 10633  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 10634  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 10635  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 10636  		sqlite3.Xsqlite3_free(tls, pRule)
 10637  	}
 10638  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 10639  }
 10640  
 10641  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 10642  	bp := tls.Alloc(124)
 10643  	defer tls.Free(124)
 10644  
 10645  	var rc int32 = SQLITE_OK
 10646  	var zSql uintptr
 10647  	var pHead uintptr = uintptr(0)
 10648  
 10649  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 10650  	if zSql == uintptr(0) {
 10651  		rc = SQLITE_NOMEM
 10652  	} else {
 10653  		var rc2 int32
 10654  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 10655  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 10656  		if rc != SQLITE_OK {
 10657  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3427, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, sqlite3.Xsqlite3_errmsg(tls, db)))
 10658  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 10659  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 10660  				libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 10661  			rc = SQLITE_ERROR
 10662  		} else {
 10663  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 10664  				*(*uintptr)(unsafe.Pointer(bp + 60)) = uintptr(0)
 10665  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+60, pzErr)
 10666  				if *(*uintptr)(unsafe.Pointer(bp + 60)) != 0 {
 10667  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 60)))).FpNext = pHead
 10668  					pHead = *(*uintptr)(unsafe.Pointer(bp + 60))
 10669  				}
 10670  			}
 10671  		}
 10672  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 10673  		if rc == SQLITE_OK {
 10674  			rc = rc2
 10675  		}
 10676  	}
 10677  	sqlite3.Xsqlite3_free(tls, zSql)
 10678  
 10679  	if rc == SQLITE_OK {
 10680  		var i uint32
 10681  		var pX uintptr
 10682  
 10683  		for i = uint32(0); i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 10684  			*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = uintptr(0)
 10685  		}
 10686  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 10687  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 10688  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 10689  			for i = uint32(0); *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) != 0 && i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0)))-uint32(1); i++ {
 10690  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 10691  				*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = uintptr(0)
 10692  			}
 10693  			*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 10694  		}
 10695  		pX = *(*uintptr)(unsafe.Pointer(bp + 64))
 10696  		i = uint32(1)
 10697  		for ; i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 10698  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 10699  		}
 10700  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 10701  	} else {
 10702  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 10703  	}
 10704  
 10705  	return rc
 10706  }
 10707  
 10708  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 10709  	var nIn sqlite3_int64
 10710  	var zOut uintptr
 10711  
 10712  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 10713  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 10714  	if zOut != 0 {
 10715  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 10716  
 10717  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 10718  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 10719  		} else {
 10720  			var iOut int32 = 0
 10721  			var iIn int32
 10722  
 10723  			if int32(q) == '[' {
 10724  				q = int8(']')
 10725  			}
 10726  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 10727  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 10728  					iIn++
 10729  				}
 10730  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 10731  			}
 10732  		}
 10733  
 10734  	}
 10735  	return zOut
 10736  }
 10737  
 10738  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 10739  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 10740  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10741  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 10742  	}
 10743  }
 10744  
 10745  func amatchFree(tls *libc.TLS, p uintptr) {
 10746  	if p != 0 {
 10747  		amatchFreeRules(tls, p)
 10748  		amatchVCheckClear(tls, p)
 10749  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 10750  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 10751  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 10752  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 10753  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 10754  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 10755  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 10756  		libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(amatch_vtab{})))
 10757  		sqlite3.Xsqlite3_free(tls, p)
 10758  	}
 10759  }
 10760  
 10761  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10762  	var p uintptr = pVtab
 10763  
 10764  	amatchFree(tls, p)
 10765  	return SQLITE_OK
 10766  }
 10767  
 10768  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 10769  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 10770  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 10771  	var i int32
 10772  	if nStr < nKey+1 {
 10773  		return uintptr(0)
 10774  	}
 10775  	if libc.Xmemcmp(tls, zStr, zKey, uint32(nKey)) != 0 {
 10776  		return uintptr(0)
 10777  	}
 10778  	for i = nKey; int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))))*2)))&int32(_ISspace) != 0; i++ {
 10779  	}
 10780  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 10781  		return uintptr(0)
 10782  	}
 10783  	i++
 10784  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))))*2)))&int32(_ISspace) != 0 {
 10785  		i++
 10786  	}
 10787  	return zStr + uintptr(i)
 10788  }
 10789  
 10790  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10791  	bp := tls.Alloc(32)
 10792  	defer tls.Free(32)
 10793  
 10794  	var rc int32
 10795  	var pNew uintptr
 10796  	var zModule uintptr
 10797  	var zDb uintptr
 10798  	var zVal uintptr
 10799  	var i int32
 10800  	rc = SQLITE_OK
 10801  	pNew = uintptr(0)
 10802  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 10803  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 10804  
 10805  	_ = pAux
 10806  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10807  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 10808  	if !(pNew == uintptr(0)) {
 10809  		goto __1
 10810  	}
 10811  	return SQLITE_NOMEM
 10812  __1:
 10813  	;
 10814  	rc = SQLITE_NOMEM
 10815  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(amatch_vtab{})))
 10816  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 10817  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 10818  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 10819  		goto __2
 10820  	}
 10821  	goto amatchConnectError
 10822  __2:
 10823  	;
 10824  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 10825  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 10826  		goto __3
 10827  	}
 10828  	goto amatchConnectError
 10829  __3:
 10830  	;
 10831  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 10832  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 10833  		goto __4
 10834  	}
 10835  	goto amatchConnectError
 10836  __4:
 10837  	;
 10838  	i = 3
 10839  __5:
 10840  	if !(i < argc) {
 10841  		goto __7
 10842  	}
 10843  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 10844  	if !(zVal != 0) {
 10845  		goto __8
 10846  	}
 10847  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 10848  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 10849  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 10850  		goto __9
 10851  	}
 10852  	goto amatchConnectError
 10853  __9:
 10854  	;
 10855  	goto __6
 10856  __8:
 10857  	;
 10858  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 10859  	if !(zVal != 0) {
 10860  		goto __10
 10861  	}
 10862  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 10863  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 10864  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 10865  		goto __11
 10866  	}
 10867  	goto amatchConnectError
 10868  __11:
 10869  	;
 10870  	goto __6
 10871  __10:
 10872  	;
 10873  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 10874  	if !(zVal != 0) {
 10875  		goto __12
 10876  	}
 10877  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 10878  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 10879  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 10880  		goto __13
 10881  	}
 10882  	goto amatchConnectError
 10883  __13:
 10884  	;
 10885  	goto __6
 10886  __12:
 10887  	;
 10888  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 10889  	if !(zVal != 0) {
 10890  		goto __14
 10891  	}
 10892  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 10893  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 10894  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10895  		goto __15
 10896  	}
 10897  	goto amatchConnectError
 10898  __15:
 10899  	;
 10900  	goto __6
 10901  __14:
 10902  	;
 10903  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
 10904  	amatchFree(tls, pNew)
 10905  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10906  	return SQLITE_ERROR
 10907  	goto __6
 10908  __6:
 10909  	i++
 10910  	goto __5
 10911  	goto __7
 10912  __7:
 10913  	;
 10914  	rc = SQLITE_OK
 10915  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10916  		goto __16
 10917  	}
 10918  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 10919  	rc = SQLITE_ERROR
 10920  	goto __17
 10921  __16:
 10922  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 10923  __17:
 10924  	;
 10925  	if !(rc == SQLITE_OK) {
 10926  		goto __18
 10927  	}
 10928  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 10929  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10930  		ts+3599)
 10931  __18:
 10932  	;
 10933  	if !(rc != SQLITE_OK) {
 10934  		goto __19
 10935  	}
 10936  	amatchFree(tls, pNew)
 10937  __19:
 10938  	;
 10939  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 10940  	return rc
 10941  
 10942  amatchConnectError:
 10943  	amatchFree(tls, pNew)
 10944  	return rc
 10945  }
 10946  
 10947  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 10948  	var p uintptr = pVTab
 10949  	var pCur uintptr
 10950  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 10951  	if pCur == uintptr(0) {
 10952  		return SQLITE_NOMEM
 10953  	}
 10954  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(amatch_cursor{})))
 10955  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 10956  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10957  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 10958  	return SQLITE_OK
 10959  }
 10960  
 10961  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 10962  	var pWord uintptr
 10963  	var pNextWord uintptr
 10964  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 10965  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 10966  		sqlite3.Xsqlite3_free(tls, pWord)
 10967  	}
 10968  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 10969  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 10970  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 10971  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10972  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 10973  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10974  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 10975  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 10976  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 10977  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 10978  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 10979  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 10980  }
 10981  
 10982  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 10983  	var pCur uintptr = cur
 10984  	amatchClearCursor(tls, pCur)
 10985  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 10986  	sqlite3.Xsqlite3_free(tls, pCur)
 10987  	return SQLITE_OK
 10988  }
 10989  
 10990  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 10991  	*(*int8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 10992  	*(*int8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 10993  	*(*int8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 10994  	*(*int8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 10995  }
 10996  
 10997  var a = *(*[65]int8)(unsafe.Pointer(ts + 3666))
 10998  
 10999  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 11000  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+60)
 11001  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+60+uintptr(4))
 11002  	*(*int8)(unsafe.Pointer(pWord + 60 + 8)) = int8(0)
 11003  }
 11004  
 11005  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 11006  	for int32(libc.AssignPtrInt8(libc.PostIncUintptr(&dest, 1), *(*int8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 11007  	}
 11008  }
 11009  
 11010  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 11011  	for *(*int8)(unsafe.Pointer(dest)) != 0 {
 11012  		dest++
 11013  	}
 11014  	amatchStrcpy(tls, dest, src)
 11015  }
 11016  
 11017  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 11018  	bp := tls.Alloc(4)
 11019  	defer tls.Free(4)
 11020  
 11021  	var pWord uintptr
 11022  	var pNode uintptr
 11023  	var pOther uintptr
 11024  	_ = pOther
 11025  	var nBase int32
 11026  	var nTail int32
 11027  
 11028  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 11029  		return
 11030  	}
 11031  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 11032  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 11033  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 11034  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 11035  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 11036  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 11037  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 11038  			return
 11039  		}
 11040  	}
 11041  	amatchEncodeInt(tls, nMatch, bp)
 11042  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint32(2))
 11043  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint32(nBase))
 11044  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint32(nTail+1))
 11045  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11046  	if pNode != 0 {
 11047  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11048  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 11049  			amatchAvlRemove(tls, pCur+52, pWord+4)
 11050  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11051  			amatchWriteCost(tls, pWord)
 11052  			pOther = amatchAvlInsert(tls, pCur+52, pWord+4)
 11053  			_ = pOther
 11054  		}
 11055  		return
 11056  	}
 11057  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(amatch_word{}))+uint32(nBase)+uint32(nTail)-uint32(1)))
 11058  	if pWord == uintptr(0) {
 11059  		return
 11060  	}
 11061  	libc.Xmemset(tls, pWord, 0, uint32(unsafe.Sizeof(amatch_word{})))
 11062  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 11063  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 11064  	amatchWriteCost(tls, pWord)
 11065  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 11066  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 11067  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 11068  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 60
 11069  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 11070  	pOther = amatchAvlInsert(tls, pCur+52, pWord+4)
 11071  	_ = pOther
 11072  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 72
 11073  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 11074  	amatchStrcpy(tls, pWord+72, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 11075  	pOther = amatchAvlInsert(tls, pCur+56, pWord+28)
 11076  	_ = pOther
 11077  }
 11078  
 11079  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 11080  	bp := tls.Alloc(80)
 11081  	defer tls.Free(80)
 11082  
 11083  	var pCur uintptr = cur
 11084  	var pWord uintptr = uintptr(0)
 11085  	var pNode uintptr
 11086  	var isMatch int32 = 0
 11087  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 11088  	var nWord int32
 11089  	var rc int32
 11090  	var i int32
 11091  	var zW uintptr
 11092  	var pRule uintptr
 11093  	var zBuf uintptr = uintptr(0)
 11094  	var nBuf int8 = int8(0)
 11095  
 11096  	var nNextIn int32
 11097  
 11098  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 11099  		var zSql uintptr
 11100  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*int8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 11101  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11102  				ts+3731,
 11103  				libc.VaList(bp, ts+3753,
 11104  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11105  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 11106  		} else {
 11107  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 11108  				ts+3792,
 11109  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 11110  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 11111  		}
 11112  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+60, uintptr(0))
 11113  		sqlite3.Xsqlite3_free(tls, zSql)
 11114  		if rc != 0 {
 11115  			return rc
 11116  		}
 11117  	}
 11118  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11119  
 11120  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 11121  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 11122  		if pNode == uintptr(0) {
 11123  			pWord = uintptr(0)
 11124  			break
 11125  		}
 11126  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 11127  		amatchAvlRemove(tls, pCur+52, pWord+4)
 11128  
 11129  		nWord = int32(libc.Xstrlen(tls, pWord+72+uintptr(2)))
 11130  		if nWord+20 > int32(nBuf) {
 11131  			nBuf = int8(nWord + 100)
 11132  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 11133  			if zBuf == uintptr(0) {
 11134  				return SQLITE_NOMEM
 11135  			}
 11136  		}
 11137  		amatchStrcpy(tls, zBuf, pWord+72+uintptr(2))
 11138  		*(*int8)(unsafe.Pointer(bp + 64)) = int8(0)
 11139  		*(*int8)(unsafe.Pointer(bp + 72)) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 11140  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 {
 11141  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i))))&0xc0 == 0x80; i++ {
 11142  				*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr(int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+i)))
 11143  			}
 11144  			*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = int8(0)
 11145  			nNextIn = i
 11146  		} else {
 11147  			nNextIn = 0
 11148  		}
 11149  
 11150  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*int8)(unsafe.Pointer(bp + 72))) != '*' {
 11151  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11152  			amatchStrcat(tls, zBuf, bp+72)
 11153  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 11154  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11155  			if rc == SQLITE_ROW {
 11156  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11157  				if libc.Xstrncmp(tls, zBuf, zW, uint32(nWord+nNextIn)) == 0 {
 11158  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 11159  				}
 11160  			}
 11161  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 11162  		}
 11163  
 11164  		for 1 != 0 {
 11165  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11166  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11167  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 11168  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11169  			if rc != SQLITE_ROW {
 11170  				break
 11171  			}
 11172  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 11173  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 11174  			if libc.Xstrncmp(tls, zW, zBuf, uint32(nWord)) != 0 {
 11175  				break
 11176  			}
 11177  			if int32(*(*int8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*int8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 11178  				int32(*(*int8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 11179  				isMatch = 1
 11180  				*(*int8)(unsafe.Pointer(bp + 72)) = int8(0)
 11181  				nNextIn = 0
 11182  				break
 11183  			}
 11184  			*(*int8)(unsafe.Pointer(bp + 64)) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord)))
 11185  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 11186  				*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 11187  			}
 11188  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = int8(0)
 11189  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 11190  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 11191  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 11192  					zBuf, bp+64)
 11193  			}
 11194  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 11195  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11196  					zBuf, bp+64)
 11197  			}
 11198  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 11199  				break
 11200  			}
 11201  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 11202  		}
 11203  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 11204  
 11205  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 11206  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 11207  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 11208  				zBuf, ts+584)
 11209  		}
 11210  
 11211  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 11212  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 11213  				continue
 11214  			}
 11215  			if libc.Xstrncmp(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput+uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch), uint32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom)) == 0 {
 11216  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 11217  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+72+uintptr(2), pRule+18)
 11218  			}
 11219  		}
 11220  	}
 11221  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 11222  	sqlite3.Xsqlite3_free(tls, zBuf)
 11223  	return SQLITE_OK
 11224  }
 11225  
 11226  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11227  	bp := tls.Alloc(8)
 11228  	defer tls.Free(8)
 11229  
 11230  	var pCur uintptr = pVtabCursor
 11231  	var zWord uintptr = ts + 3840
 11232  	var idx int32
 11233  
 11234  	amatchClearCursor(tls, pCur)
 11235  	idx = 0
 11236  	if idxNum&1 != 0 {
 11237  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11238  		idx++
 11239  	}
 11240  	if idxNum&2 != 0 {
 11241  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*4)))
 11242  		idx++
 11243  	}
 11244  	if idxNum&4 != 0 {
 11245  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*4)))
 11246  		idx++
 11247  	}
 11248  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 11249  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 11250  		return SQLITE_NOMEM
 11251  	}
 11252  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 11253  	amatchNext(tls, pVtabCursor)
 11254  
 11255  	return SQLITE_OK
 11256  }
 11257  
 11258  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11259  	var pCur uintptr = cur
 11260  	switch i {
 11261  	case AMATCH_COL_WORD:
 11262  		{
 11263  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+72+uintptr(2), -1, uintptr(0))
 11264  			break
 11265  
 11266  		}
 11267  	case AMATCH_COL_DISTANCE:
 11268  		{
 11269  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 11270  			break
 11271  
 11272  		}
 11273  	case AMATCH_COL_LANGUAGE:
 11274  		{
 11275  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 11276  			break
 11277  
 11278  		}
 11279  	case AMATCH_COL_NWORD:
 11280  		{
 11281  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 11282  			break
 11283  
 11284  		}
 11285  	default:
 11286  		{
 11287  			sqlite3.Xsqlite3_result_null(tls, ctx)
 11288  			break
 11289  
 11290  		}
 11291  	}
 11292  	return SQLITE_OK
 11293  }
 11294  
 11295  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11296  	var pCur uintptr = cur
 11297  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 11298  	return SQLITE_OK
 11299  }
 11300  
 11301  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 11302  	var pCur uintptr = cur
 11303  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 11304  }
 11305  
 11306  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11307  	var iPlan int32 = 0
 11308  	var iDistTerm int32 = -1
 11309  	var iLangTerm int32 = -1
 11310  	var i int32
 11311  	var pConstraint uintptr
 11312  
 11313  	_ = tab
 11314  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11315  	i = 0
 11316  __1:
 11317  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11318  		goto __3
 11319  	}
 11320  	{
 11321  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11322  			goto __2
 11323  		}
 11324  		if iPlan&1 == 0 &&
 11325  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 11326  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 11327  			iPlan = iPlan | 1
 11328  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 11329  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11330  		}
 11331  		if iPlan&2 == 0 &&
 11332  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 11333  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 11334  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 11335  			iPlan = iPlan | 2
 11336  			iDistTerm = i
 11337  		}
 11338  		if iPlan&4 == 0 &&
 11339  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 11340  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 11341  			iPlan = iPlan | 4
 11342  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 11343  			iLangTerm = i
 11344  		}
 11345  
 11346  	}
 11347  	goto __2
 11348  __2:
 11349  	i++
 11350  	pConstraint += 12
 11351  	goto __1
 11352  	goto __3
 11353  __3:
 11354  	;
 11355  	if iPlan&2 != 0 {
 11356  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 11357  	}
 11358  	if iPlan&4 != 0 {
 11359  		var idx int32 = 1
 11360  		if iPlan&1 != 0 {
 11361  			idx++
 11362  		}
 11363  		if iPlan&2 != 0 {
 11364  			idx++
 11365  		}
 11366  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 11367  	}
 11368  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 11369  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 11370  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 11371  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 11372  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 11373  	}
 11374  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 11375  
 11376  	return SQLITE_OK
 11377  }
 11378  
 11379  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 11380  	bp := tls.Alloc(24)
 11381  	defer tls.Free(24)
 11382  
 11383  	var p uintptr = pVTab
 11384  	var zCmd uintptr
 11385  	_ = pRowid
 11386  	if argc == 1 {
 11387  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 11388  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11389  		return SQLITE_ERROR
 11390  	}
 11391  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 11392  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 11393  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11394  		return SQLITE_ERROR
 11395  	}
 11396  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4))) != SQLITE_NULL ||
 11397  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4))) != SQLITE_NULL ||
 11398  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4))) != SQLITE_NULL {
 11399  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11400  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 11401  		return SQLITE_ERROR
 11402  	}
 11403  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*4)))
 11404  	if zCmd == uintptr(0) {
 11405  		return SQLITE_OK
 11406  	}
 11407  
 11408  	return SQLITE_OK
 11409  }
 11410  
 11411  var amatchModule = sqlite3_module{
 11412  	FxCreate:     0,
 11413  	FxConnect:    0,
 11414  	FxBestIndex:  0,
 11415  	FxDisconnect: 0,
 11416  	FxDestroy:    0,
 11417  	FxOpen:       0,
 11418  	FxClose:      0,
 11419  	FxFilter:     0,
 11420  	FxNext:       0,
 11421  	FxEof:        0,
 11422  	FxColumn:     0,
 11423  	FxRowid:      0,
 11424  	FxUpdate:     0,
 11425  }
 11426  
 11427  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11428  	var rc int32 = SQLITE_OK
 11429  	_ = pApi
 11430  
 11431  	_ = pzErrMsg
 11432  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 11433  	return rc
 11434  }
 11435  
 11436  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 11437  
 11438  type carray_bind1 = struct {
 11439  	FaData  uintptr
 11440  	FnData  int32
 11441  	FmFlags int32
 11442  	FxDel   uintptr
 11443  }
 11444  
 11445  type carray_bind = carray_bind1
 11446  
 11447  type carray_cursor1 = struct {
 11448  	Fbase        sqlite3_vtab_cursor
 11449  	FiRowid      sqlite3_int64
 11450  	FpPtr        uintptr
 11451  	FiCnt        sqlite3_int64
 11452  	FeType       uint8
 11453  	F__ccgo_pad1 [3]byte
 11454  }
 11455  
 11456  type carray_cursor = carray_cursor1
 11457  
 11458  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 11459  	var pNew uintptr
 11460  	var rc int32
 11461  
 11462  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 11463  		ts+3985)
 11464  	if rc == SQLITE_OK {
 11465  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 11466  		if pNew == uintptr(0) {
 11467  			return SQLITE_NOMEM
 11468  		}
 11469  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(sqlite3_vtab{})))
 11470  	}
 11471  	return rc
 11472  }
 11473  
 11474  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 11475  	sqlite3.Xsqlite3_free(tls, pVtab)
 11476  	return SQLITE_OK
 11477  }
 11478  
 11479  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 11480  	var pCur uintptr
 11481  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 11482  	if pCur == uintptr(0) {
 11483  		return SQLITE_NOMEM
 11484  	}
 11485  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(carray_cursor{})))
 11486  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 11487  	return SQLITE_OK
 11488  }
 11489  
 11490  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 11491  	sqlite3.Xsqlite3_free(tls, cur)
 11492  	return SQLITE_OK
 11493  }
 11494  
 11495  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 11496  	var pCur uintptr = cur
 11497  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 11498  	return SQLITE_OK
 11499  }
 11500  
 11501  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 11502  	var pCur uintptr = cur
 11503  	var x sqlite3_int64 = int64(0)
 11504  	switch i {
 11505  	case CARRAY_COLUMN_POINTER:
 11506  		return SQLITE_OK
 11507  	case CARRAY_COLUMN_COUNT:
 11508  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 11509  		break
 11510  	case CARRAY_COLUMN_CTYPE:
 11511  		{
 11512  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 11513  			return SQLITE_OK
 11514  
 11515  		}
 11516  	default:
 11517  		{
 11518  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 11519  			case CARRAY_INT32:
 11520  				{
 11521  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11522  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 11523  					return SQLITE_OK
 11524  
 11525  				}
 11526  			case CARRAY_INT64:
 11527  				{
 11528  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11529  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11530  					return SQLITE_OK
 11531  
 11532  				}
 11533  			case CARRAY_DOUBLE:
 11534  				{
 11535  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11536  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 11537  					return SQLITE_OK
 11538  
 11539  				}
 11540  			case CARRAY_TEXT:
 11541  				{
 11542  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 11543  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)), -1, libc.UintptrFromInt32(-1))
 11544  					return SQLITE_OK
 11545  
 11546  				}
 11547  			}
 11548  
 11549  		}
 11550  	}
 11551  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 11552  	return SQLITE_OK
 11553  }
 11554  
 11555  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 11556  	var pCur uintptr = cur
 11557  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 11558  	return SQLITE_OK
 11559  }
 11560  
 11561  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 11562  	var pCur uintptr = cur
 11563  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 11564  }
 11565  
 11566  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 11567  	bp := tls.Alloc(8)
 11568  	defer tls.Free(8)
 11569  
 11570  	var pCur uintptr = pVtabCursor
 11571  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 11572  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 11573  	switch idxNum {
 11574  	case 1:
 11575  		{
 11576  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 11577  			if pBind == uintptr(0) {
 11578  				break
 11579  			}
 11580  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 11581  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 11582  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 11583  			break
 11584  
 11585  		}
 11586  	case 2:
 11587  		fallthrough
 11588  	case 3:
 11589  		{
 11590  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 11591  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 11592  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 11593  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 11594  				}
 11595  				return int64(0)
 11596  			}()
 11597  			if idxNum < 3 {
 11598  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 11599  			} else {
 11600  				var i uint8
 11601  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 11602  				for i = uint8(0); uint32(i) < uint32(unsafe.Sizeof(azType))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 11603  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 11604  						break
 11605  					}
 11606  				}
 11607  				if uint32(i) >= uint32(unsafe.Sizeof(azType))/uint32(unsafe.Sizeof(uintptr(0))) {
 11608  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11609  						ts+4067, libc.VaList(bp, zType))
 11610  					return SQLITE_ERROR
 11611  				} else {
 11612  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 11613  				}
 11614  			}
 11615  			break
 11616  
 11617  		}
 11618  	}
 11619  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 11620  	return SQLITE_OK
 11621  }
 11622  
 11623  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11624  	var i int32
 11625  	var ptrIdx int32 = -1
 11626  	var cntIdx int32 = -1
 11627  	var ctypeIdx int32 = -1
 11628  
 11629  	var pConstraint uintptr
 11630  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11631  	i = 0
 11632  __1:
 11633  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11634  		goto __3
 11635  	}
 11636  	{
 11637  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11638  			goto __2
 11639  		}
 11640  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 11641  			goto __2
 11642  		}
 11643  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 11644  		case CARRAY_COLUMN_POINTER:
 11645  			ptrIdx = i
 11646  			break
 11647  		case CARRAY_COLUMN_COUNT:
 11648  			cntIdx = i
 11649  			break
 11650  		case CARRAY_COLUMN_CTYPE:
 11651  			ctypeIdx = i
 11652  			break
 11653  		}
 11654  
 11655  	}
 11656  	goto __2
 11657  __2:
 11658  	i++
 11659  	pConstraint += 12
 11660  	goto __1
 11661  	goto __3
 11662  __3:
 11663  	;
 11664  	if ptrIdx >= 0 {
 11665  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 11666  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 11667  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 11668  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 11669  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 11670  		if cntIdx >= 0 {
 11671  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 11672  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 11673  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 11674  			if ctypeIdx >= 0 {
 11675  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 11676  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 11677  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 11678  			}
 11679  		}
 11680  	} else {
 11681  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 11682  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 11683  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 11684  	}
 11685  	return SQLITE_OK
 11686  }
 11687  
 11688  var carrayModule = sqlite3_module{
 11689  	FxConnect:    0,
 11690  	FxBestIndex:  0,
 11691  	FxDisconnect: 0,
 11692  	FxOpen:       0,
 11693  	FxClose:      0,
 11694  	FxFilter:     0,
 11695  	FxNext:       0,
 11696  	FxEof:        0,
 11697  	FxColumn:     0,
 11698  	FxRowid:      0,
 11699  }
 11700  
 11701  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 11702  	var p uintptr = pPtr
 11703  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 11704  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 11705  	}
 11706  	sqlite3.Xsqlite3_free(tls, p)
 11707  }
 11708  
 11709  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 11710  	var pNew uintptr
 11711  	var i int32
 11712  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 11713  	if pNew == uintptr(0) {
 11714  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 11715  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 11716  		}
 11717  		return SQLITE_NOMEM
 11718  	}
 11719  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 11720  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 11721  	if xDestroy == libc.UintptrFromInt32(-1) {
 11722  		var sz sqlite3_int64 = sqlite3_int64(nData)
 11723  		switch mFlags & 0x03 {
 11724  		case CARRAY_INT32:
 11725  			sz = sz * int64(4)
 11726  			break
 11727  			fallthrough
 11728  		case CARRAY_INT64:
 11729  			sz = sz * int64(8)
 11730  			break
 11731  			fallthrough
 11732  		case CARRAY_DOUBLE:
 11733  			sz = sz * int64(8)
 11734  			break
 11735  			fallthrough
 11736  		case CARRAY_TEXT:
 11737  			sz = sz * sqlite3_int64(unsafe.Sizeof(uintptr(0)))
 11738  			break
 11739  		}
 11740  		if mFlags&0x03 == CARRAY_TEXT {
 11741  			for i = 0; i < nData; i++ {
 11742  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*4))
 11743  				if z != 0 {
 11744  					sz = sz + sqlite3_int64(libc.Xstrlen(tls, z)+size_t(1))
 11745  				}
 11746  			}
 11747  		}
 11748  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 11749  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 11750  			sqlite3.Xsqlite3_free(tls, pNew)
 11751  			return SQLITE_NOMEM
 11752  		}
 11753  		if mFlags&0x03 == CARRAY_TEXT {
 11754  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 11755  			var z uintptr = az + uintptr(nData)*4
 11756  			for i = 0; i < nData; i++ {
 11757  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*4))
 11758  				var n sqlite3_int64
 11759  				if zData == uintptr(0) {
 11760  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*4)) = uintptr(0)
 11761  					continue
 11762  				}
 11763  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*4)) = z
 11764  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 11765  				libc.Xmemcpy(tls, z, zData, uint32(n+int64(1)))
 11766  				z += uintptr(n + int64(1))
 11767  			}
 11768  		} else {
 11769  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint32(sz))
 11770  		}
 11771  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 11772  	} else {
 11773  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 11774  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 11775  	}
 11776  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 11777  }
 11778  
 11779  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11780  	bp := tls.Alloc(16)
 11781  	defer tls.Free(16)
 11782  
 11783  	*(*sqlite3_int64)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11784  	if uint32(unsafe.Sizeof(sqlite3_int64(0))) == uint32(unsafe.Sizeof(uintptr(0))) {
 11785  		libc.Xmemcpy(tls, bp, bp+4, uint32(unsafe.Sizeof(uintptr(0))))
 11786  	} else {
 11787  		*(*int32)(unsafe.Pointer(bp + 12)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 4)) & int64(0xffffffff))
 11788  		libc.Xmemcpy(tls, bp, bp+12, uint32(unsafe.Sizeof(uintptr(0))))
 11789  	}
 11790  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 11791  }
 11792  
 11793  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11794  	var rc int32 = SQLITE_OK
 11795  	_ = pApi
 11796  
 11797  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 11798  	if rc == SQLITE_OK {
 11799  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 11800  			*(*uintptr)(unsafe.Pointer(&struct {
 11801  				f func(*libc.TLS, uintptr, int32, uintptr)
 11802  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 11803  	}
 11804  	return rc
 11805  }
 11806  
 11807  type CksmVfs = sqlite3_vfs1
 11808  type CksmFile1 = struct {
 11809  	Fbase        sqlite3_file
 11810  	FzFName      uintptr
 11811  	FcomputeCksm int8
 11812  	FverifyCksm  int8
 11813  	FisWal       int8
 11814  	FinCkpt      int8
 11815  	FpPartner    uintptr
 11816  }
 11817  
 11818  type CksmFile = CksmFile1
 11819  
 11820  type u8 = uint8
 11821  
 11822  var cksm_vfs = sqlite3_vfs{
 11823  	FiVersion:          3,
 11824  	FmxPathname:        1024,
 11825  	FzName:             ts + 4097,
 11826  	FxOpen:             0,
 11827  	FxDelete:           0,
 11828  	FxAccess:           0,
 11829  	FxFullPathname:     0,
 11830  	FxDlOpen:           0,
 11831  	FxDlError:          0,
 11832  	FxDlSym:            0,
 11833  	FxDlClose:          0,
 11834  	FxRandomness:       0,
 11835  	FxSleep:            0,
 11836  	FxCurrentTime:      0,
 11837  	FxGetLastError:     0,
 11838  	FxCurrentTimeInt64: 0,
 11839  	FxSetSystemCall:    0,
 11840  	FxGetSystemCall:    0,
 11841  	FxNextSystemCall:   0,
 11842  }
 11843  
 11844  var cksm_io_methods = sqlite3_io_methods{
 11845  	FiVersion:               3,
 11846  	FxClose:                 0,
 11847  	FxRead:                  0,
 11848  	FxWrite:                 0,
 11849  	FxTruncate:              0,
 11850  	FxSync:                  0,
 11851  	FxFileSize:              0,
 11852  	FxLock:                  0,
 11853  	FxUnlock:                0,
 11854  	FxCheckReservedLock:     0,
 11855  	FxFileControl:           0,
 11856  	FxSectorSize:            0,
 11857  	FxDeviceCharacteristics: 0,
 11858  	FxShmMap:                0,
 11859  	FxShmLock:               0,
 11860  	FxShmBarrier:            0,
 11861  	FxShmUnmap:              0,
 11862  	FxFetch:                 0,
 11863  	FxUnfetch:               0,
 11864  }
 11865  
 11866  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 11867  	bp := tls.Alloc(12)
 11868  	defer tls.Free(12)
 11869  
 11870  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 11871  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 11872  	var aData uintptr = a
 11873  	var aEnd uintptr = a + uintptr(nByte)
 11874  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 11875  
 11876  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 11877  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 11878  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 11879  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 11880  		}
 11881  	} else {
 11882  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 11883  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(aData))&u32(0x000000FF)<<24 + *(*u32)(unsafe.Pointer(aData))&u32(0x0000FF00)<<8 + *(*u32)(unsafe.Pointer(aData))&u32(0x00FF0000)>>8 + *(*u32)(unsafe.Pointer(aData))&0xFF000000>>24 + *(*u32)(unsafe.Pointer(bp + 8))
 11884  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(aData + 1*4))&u32(0x000000FF)<<24 + *(*u32)(unsafe.Pointer(aData + 1*4))&u32(0x0000FF00)<<8 + *(*u32)(unsafe.Pointer(aData + 1*4))&u32(0x00FF0000)>>8 + *(*u32)(unsafe.Pointer(aData + 1*4))&0xFF000000>>24 + *(*u32)(unsafe.Pointer(bp + 4))
 11885  			aData += 4 * uintptr(2)
 11886  		}
 11887  		*(*u32)(unsafe.Pointer(bp + 4)) = *(*u32)(unsafe.Pointer(bp + 4))&u32(0x000000FF)<<24 + *(*u32)(unsafe.Pointer(bp + 4))&u32(0x0000FF00)<<8 + *(*u32)(unsafe.Pointer(bp + 4))&u32(0x00FF0000)>>8 + *(*u32)(unsafe.Pointer(bp + 4))&0xFF000000>>24
 11888  		*(*u32)(unsafe.Pointer(bp + 8)) = *(*u32)(unsafe.Pointer(bp + 8))&u32(0x000000FF)<<24 + *(*u32)(unsafe.Pointer(bp + 8))&u32(0x0000FF00)<<8 + *(*u32)(unsafe.Pointer(bp + 8))&u32(0x00FF0000)>>8 + *(*u32)(unsafe.Pointer(bp + 8))&0xFF000000>>24
 11889  	}
 11890  	libc.Xmemcpy(tls, aOut, bp+4, uint32(4))
 11891  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint32(4))
 11892  }
 11893  
 11894  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11895  	bp := tls.Alloc(8)
 11896  	defer tls.Free(8)
 11897  
 11898  	var nByte int32
 11899  	var data uintptr
 11900  
 11901  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11902  	if data == uintptr(0) {
 11903  		return
 11904  	}
 11905  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 11906  		return
 11907  	}
 11908  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11909  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 11910  		return
 11911  	}
 11912  	cksmCompute(tls, data, nByte-8, bp)
 11913  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint32(8)) == 0))
 11914  }
 11915  
 11916  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 11917  	var p uintptr = pFile
 11918  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11919  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 11920  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 11921  	}
 11922  	pFile = pFile + uintptr(1)*16
 11923  	return (*struct {
 11924  		f func(*libc.TLS, uintptr) int32
 11925  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 11926  }
 11927  
 11928  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 11929  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 11930  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrInt8(p+9, int8(hasCorrectReserveSize))
 11931  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11932  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = int8(hasCorrectReserveSize)
 11933  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = int8(hasCorrectReserveSize)
 11934  		}
 11935  	}
 11936  }
 11937  
 11938  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11939  	bp := tls.Alloc(24)
 11940  	defer tls.Free(24)
 11941  
 11942  	var rc int32
 11943  	var p uintptr = pFile
 11944  	pFile = pFile + uintptr(1)*16
 11945  	rc = (*struct {
 11946  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11947  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 11948  	if rc == SQLITE_OK {
 11949  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint32(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint32(3)) == 0) {
 11950  			var d uintptr = zBuf
 11951  			var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11952  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11953  		}
 11954  
 11955  		if iAmt >= 512 &&
 11956  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 11957  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11958  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 11959  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint32(8)) != 0 {
 11960  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 11961  					ts+4109,
 11962  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 11963  				rc = SQLITE_IOERR | int32(32)<<8
 11964  			}
 11965  		}
 11966  	}
 11967  	return rc
 11968  }
 11969  
 11970  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11971  	var p uintptr = pFile
 11972  	pFile = pFile + uintptr(1)*16
 11973  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint32(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint32(3)) == 0) {
 11974  		var d uintptr = zBuf
 11975  		var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11976  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11977  	}
 11978  
 11979  	if iAmt >= 512 &&
 11980  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 11981  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11982  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 11983  	}
 11984  	return (*struct {
 11985  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11986  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 11987  }
 11988  
 11989  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 11990  	pFile = pFile + uintptr(1)*16
 11991  	return (*struct {
 11992  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 11993  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 11994  }
 11995  
 11996  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 11997  	pFile = pFile + uintptr(1)*16
 11998  	return (*struct {
 11999  		f func(*libc.TLS, uintptr, int32) int32
 12000  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 12001  }
 12002  
 12003  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 12004  	var p uintptr = pFile
 12005  	pFile = p + uintptr(1)*16
 12006  	return (*struct {
 12007  		f func(*libc.TLS, uintptr, uintptr) int32
 12008  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 12009  }
 12010  
 12011  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12012  	pFile = pFile + uintptr(1)*16
 12013  	return (*struct {
 12014  		f func(*libc.TLS, uintptr, int32) int32
 12015  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 12016  }
 12017  
 12018  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 12019  	pFile = pFile + uintptr(1)*16
 12020  	return (*struct {
 12021  		f func(*libc.TLS, uintptr, int32) int32
 12022  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 12023  }
 12024  
 12025  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 12026  	pFile = pFile + uintptr(1)*16
 12027  	return (*struct {
 12028  		f func(*libc.TLS, uintptr, uintptr) int32
 12029  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 12030  }
 12031  
 12032  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 12033  	bp := tls.Alloc(16)
 12034  	defer tls.Free(16)
 12035  
 12036  	var rc int32
 12037  	var p uintptr = pFile
 12038  	pFile = pFile + uintptr(1)*16
 12039  	if op == SQLITE_FCNTL_PRAGMA {
 12040  		var azArg uintptr = pArg
 12041  
 12042  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*4)), ts+4144) == 0 {
 12043  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*4))
 12044  			if zArg != uintptr(0) {
 12045  				if int32(*(*int8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*int8)(unsafe.Pointer(zArg))) <= '9' ||
 12046  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 12047  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 12048  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 12049  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 12050  				} else {
 12051  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = int8(0)
 12052  				}
 12053  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12054  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 12055  				}
 12056  			}
 12057  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 12058  			return SQLITE_OK
 12059  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*4)) != uintptr(0) &&
 12060  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*4)), ts+4181) == 0 {
 12061  			return SQLITE_OK
 12062  		}
 12063  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 12064  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = int8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 12065  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 12066  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 12067  		}
 12068  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 12069  		var ppFile uintptr = pArg
 12070  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 12071  		return SQLITE_OK
 12072  	}
 12073  	rc = (*struct {
 12074  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12075  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 12076  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 12077  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 12078  	}
 12079  	return rc
 12080  }
 12081  
 12082  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 12083  	pFile = pFile + uintptr(1)*16
 12084  	return (*struct {
 12085  		f func(*libc.TLS, uintptr) int32
 12086  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 12087  }
 12088  
 12089  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 12090  	pFile = pFile + uintptr(1)*16
 12091  	return (*struct {
 12092  		f func(*libc.TLS, uintptr) int32
 12093  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 12094  }
 12095  
 12096  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 12097  	pFile = pFile + uintptr(1)*16
 12098  	return (*struct {
 12099  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 12100  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 12101  }
 12102  
 12103  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 12104  	pFile = pFile + uintptr(1)*16
 12105  	return (*struct {
 12106  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 12107  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 12108  }
 12109  
 12110  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 12111  	pFile = pFile + uintptr(1)*16
 12112  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmBarrier})).f(tls, pFile)
 12113  }
 12114  
 12115  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 12116  	pFile = pFile + uintptr(1)*16
 12117  	return (*struct {
 12118  		f func(*libc.TLS, uintptr, int32) int32
 12119  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 12120  }
 12121  
 12122  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 12123  	var p uintptr = pFile
 12124  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 12125  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12126  		return SQLITE_OK
 12127  	}
 12128  	pFile = pFile + uintptr(1)*16
 12129  	if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FiVersion > 2 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch != 0 {
 12130  		return (*struct {
 12131  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 12132  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 12133  	}
 12134  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 12135  	return SQLITE_OK
 12136  }
 12137  
 12138  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 12139  	pFile = pFile + uintptr(1)*16
 12140  	if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FiVersion > 2 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch != 0 {
 12141  		return (*struct {
 12142  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 12143  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 12144  	}
 12145  	return SQLITE_OK
 12146  }
 12147  
 12148  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 12149  	bp := tls.Alloc(4)
 12150  	defer tls.Free(4)
 12151  
 12152  	var p uintptr
 12153  	var pSubFile uintptr
 12154  	var pSubVfs uintptr
 12155  	var rc int32
 12156  
 12157  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12158  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 12159  		goto __1
 12160  	}
 12161  	return (*struct {
 12162  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12163  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 12164  __1:
 12165  	;
 12166  	p = pFile
 12167  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(CksmFile{})))
 12168  	pSubFile = pFile + uintptr(1)*16
 12169  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 12170  	rc = (*struct {
 12171  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 12172  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 12173  	if !(rc != 0) {
 12174  		goto __2
 12175  	}
 12176  	goto cksm_open_done
 12177  __2:
 12178  	;
 12179  	if !(flags&SQLITE_OPEN_WAL != 0) {
 12180  		goto __3
 12181  	}
 12182  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 12183  	rc = (*struct {
 12184  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12185  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpMethods)).FxFileControl})).f(tls, *(*uintptr)(unsafe.Pointer(bp)), SQLITE_FCNTL_CKSM_FILE, bp)
 12186  
 12187  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 12188  
 12189  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 12190  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(1)
 12191  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 12192  	goto __4
 12193  __3:
 12194  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(0)
 12195  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = int8(0)
 12196  __4:
 12197  	;
 12198  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 12199  cksm_open_done:
 12200  	if !(rc != 0) {
 12201  		goto __5
 12202  	}
 12203  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 12204  __5:
 12205  	;
 12206  	return rc
 12207  }
 12208  
 12209  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 12210  	return (*struct {
 12211  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 12212  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDelete})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, dirSync)
 12213  }
 12214  
 12215  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 12216  	return (*struct {
 12217  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12218  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxAccess})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, flags, pResOut)
 12219  }
 12220  
 12221  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 12222  	return (*struct {
 12223  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 12224  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxFullPathname})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath, nOut, zOut)
 12225  }
 12226  
 12227  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 12228  	return (*struct {
 12229  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12230  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 12231  }
 12232  
 12233  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 12234  	(*struct {
 12235  		f func(*libc.TLS, uintptr, int32, uintptr)
 12236  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlError})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nByte, zErrMsg)
 12237  }
 12238  
 12239  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 12240  	return (*struct {
 12241  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 12242  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlSym})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p, zSym)
 12243  }
 12244  
 12245  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 12246  	(*struct {
 12247  		f func(*libc.TLS, uintptr, uintptr)
 12248  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 12249  }
 12250  
 12251  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 12252  	return (*struct {
 12253  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12254  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxRandomness})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nByte, zBufOut)
 12255  }
 12256  
 12257  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 12258  	return (*struct {
 12259  		f func(*libc.TLS, uintptr, int32) int32
 12260  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 12261  }
 12262  
 12263  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 12264  	return (*struct {
 12265  		f func(*libc.TLS, uintptr, uintptr) int32
 12266  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 12267  }
 12268  
 12269  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 12270  	return (*struct {
 12271  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 12272  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetLastError})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, a, b)
 12273  }
 12274  
 12275  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 12276  	bp := tls.Alloc(8)
 12277  	defer tls.Free(8)
 12278  
 12279  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 12280  	var rc int32
 12281  
 12282  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 12283  		rc = (*struct {
 12284  			f func(*libc.TLS, uintptr, uintptr) int32
 12285  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 12286  	} else {
 12287  		rc = (*struct {
 12288  			f func(*libc.TLS, uintptr, uintptr) int32
 12289  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 12290  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 12291  	}
 12292  	return rc
 12293  }
 12294  
 12295  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 12296  	return (*struct {
 12297  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 12298  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName, pCall)
 12299  }
 12300  
 12301  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 12302  	return (*struct {
 12303  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 12304  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12305  }
 12306  
 12307  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 12308  	return (*struct {
 12309  		f func(*libc.TLS, uintptr, uintptr) uintptr
 12310  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 12311  }
 12312  
 12313  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12314  	var rc int32
 12315  	if db == uintptr(0) {
 12316  		return SQLITE_OK
 12317  	}
 12318  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 12319  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 12320  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 12321  			f func(*libc.TLS, uintptr, int32, uintptr)
 12322  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 12323  	return rc
 12324  }
 12325  
 12326  func cksmRegisterVfs(tls *libc.TLS) int32 {
 12327  	var rc int32 = SQLITE_OK
 12328  	var pOrig uintptr
 12329  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 12330  		return SQLITE_OK
 12331  	}
 12332  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 12333  	if pOrig == uintptr(0) {
 12334  		return SQLITE_ERROR
 12335  	}
 12336  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 12337  	cksm_vfs.FpAppData = pOrig
 12338  	cksm_vfs.FszOsFile = int32(uint32((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint32(unsafe.Sizeof(CksmFile{})))
 12339  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 12340  	if rc == SQLITE_OK {
 12341  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12342  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12343  		}{cksmRegisterFunc})))
 12344  	}
 12345  	return rc
 12346  }
 12347  
 12348  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 12349  	_ = NotUsed
 12350  	return cksmRegisterVfs(tls)
 12351  }
 12352  
 12353  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 12354  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 12355  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 12356  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 12357  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 12358  		}{cksmRegisterFunc})))
 12359  	}
 12360  	return SQLITE_OK
 12361  }
 12362  
 12363  type closure_vtab1 = struct {
 12364  	Fbase          sqlite3_vtab
 12365  	FzDb           uintptr
 12366  	FzSelf         uintptr
 12367  	FzTableName    uintptr
 12368  	FzIdColumn     uintptr
 12369  	FzParentColumn uintptr
 12370  	Fdb            uintptr
 12371  	FnCursor       int32
 12372  }
 12373  
 12374  type closure_vtab = closure_vtab1
 12375  type closure_cursor1 = struct {
 12376  	Fbase          sqlite3_vtab_cursor
 12377  	FpVtab         uintptr
 12378  	FzTableName    uintptr
 12379  	FzIdColumn     uintptr
 12380  	FzParentColumn uintptr
 12381  	FpCurrent      uintptr
 12382  	FpClosure      uintptr
 12383  }
 12384  
 12385  type closure_cursor = closure_cursor1
 12386  type closure_queue1 = struct {
 12387  	FpFirst uintptr
 12388  	FpLast  uintptr
 12389  }
 12390  
 12391  type closure_queue = closure_queue1
 12392  type closure_avl1 = struct {
 12393  	Fid          sqlite3_int64
 12394  	FiGeneration int32
 12395  	FpList       uintptr
 12396  	FpBefore     uintptr
 12397  	FpAfter      uintptr
 12398  	FpUp         uintptr
 12399  	Fheight      int16
 12400  	Fimbalance   int16
 12401  }
 12402  
 12403  type closure_avl = closure_avl1
 12404  
 12405  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 12406  	var hBefore int16
 12407  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12408  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 12409  	} else {
 12410  		hBefore = int16(0)
 12411  	}
 12412  	var hAfter int16
 12413  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12414  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 12415  	} else {
 12416  		hAfter = int16(0)
 12417  	}
 12418  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 12419  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 12420  		if int32(hBefore) > int32(hAfter) {
 12421  			return int32(hBefore)
 12422  		}
 12423  		return int32(hAfter)
 12424  	}() + 1)
 12425  }
 12426  
 12427  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 12428  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 12429  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 12430  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12431  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 12432  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 12433  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 12434  	if pY != 0 {
 12435  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12436  	}
 12437  	closureAvlRecomputeHeight(tls, pP)
 12438  	closureAvlRecomputeHeight(tls, pB)
 12439  	return pB
 12440  }
 12441  
 12442  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 12443  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 12444  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 12445  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 12446  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 12447  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 12448  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 12449  	if pY != 0 {
 12450  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 12451  	}
 12452  	closureAvlRecomputeHeight(tls, pP)
 12453  	closureAvlRecomputeHeight(tls, pA)
 12454  	return pA
 12455  }
 12456  
 12457  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 12458  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12459  	if pUp == uintptr(0) {
 12460  		return pp
 12461  	}
 12462  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 12463  		return pUp + 20
 12464  	}
 12465  	return pUp + 16
 12466  }
 12467  
 12468  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 12469  	bp := tls.Alloc(4)
 12470  	defer tls.Free(4)
 12471  	*(*uintptr)(unsafe.Pointer(bp)) = p
 12472  
 12473  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 12474  	var pp uintptr
 12475  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 12476  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 12477  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 12478  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 12479  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 12480  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 12481  			}
 12482  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12483  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12484  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 12485  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 12486  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 12487  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 12488  			}
 12489  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 12490  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 12491  		}
 12492  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 12493  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 12494  	}
 12495  	return pTop
 12496  }
 12497  
 12498  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 12499  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 12500  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12501  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12502  		} else {
 12503  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12504  		}
 12505  	}
 12506  	return p
 12507  }
 12508  
 12509  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 12510  	if p != 0 {
 12511  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12512  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12513  		}
 12514  	}
 12515  	return p
 12516  }
 12517  
 12518  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 12519  	var pPrev uintptr = uintptr(0)
 12520  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 12521  		pPrev = p
 12522  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 12523  	}
 12524  	if p != 0 && pPrev == uintptr(0) {
 12525  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 12526  	}
 12527  	return p
 12528  }
 12529  
 12530  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 12531  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 12532  	if p == uintptr(0) {
 12533  		p = pNew
 12534  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 12535  	} else {
 12536  		for p != 0 {
 12537  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 12538  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 12539  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 12540  				} else {
 12541  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 12542  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12543  					break
 12544  				}
 12545  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 12546  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 12547  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 12548  				} else {
 12549  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 12550  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 12551  					break
 12552  				}
 12553  			} else {
 12554  				return p
 12555  			}
 12556  		}
 12557  	}
 12558  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 12559  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 12560  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 12561  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 12562  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 12563  	return uintptr(0)
 12564  }
 12565  
 12566  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 12567  	if p != 0 {
 12568  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 12569  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12570  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 12571  	}
 12572  }
 12573  
 12574  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 12575  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 12576  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 12577  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 12578  	} else {
 12579  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 12580  	}
 12581  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 12582  }
 12583  
 12584  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 12585  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 12586  	if p != 0 {
 12587  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 12588  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 12589  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 12590  		}
 12591  	}
 12592  	return p
 12593  }
 12594  
 12595  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 12596  	var nIn sqlite3_int64
 12597  	var zOut uintptr
 12598  
 12599  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 12600  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 12601  	if zOut != 0 {
 12602  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 12603  
 12604  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 12605  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 12606  		} else {
 12607  			var iOut int32 = 0
 12608  			var iIn int32
 12609  
 12610  			if int32(q) == '[' {
 12611  				q = int8(']')
 12612  			}
 12613  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 12614  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 12615  					iIn++
 12616  				}
 12617  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 12618  			}
 12619  		}
 12620  
 12621  	}
 12622  	return zOut
 12623  }
 12624  
 12625  func closureFree(tls *libc.TLS, p uintptr) {
 12626  	if p != 0 {
 12627  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 12628  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 12629  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 12630  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 12631  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 12632  		libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(closure_vtab{})))
 12633  		sqlite3.Xsqlite3_free(tls, p)
 12634  	}
 12635  }
 12636  
 12637  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12638  	var p uintptr = pVtab
 12639  
 12640  	closureFree(tls, p)
 12641  	return SQLITE_OK
 12642  }
 12643  
 12644  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 12645  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 12646  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 12647  	var i int32
 12648  	if nStr < nKey+1 {
 12649  		return uintptr(0)
 12650  	}
 12651  	if libc.Xmemcmp(tls, zStr, zKey, uint32(nKey)) != 0 {
 12652  		return uintptr(0)
 12653  	}
 12654  	for i = nKey; int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))))*2)))&int32(_ISspace) != 0; i++ {
 12655  	}
 12656  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 12657  		return uintptr(0)
 12658  	}
 12659  	i++
 12660  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i))))))*2)))&int32(_ISspace) != 0 {
 12661  		i++
 12662  	}
 12663  	return zStr + uintptr(i)
 12664  }
 12665  
 12666  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12667  	bp := tls.Alloc(24)
 12668  	defer tls.Free(24)
 12669  
 12670  	var rc int32
 12671  	var pNew uintptr
 12672  	var zDb uintptr
 12673  	var zVal uintptr
 12674  	var i int32
 12675  	rc = SQLITE_OK
 12676  	pNew = uintptr(0)
 12677  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 12678  
 12679  	_ = pAux
 12680  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12681  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 12682  	if !(pNew == uintptr(0)) {
 12683  		goto __1
 12684  	}
 12685  	return SQLITE_NOMEM
 12686  __1:
 12687  	;
 12688  	rc = SQLITE_NOMEM
 12689  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(closure_vtab{})))
 12690  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 12691  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 12692  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 12693  		goto __2
 12694  	}
 12695  	goto closureConnectError
 12696  __2:
 12697  	;
 12698  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 12699  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 12700  		goto __3
 12701  	}
 12702  	goto closureConnectError
 12703  __3:
 12704  	;
 12705  	i = 3
 12706  __4:
 12707  	if !(i < argc) {
 12708  		goto __6
 12709  	}
 12710  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 12711  	if !(zVal != 0) {
 12712  		goto __7
 12713  	}
 12714  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 12715  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 12716  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 12717  		goto __8
 12718  	}
 12719  	goto closureConnectError
 12720  __8:
 12721  	;
 12722  	goto __5
 12723  __7:
 12724  	;
 12725  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 12726  	if !(zVal != 0) {
 12727  		goto __9
 12728  	}
 12729  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 12730  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 12731  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 12732  		goto __10
 12733  	}
 12734  	goto closureConnectError
 12735  __10:
 12736  	;
 12737  	goto __5
 12738  __9:
 12739  	;
 12740  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 12741  	if !(zVal != 0) {
 12742  		goto __11
 12743  	}
 12744  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 12745  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 12746  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 12747  		goto __12
 12748  	}
 12749  	goto closureConnectError
 12750  __12:
 12751  	;
 12752  	goto __5
 12753  __11:
 12754  	;
 12755  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
 12756  	closureFree(tls, pNew)
 12757  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12758  	return SQLITE_ERROR
 12759  	goto __5
 12760  __5:
 12761  	i++
 12762  	goto __4
 12763  	goto __6
 12764  __6:
 12765  	;
 12766  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 12767  		ts+4247)
 12768  	if !(rc != SQLITE_OK) {
 12769  		goto __13
 12770  	}
 12771  	closureFree(tls, pNew)
 12772  __13:
 12773  	;
 12774  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 12775  	return rc
 12776  
 12777  closureConnectError:
 12778  	closureFree(tls, pNew)
 12779  	return rc
 12780  }
 12781  
 12782  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 12783  	var p uintptr = pVTab
 12784  	var pCur uintptr
 12785  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 12786  	if pCur == uintptr(0) {
 12787  		return SQLITE_NOMEM
 12788  	}
 12789  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(closure_cursor{})))
 12790  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 12791  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 12792  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 12793  	return SQLITE_OK
 12794  }
 12795  
 12796  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 12797  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 12798  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 12799  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 12800  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 12801  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 12802  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 12803  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 12804  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 12805  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 12806  }
 12807  
 12808  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 12809  	var pCur uintptr = cur
 12810  	closureClearCursor(tls, pCur)
 12811  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 12812  	sqlite3.Xsqlite3_free(tls, pCur)
 12813  	return SQLITE_OK
 12814  }
 12815  
 12816  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 12817  	var pCur uintptr = cur
 12818  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 12819  	return SQLITE_OK
 12820  }
 12821  
 12822  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 12823  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 12824  	if pNew == uintptr(0) {
 12825  		return SQLITE_NOMEM
 12826  	}
 12827  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(closure_avl{})))
 12828  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 12829  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 12830  	closureAvlInsert(tls, pCur+24, pNew)
 12831  	queuePush(tls, pQueue, pNew)
 12832  	return SQLITE_OK
 12833  }
 12834  
 12835  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 12836  	bp := tls.Alloc(84)
 12837  	defer tls.Free(84)
 12838  
 12839  	var pCur uintptr = pVtabCursor
 12840  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 12841  	var iRoot sqlite3_int64
 12842  	var mxGen int32 = 999999999
 12843  	var zSql uintptr
 12844  
 12845  	var pAvl uintptr
 12846  	var rc int32 = SQLITE_OK
 12847  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 12848  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 12849  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 12850  
 12851  	_ = idxStr
 12852  	_ = argc
 12853  	closureClearCursor(tls, pCur)
 12854  	libc.Xmemset(tls, bp+72, 0, uint32(unsafe.Sizeof(closure_queue{})))
 12855  	if idxNum&1 == 0 {
 12856  		return SQLITE_OK
 12857  	}
 12858  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12859  	if idxNum&0x000f0 != 0 {
 12860  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*4)))
 12861  		if idxNum&0x00002 != 0 {
 12862  			mxGen--
 12863  		}
 12864  	}
 12865  	if idxNum&0x00f00 != 0 {
 12866  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*4)))
 12867  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 12868  	}
 12869  	if idxNum&0x0f000 != 0 {
 12870  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*4)))
 12871  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 12872  	}
 12873  	if idxNum&0x0f0000 != 0 {
 12874  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*4)))
 12875  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 12876  	}
 12877  
 12878  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 12879  		ts+4337,
 12880  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 12881  	if zSql == uintptr(0) {
 12882  		return SQLITE_NOMEM
 12883  	} else {
 12884  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+80, uintptr(0))
 12885  		sqlite3.Xsqlite3_free(tls, zSql)
 12886  		if rc != 0 {
 12887  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 12888  			(*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, sqlite3.Xsqlite3_errmsg(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb)))
 12889  			return rc
 12890  		}
 12891  	}
 12892  	if rc == SQLITE_OK {
 12893  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 12894  	}
 12895  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 12896  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 12897  			continue
 12898  		}
 12899  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 12900  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) == SQLITE_ROW {
 12901  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0) == SQLITE_INTEGER {
 12902  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 12903  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 12904  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 12905  				}
 12906  			}
 12907  		}
 12908  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 12909  	}
 12910  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 12911  	if rc == SQLITE_OK {
 12912  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 12913  	}
 12914  
 12915  	return rc
 12916  }
 12917  
 12918  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 12919  	var pCur uintptr = cur
 12920  	switch i {
 12921  	case CLOSURE_COL_ID:
 12922  		{
 12923  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 12924  			break
 12925  
 12926  		}
 12927  	case CLOSURE_COL_DEPTH:
 12928  		{
 12929  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 12930  			break
 12931  
 12932  		}
 12933  	case CLOSURE_COL_ROOT:
 12934  		{
 12935  			sqlite3.Xsqlite3_result_null(tls, ctx)
 12936  			break
 12937  
 12938  		}
 12939  	case CLOSURE_COL_TABLENAME:
 12940  		{
 12941  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12942  				func() uintptr {
 12943  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 12944  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 12945  					}
 12946  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 12947  				}(),
 12948  				-1, libc.UintptrFromInt32(-1))
 12949  			break
 12950  
 12951  		}
 12952  	case CLOSURE_COL_IDCOLUMN:
 12953  		{
 12954  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12955  				func() uintptr {
 12956  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 12957  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 12958  					}
 12959  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 12960  				}(),
 12961  				-1, libc.UintptrFromInt32(-1))
 12962  			break
 12963  
 12964  		}
 12965  	case CLOSURE_COL_PARENTCOLUMN:
 12966  		{
 12967  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12968  				func() uintptr {
 12969  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 12970  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 12971  					}
 12972  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 12973  				}(),
 12974  				-1, libc.UintptrFromInt32(-1))
 12975  			break
 12976  
 12977  		}
 12978  	}
 12979  	return SQLITE_OK
 12980  }
 12981  
 12982  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 12983  	var pCur uintptr = cur
 12984  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 12985  	return SQLITE_OK
 12986  }
 12987  
 12988  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 12989  	var pCur uintptr = cur
 12990  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 12991  }
 12992  
 12993  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 12994  	var iPlan int32 = 0
 12995  	var i int32
 12996  	var idx int32 = 1
 12997  	var pConstraint uintptr
 12998  	var pVtab uintptr = pTab
 12999  	var rCost float64 = 10000000.0
 13000  
 13001  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 13002  	i = 0
 13003  __1:
 13004  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13005  		goto __3
 13006  	}
 13007  	{
 13008  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 13009  			goto __2
 13010  		}
 13011  		if iPlan&1 == 0 &&
 13012  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 13013  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13014  			iPlan = iPlan | 1
 13015  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 13016  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13017  			rCost = rCost / 100.0
 13018  		}
 13019  		if iPlan&0x0000f0 == 0 &&
 13020  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 13021  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 13022  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 13023  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 13024  			iPlan = iPlan | idx<<4
 13025  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13026  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 13027  				iPlan = iPlan | 0x000002
 13028  			}
 13029  			rCost = rCost / 5.0
 13030  		}
 13031  		if iPlan&0x000f00 == 0 &&
 13032  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 13033  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13034  			iPlan = iPlan | idx<<8
 13035  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13036  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13037  			rCost = rCost / 5.0
 13038  		}
 13039  		if iPlan&0x00f000 == 0 &&
 13040  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 13041  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13042  			iPlan = iPlan | idx<<12
 13043  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13044  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13045  		}
 13046  		if iPlan&0x0f0000 == 0 &&
 13047  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 13048  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 13049  			iPlan = iPlan | idx<<16
 13050  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 13051  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 13052  		}
 13053  
 13054  	}
 13055  	goto __2
 13056  __2:
 13057  	i++
 13058  	pConstraint += 12
 13059  	goto __1
 13060  	goto __3
 13061  __3:
 13062  	;
 13063  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 13064  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 13065  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 13066  		iPlan = 0
 13067  	}
 13068  	if iPlan&1 == 0 {
 13069  		rCost = rCost * 1e30
 13070  		i = 0
 13071  	__4:
 13072  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 13073  			goto __6
 13074  		}
 13075  		{
 13076  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 13077  
 13078  		}
 13079  		goto __5
 13080  	__5:
 13081  		i++
 13082  		pConstraint += 12
 13083  		goto __4
 13084  		goto __6
 13085  	__6:
 13086  		;
 13087  		iPlan = 0
 13088  	}
 13089  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 13090  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 13091  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 13092  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 13093  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 13094  	}
 13095  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 13096  
 13097  	return SQLITE_OK
 13098  }
 13099  
 13100  var closureModule = sqlite3_module{
 13101  	FxCreate:     0,
 13102  	FxConnect:    0,
 13103  	FxBestIndex:  0,
 13104  	FxDisconnect: 0,
 13105  	FxDestroy:    0,
 13106  	FxOpen:       0,
 13107  	FxClose:      0,
 13108  	FxFilter:     0,
 13109  	FxNext:       0,
 13110  	FxEof:        0,
 13111  	FxColumn:     0,
 13112  	FxRowid:      0,
 13113  }
 13114  
 13115  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13116  	var rc int32 = SQLITE_OK
 13117  	_ = pApi
 13118  
 13119  	_ = pzErrMsg
 13120  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 13121  	return rc
 13122  }
 13123  
 13124  type CsvReader1 = struct {
 13125  	Fin        uintptr
 13126  	Fz         uintptr
 13127  	Fn         int32
 13128  	FnAlloc    int32
 13129  	FnLine     int32
 13130  	FbNotFirst int32
 13131  	FcTerm     int32
 13132  	FiIn       size_t
 13133  	FnIn       size_t
 13134  	FzIn       uintptr
 13135  	FzErr      [200]int8
 13136  }
 13137  
 13138  type CsvReader = CsvReader1
 13139  
 13140  func csv_reader_init(tls *libc.TLS, p uintptr) {
 13141  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 13142  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 13143  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13144  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 13145  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 13146  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 13147  	(*CsvReader)(unsafe.Pointer(p)).FnIn = size_t(0)
 13148  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 13149  	*(*int8)(unsafe.Pointer(p + 40)) = int8(0)
 13150  }
 13151  
 13152  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 13153  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 13154  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 13155  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13156  	}
 13157  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 13158  	csv_reader_init(tls, p)
 13159  }
 13160  
 13161  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 13162  	var ap va_list
 13163  	_ = ap
 13164  	ap = va
 13165  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+40, zFormat, ap)
 13166  	_ = ap
 13167  }
 13168  
 13169  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 13170  	bp := tls.Alloc(8)
 13171  	defer tls.Free(8)
 13172  
 13173  	if zFilename != 0 {
 13174  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 13175  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 13176  			csv_errmsg(tls, p, ts+2069, 0)
 13177  			return 1
 13178  		}
 13179  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 13180  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 13181  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 13182  			csv_reader_reset(tls, p)
 13183  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 13184  			return 1
 13185  		}
 13186  	} else {
 13187  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 13188  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 13189  	}
 13190  	return 0
 13191  }
 13192  
 13193  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 13194  	var got size_t
 13195  
 13196  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint32(1), uint32(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 13197  	if got == size_t(0) {
 13198  		return -1
 13199  	}
 13200  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 13201  	(*CsvReader)(unsafe.Pointer(p)).FiIn = size_t(1)
 13202  	return int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 13203  }
 13204  
 13205  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 13206  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 13207  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 13208  			return csv_getc_refill(tls, p)
 13209  		}
 13210  		return -1
 13211  	}
 13212  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint32(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 13213  }
 13214  
 13215  func csv_resize_and_append(tls *libc.TLS, p uintptr, c int8) int32 {
 13216  	var zNew uintptr
 13217  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 13218  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 13219  	if zNew != 0 {
 13220  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 13221  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 13222  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13223  		return 0
 13224  	} else {
 13225  		csv_errmsg(tls, p, ts+2069, 0)
 13226  		return 1
 13227  	}
 13228  	return int32(0)
 13229  }
 13230  
 13231  func csv_append(tls *libc.TLS, p uintptr, c int8) int32 {
 13232  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 13233  		return csv_resize_and_append(tls, p, c)
 13234  	}
 13235  	*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 13236  	return 0
 13237  }
 13238  
 13239  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 13240  	bp := tls.Alloc(32)
 13241  	defer tls.Free(32)
 13242  
 13243  	var c int32
 13244  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13245  	c = csv_getc(tls, p)
 13246  	if c == -1 {
 13247  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 13248  		return uintptr(0)
 13249  	}
 13250  	if c == '"' {
 13251  		var pc int32
 13252  		var ppc int32
 13253  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 13254  		pc = libc.AssignInt32(&ppc, 0)
 13255  		for 1 != 0 {
 13256  			c = csv_getc(tls, p)
 13257  			if c <= '"' || pc == '"' {
 13258  				if c == '\n' {
 13259  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13260  				}
 13261  				if c == '"' {
 13262  					if pc == '"' {
 13263  						pc = 0
 13264  						continue
 13265  					}
 13266  				}
 13267  				if c == ',' && pc == '"' ||
 13268  					c == '\n' && pc == '"' ||
 13269  					c == '\n' && pc == '\r' && ppc == '"' ||
 13270  					c == -1 && pc == '"' {
 13271  					for __ccgo := true; __ccgo; __ccgo = int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 13272  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 13273  					}
 13274  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 13275  					break
 13276  				}
 13277  				if pc == '"' && c != '\r' {
 13278  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 13279  					break
 13280  				}
 13281  				if c == -1 {
 13282  					csv_errmsg(tls, p, ts+4466,
 13283  						libc.VaList(bp+16, startLine, '"'))
 13284  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 13285  					break
 13286  				}
 13287  			}
 13288  			if csv_append(tls, p, int8(c)) != 0 {
 13289  				return uintptr(0)
 13290  			}
 13291  			ppc = pc
 13292  			pc = c
 13293  		}
 13294  	} else {
 13295  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 13296  			csv_append(tls, p, int8(c))
 13297  			c = csv_getc(tls, p)
 13298  			if c&0xff == 0xbb {
 13299  				csv_append(tls, p, int8(c))
 13300  				c = csv_getc(tls, p)
 13301  				if c&0xff == 0xbf {
 13302  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13303  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 13304  					return csv_read_one_field(tls, p)
 13305  				}
 13306  			}
 13307  		}
 13308  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 13309  			if csv_append(tls, p, int8(c)) != 0 {
 13310  				return uintptr(0)
 13311  			}
 13312  			c = csv_getc(tls, p)
 13313  		}
 13314  		if c == '\n' {
 13315  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 13316  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 13317  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 13318  			}
 13319  		}
 13320  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 13321  	}
 13322  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 13323  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = int8(0)
 13324  	}
 13325  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 13326  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 13327  }
 13328  
 13329  type CsvTable1 = struct {
 13330  	Fbase      sqlite3_vtab
 13331  	FzFilename uintptr
 13332  	FzData     uintptr
 13333  	FiStart    int32
 13334  	FnCol      int32
 13335  	FtstFlags  uint32
 13336  }
 13337  
 13338  type CsvTable = CsvTable1
 13339  
 13340  type CsvCursor1 = struct {
 13341  	Fbase   sqlite3_vtab_cursor
 13342  	Frdr    CsvReader
 13343  	FazVal  uintptr
 13344  	FaLen   uintptr
 13345  	FiRowid sqlite3_int64
 13346  }
 13347  
 13348  type CsvCursor = CsvCursor1
 13349  
 13350  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 13351  	bp := tls.Alloc(8)
 13352  	defer tls.Free(8)
 13353  
 13354  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 13355  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+40))
 13356  }
 13357  
 13358  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 13359  	var p uintptr = pVtab
 13360  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 13361  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 13362  	sqlite3.Xsqlite3_free(tls, p)
 13363  	return SQLITE_OK
 13364  }
 13365  
 13366  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 13367  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(z)))))*2)))&int32(_ISspace) != 0 {
 13368  		z++
 13369  	}
 13370  	return z
 13371  }
 13372  
 13373  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 13374  	var n size_t = libc.Xstrlen(tls, z)
 13375  	for n > size_t(0) && int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n))))))*2)))&int32(_ISspace) != 0 {
 13376  		n--
 13377  	}
 13378  	*(*int8)(unsafe.Pointer(z + uintptr(n))) = int8(0)
 13379  }
 13380  
 13381  func csv_dequote(tls *libc.TLS, z uintptr) {
 13382  	var j int32
 13383  	var cQuote int8 = *(*int8)(unsafe.Pointer(z))
 13384  	var i size_t
 13385  	var n size_t
 13386  
 13387  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 13388  		return
 13389  	}
 13390  	n = libc.Xstrlen(tls, z)
 13391  	if n < size_t(2) || int32(*(*int8)(unsafe.Pointer(z + uintptr(n-size_t(1))))) != int32(*(*int8)(unsafe.Pointer(z))) {
 13392  		return
 13393  	}
 13394  	i = size_t(1)
 13395  	j = 0
 13396  	for ; i < n-size_t(1); i++ {
 13397  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*int8)(unsafe.Pointer(z + uintptr(i+size_t(1))))) == int32(cQuote) {
 13398  			i++
 13399  		}
 13400  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 13401  	}
 13402  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 13403  }
 13404  
 13405  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 13406  	z = csv_skip_whitespace(tls, z)
 13407  	if libc.Xstrncmp(tls, zTag, z, uint32(nTag)) != 0 {
 13408  		return uintptr(0)
 13409  	}
 13410  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13411  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 13412  		return uintptr(0)
 13413  	}
 13414  	return csv_skip_whitespace(tls, z+uintptr(1))
 13415  }
 13416  
 13417  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 13418  	bp := tls.Alloc(16)
 13419  	defer tls.Free(16)
 13420  
 13421  	var zValue uintptr
 13422  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 13423  	if zValue == uintptr(0) {
 13424  		return 0
 13425  	}
 13426  	*(*int8)(unsafe.Pointer(p + 40)) = int8(0)
 13427  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 13428  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 13429  		return 1
 13430  	}
 13431  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 13432  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 13433  		csv_errmsg(tls, p, ts+2069, 0)
 13434  		return 1
 13435  	}
 13436  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13437  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 13438  	return 1
 13439  }
 13440  
 13441  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 13442  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 13443  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 13444  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 13445  		int32(*(*int8)(unsafe.Pointer(z))) == '1' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 13446  		return 1
 13447  	}
 13448  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 13449  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 13450  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 13451  		int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 13452  		return 0
 13453  	}
 13454  	return -1
 13455  }
 13456  
 13457  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 13458  	var b int32
 13459  	z = csv_skip_whitespace(tls, z)
 13460  	if libc.Xstrncmp(tls, zTag, z, uint32(nTag)) != 0 {
 13461  		return 0
 13462  	}
 13463  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 13464  	if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 13465  		*(*int32)(unsafe.Pointer(pValue)) = 1
 13466  		return 1
 13467  	}
 13468  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 13469  		return 0
 13470  	}
 13471  	z = csv_skip_whitespace(tls, z+uintptr(1))
 13472  	b = csv_boolean(tls, z)
 13473  	if b >= 0 {
 13474  		*(*int32)(unsafe.Pointer(pValue)) = b
 13475  		return 1
 13476  	}
 13477  	return 0
 13478  }
 13479  
 13480  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13481  	bp := tls.Alloc(336)
 13482  	defer tls.Free(336)
 13483  
 13484  	var pNew uintptr
 13485  	var bHeader int32
 13486  	var rc int32
 13487  	var i int32
 13488  	var j int32
 13489  	var tstFlags int32
 13490  
 13491  	var nCol int32
 13492  
 13493  	var z uintptr
 13494  	var zValue uintptr
 13495  	var z1 uintptr
 13496  	var pStr uintptr
 13497  	var zSep uintptr
 13498  	var iCol int32
 13499  	pNew = uintptr(0)
 13500  	bHeader = -1
 13501  	rc = SQLITE_OK
 13502  	tstFlags = 0
 13503  	nCol = -99
 13504  
 13505  	libc.Xmemset(tls, bp+80, 0, uint32(unsafe.Sizeof(CsvReader{})))
 13506  	libc.Xmemset(tls, bp+320, 0, uint32(unsafe.Sizeof([3]uintptr{})))
 13507  	i = 3
 13508  __1:
 13509  	if !(i < argc) {
 13510  		goto __3
 13511  	}
 13512  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))
 13513  	j = 0
 13514  __4:
 13515  	if !(uint32(j) < uint32(unsafe.Sizeof(azParam))/uint32(unsafe.Sizeof(uintptr(0)))) {
 13516  		goto __6
 13517  	}
 13518  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+320+uintptr(j)*4) != 0) {
 13519  		goto __7
 13520  	}
 13521  	goto __6
 13522  __7:
 13523  	;
 13524  	goto __5
 13525  __5:
 13526  	j++
 13527  	goto __4
 13528  	goto __6
 13529  __6:
 13530  	;
 13531  	if !(uint32(j) < uint32(unsafe.Sizeof(azParam))/uint32(unsafe.Sizeof(uintptr(0)))) {
 13532  		goto __8
 13533  	}
 13534  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 40)) != 0) {
 13535  		goto __10
 13536  	}
 13537  	goto csvtab_connect_error
 13538  __10:
 13539  	;
 13540  	goto __9
 13541  __8:
 13542  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+332) != 0) {
 13543  		goto __11
 13544  	}
 13545  	if !(bHeader >= 0) {
 13546  		goto __13
 13547  	}
 13548  	csv_errmsg(tls, bp+80, ts+4559, 0)
 13549  	goto csvtab_connect_error
 13550  __13:
 13551  	;
 13552  	bHeader = *(*int32)(unsafe.Pointer(bp + 332))
 13553  	goto __12
 13554  __11:
 13555  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 13556  		goto __14
 13557  	}
 13558  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 13559  	goto __15
 13560  __14:
 13561  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 13562  		goto __16
 13563  	}
 13564  	if !(nCol > 0) {
 13565  		goto __18
 13566  	}
 13567  	csv_errmsg(tls, bp+80, ts+4610, 0)
 13568  	goto csvtab_connect_error
 13569  __18:
 13570  	;
 13571  	nCol = libc.Xatoi(tls, zValue)
 13572  	if !(nCol <= 0) {
 13573  		goto __19
 13574  	}
 13575  	csv_errmsg(tls, bp+80, ts+4644, 0)
 13576  	goto csvtab_connect_error
 13577  __19:
 13578  	;
 13579  	goto __17
 13580  __16:
 13581  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 13582  	goto csvtab_connect_error
 13583  __17:
 13584  	;
 13585  __15:
 13586  	;
 13587  __12:
 13588  	;
 13589  __9:
 13590  	;
 13591  	goto __2
 13592  __2:
 13593  	i++
 13594  	goto __1
 13595  	goto __3
 13596  __3:
 13597  	;
 13598  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 320)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 320 + 1*4)) == uintptr(0))) {
 13599  		goto __20
 13600  	}
 13601  	csv_errmsg(tls, bp+80, ts+4695, 0)
 13602  	goto csvtab_connect_error
 13603  __20:
 13604  	;
 13605  	if !((nCol <= 0 || bHeader == 1) &&
 13606  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 320)), *(*uintptr)(unsafe.Pointer(bp + 320 + 1*4))) != 0) {
 13607  		goto __21
 13608  	}
 13609  	goto csvtab_connect_error
 13610  __21:
 13611  	;
 13612  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 13613  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13614  	if !(pNew == uintptr(0)) {
 13615  		goto __22
 13616  	}
 13617  	goto csvtab_connect_oom
 13618  __22:
 13619  	;
 13620  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(CsvTable{})))
 13621  	if !(*(*uintptr)(unsafe.Pointer(bp + 320 + 2*4)) == uintptr(0)) {
 13622  		goto __23
 13623  	}
 13624  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 13625  	zSep = ts + 584
 13626  	iCol = 0
 13627  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 13628  	if !(nCol < 0 && bHeader < 1) {
 13629  		goto __25
 13630  	}
 13631  	nCol = 0
 13632  __26:
 13633  	csv_read_one_field(tls, bp+80)
 13634  	nCol++
 13635  	goto __27
 13636  __27:
 13637  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13638  		goto __26
 13639  	}
 13640  	goto __28
 13641  __28:
 13642  	;
 13643  __25:
 13644  	;
 13645  	if !(nCol > 0 && bHeader < 1) {
 13646  		goto __29
 13647  	}
 13648  	iCol = 0
 13649  __31:
 13650  	if !(iCol < nCol) {
 13651  		goto __33
 13652  	}
 13653  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 13654  	zSep = ts + 4758
 13655  	goto __32
 13656  __32:
 13657  	iCol++
 13658  	goto __31
 13659  	goto __33
 13660  __33:
 13661  	;
 13662  	goto __30
 13663  __29:
 13664  __34:
 13665  	z1 = csv_read_one_field(tls, bp+80)
 13666  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 13667  		goto __37
 13668  	}
 13669  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 13670  	zSep = ts + 4758
 13671  	iCol++
 13672  __37:
 13673  	;
 13674  	goto __35
 13675  __35:
 13676  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13677  		goto __34
 13678  	}
 13679  	goto __36
 13680  __36:
 13681  	;
 13682  	if !(nCol < 0) {
 13683  		goto __38
 13684  	}
 13685  	nCol = iCol
 13686  	goto __39
 13687  __38:
 13688  __40:
 13689  	if !(iCol < nCol) {
 13690  		goto __41
 13691  	}
 13692  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 13693  	zSep = ts + 4758
 13694  	goto __40
 13695  __41:
 13696  	;
 13697  __39:
 13698  	;
 13699  __30:
 13700  	;
 13701  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13702  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 13703  	*(*uintptr)(unsafe.Pointer(bp + 320 + 2*4)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 13704  	if !(*(*uintptr)(unsafe.Pointer(bp + 320 + 2*4)) == uintptr(0)) {
 13705  		goto __42
 13706  	}
 13707  	goto csvtab_connect_oom
 13708  __42:
 13709  	;
 13710  	goto __24
 13711  __23:
 13712  	if !(nCol < 0) {
 13713  		goto __43
 13714  	}
 13715  __45:
 13716  	csv_read_one_field(tls, bp+80)
 13717  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 13718  	goto __46
 13719  __46:
 13720  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13721  		goto __45
 13722  	}
 13723  	goto __47
 13724  __47:
 13725  	;
 13726  	goto __44
 13727  __43:
 13728  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13729  __44:
 13730  	;
 13731  __24:
 13732  	;
 13733  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 320))
 13734  	*(*uintptr)(unsafe.Pointer(bp + 320)) = uintptr(0)
 13735  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 320 + 1*4))
 13736  	*(*uintptr)(unsafe.Pointer(bp + 320 + 1*4)) = uintptr(0)
 13737  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 13738  	if !(bHeader != 1) {
 13739  		goto __48
 13740  	}
 13741  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = 0
 13742  	goto __49
 13743  __48:
 13744  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 13745  		goto __50
 13746  	}
 13747  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn)
 13748  	goto __51
 13749  __50:
 13750  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int32(uint32(libc.Xftell(tls, (*CsvReader)(unsafe.Pointer(bp+80)).Fin)) - (*CsvReader)(unsafe.Pointer(bp+80)).FnIn + (*CsvReader)(unsafe.Pointer(bp+80)).FiIn)
 13751  __51:
 13752  	;
 13753  __49:
 13754  	;
 13755  	csv_reader_reset(tls, bp+80)
 13756  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 320 + 2*4)))
 13757  	if !(rc != 0) {
 13758  		goto __52
 13759  	}
 13760  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 320 + 2*4)), sqlite3.Xsqlite3_errmsg(tls, db)))
 13761  	goto csvtab_connect_error
 13762  __52:
 13763  	;
 13764  	i = 0
 13765  __53:
 13766  	if !(uint32(i) < uint32(unsafe.Sizeof([3]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0)))) {
 13767  		goto __55
 13768  	}
 13769  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 320 + uintptr(i)*4)))
 13770  	goto __54
 13771  __54:
 13772  	i++
 13773  	goto __53
 13774  	goto __55
 13775  __55:
 13776  	;
 13777  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 13778  	return SQLITE_OK
 13779  
 13780  csvtab_connect_oom:
 13781  	rc = SQLITE_NOMEM
 13782  	csv_errmsg(tls, bp+80, ts+2069, 0)
 13783  
 13784  csvtab_connect_error:
 13785  	if !(pNew != 0) {
 13786  		goto __56
 13787  	}
 13788  	csvtabDisconnect(tls, pNew)
 13789  __56:
 13790  	;
 13791  	i = 0
 13792  __57:
 13793  	if !(uint32(i) < uint32(unsafe.Sizeof([3]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0)))) {
 13794  		goto __59
 13795  	}
 13796  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 320 + uintptr(i)*4)))
 13797  	goto __58
 13798  __58:
 13799  	i++
 13800  	goto __57
 13801  	goto __59
 13802  __59:
 13803  	;
 13804  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 40)) != 0) {
 13805  		goto __60
 13806  	}
 13807  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 13808  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+40))
 13809  __60:
 13810  	;
 13811  	csv_reader_reset(tls, bp+80)
 13812  	if !(rc == SQLITE_OK) {
 13813  		goto __61
 13814  	}
 13815  	rc = SQLITE_ERROR
 13816  __61:
 13817  	;
 13818  	return rc
 13819  }
 13820  
 13821  var azParam = [3]uintptr{
 13822  	ts + 4794, ts + 4803, ts + 4808,
 13823  }
 13824  
 13825  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 13826  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 13827  	var i int32
 13828  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 13829  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)))
 13830  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)) = uintptr(0)
 13831  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13832  	}
 13833  }
 13834  
 13835  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13836  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 13837  }
 13838  
 13839  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 13840  	var pCur uintptr = cur
 13841  	csvtabCursorRowReset(tls, pCur)
 13842  	csv_reader_reset(tls, pCur+4)
 13843  	sqlite3.Xsqlite3_free(tls, cur)
 13844  	return SQLITE_OK
 13845  }
 13846  
 13847  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13848  	var pTab uintptr = p
 13849  	var pCur uintptr
 13850  	var nByte size_t
 13851  	nByte = uint32(unsafe.Sizeof(CsvCursor{})) + (uint32(unsafe.Sizeof(uintptr(0)))+uint32(unsafe.Sizeof(int32(0))))*uint32((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 13852  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 13853  	if pCur == uintptr(0) {
 13854  		return SQLITE_NOMEM
 13855  	}
 13856  	libc.Xmemset(tls, pCur, 0, nByte)
 13857  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*260
 13858  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*4
 13859  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13860  	if csv_reader_open(tls, pCur+4, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 13861  		csv_xfer_error(tls, pTab, pCur+4)
 13862  		return SQLITE_ERROR
 13863  	}
 13864  	return SQLITE_OK
 13865  }
 13866  
 13867  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 13868  	var pCur uintptr = cur
 13869  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13870  	var i int32 = 0
 13871  	var z uintptr
 13872  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 13873  		z = csv_read_one_field(tls, pCur+4)
 13874  		if z == uintptr(0) {
 13875  			break
 13876  		}
 13877  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13878  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 13879  				var zNew uintptr = sqlite3.Xsqlite3_realloc64(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)), uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13880  				if zNew == uintptr(0) {
 13881  					csv_errmsg(tls, pCur+4, ts+2069, 0)
 13882  					csv_xfer_error(tls, pTab, pCur+4)
 13883  					break
 13884  				}
 13885  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)) = zNew
 13886  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 13887  			}
 13888  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)), z, uint32((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13889  			i++
 13890  		}
 13891  	}
 13892  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13893  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 13894  	} else {
 13895  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 13896  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13897  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)))
 13898  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)) = uintptr(0)
 13899  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13900  			i++
 13901  		}
 13902  	}
 13903  	return SQLITE_OK
 13904  }
 13905  
 13906  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13907  	var pCur uintptr = cur
 13908  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13909  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)) != uintptr(0) {
 13910  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*4)), -1, libc.UintptrFromInt32(-1))
 13911  	}
 13912  	return SQLITE_OK
 13913  }
 13914  
 13915  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13916  	var pCur uintptr = cur
 13917  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 13918  	return SQLITE_OK
 13919  }
 13920  
 13921  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 13922  	var pCur uintptr = cur
 13923  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 13924  }
 13925  
 13926  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13927  	var pCur uintptr = pVtabCursor
 13928  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 13929  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 13930  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 13931  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 13932  	} else {
 13933  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 13934  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t(0)
 13935  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = size_t(0)
 13936  	}
 13937  	return csvtabNext(tls, pVtabCursor)
 13938  }
 13939  
 13940  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 13941  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 13942  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 13943  		var i int32
 13944  		var nConst int32 = 0
 13945  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 13946  			var op uint8
 13947  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 13948  				continue
 13949  			}
 13950  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 13951  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 13952  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 13953  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 13954  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 13955  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 13956  				nConst++
 13957  			}
 13958  		}
 13959  	}
 13960  	return SQLITE_OK
 13961  }
 13962  
 13963  var CsvModule = sqlite3_module{
 13964  	FxCreate:     0,
 13965  	FxConnect:    0,
 13966  	FxBestIndex:  0,
 13967  	FxDisconnect: 0,
 13968  	FxDestroy:    0,
 13969  	FxOpen:       0,
 13970  	FxClose:      0,
 13971  	FxFilter:     0,
 13972  	FxNext:       0,
 13973  	FxEof:        0,
 13974  	FxColumn:     0,
 13975  	FxRowid:      0,
 13976  }
 13977  
 13978  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 13979  	return SQLITE_READONLY
 13980  }
 13981  
 13982  var CsvModuleFauxWrite = sqlite3_module{
 13983  	FxCreate:     0,
 13984  	FxConnect:    0,
 13985  	FxBestIndex:  0,
 13986  	FxDisconnect: 0,
 13987  	FxDestroy:    0,
 13988  	FxOpen:       0,
 13989  	FxClose:      0,
 13990  	FxFilter:     0,
 13991  	FxNext:       0,
 13992  	FxEof:        0,
 13993  	FxColumn:     0,
 13994  	FxRowid:      0,
 13995  	FxUpdate:     0,
 13996  }
 13997  
 13998  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13999  	var rc int32
 14000  	_ = pApi
 14001  
 14002  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 14003  	if rc == SQLITE_OK {
 14004  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 14005  	}
 14006  	return rc
 14007  }
 14008  
 14009  type Decimal1 = struct {
 14010  	Fsign   int8
 14011  	Foom    int8
 14012  	FisNull int8
 14013  	FisInit int8
 14014  	FnDigit int32
 14015  	FnFrac  int32
 14016  	Fa      uintptr
 14017  }
 14018  
 14019  type Decimal = Decimal1
 14020  
 14021  func decimal_clear(tls *libc.TLS, p uintptr) {
 14022  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 14023  }
 14024  
 14025  func decimal_free(tls *libc.TLS, p uintptr) {
 14026  	if p != 0 {
 14027  		decimal_clear(tls, p)
 14028  		sqlite3.Xsqlite3_free(tls, p)
 14029  	}
 14030  }
 14031  
 14032  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 14033  	var p uintptr
 14034  	var n int32
 14035  	var i int32
 14036  	var zIn uintptr
 14037  	var iExp int32
 14038  	var j int32
 14039  	var neg int32
 14040  	var c int8
 14041  	var nExtra int32
 14042  	iExp = 0
 14043  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 14044  	if !(p == uintptr(0)) {
 14045  		goto __1
 14046  	}
 14047  	goto new_no_mem
 14048  __1:
 14049  	;
 14050  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 14051  	(*Decimal)(unsafe.Pointer(p)).Foom = int8(0)
 14052  	(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 14053  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(0)
 14054  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 14055  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14056  	if !(zAlt != 0) {
 14057  		goto __2
 14058  	}
 14059  	n = nAlt
 14060  	zIn = zAlt
 14061  	goto __3
 14062  __2:
 14063  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 14064  		goto __4
 14065  	}
 14066  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 14067  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(1)
 14068  	return p
 14069  __4:
 14070  	;
 14071  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 14072  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 14073  __3:
 14074  	;
 14075  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 14076  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14077  		goto __5
 14078  	}
 14079  	goto new_no_mem
 14080  __5:
 14081  	;
 14082  	i = 0
 14083  __6:
 14084  	if !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))))*2)))&int32(_ISspace) != 0) {
 14085  		goto __8
 14086  	}
 14087  	goto __7
 14088  __7:
 14089  	i++
 14090  	goto __6
 14091  	goto __8
 14092  __8:
 14093  	;
 14094  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 14095  		goto __9
 14096  	}
 14097  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(1)
 14098  	i++
 14099  	goto __10
 14100  __9:
 14101  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 14102  		goto __11
 14103  	}
 14104  	i++
 14105  __11:
 14106  	;
 14107  __10:
 14108  	;
 14109  __12:
 14110  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 14111  		goto __13
 14112  	}
 14113  	i++
 14114  	goto __12
 14115  __13:
 14116  	;
 14117  __14:
 14118  	if !(i < n) {
 14119  		goto __15
 14120  	}
 14121  	c = int8(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))
 14122  	if !(int32(c) >= '0' && int32(c) <= '9') {
 14123  		goto __16
 14124  	}
 14125  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 14126  	goto __17
 14127  __16:
 14128  	if !(int32(c) == '.') {
 14129  		goto __18
 14130  	}
 14131  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 14132  	goto __19
 14133  __18:
 14134  	if !(int32(c) == 'e' || int32(c) == 'E') {
 14135  		goto __20
 14136  	}
 14137  	j = i + 1
 14138  	neg = 0
 14139  	if !(j >= n) {
 14140  		goto __21
 14141  	}
 14142  	goto __15
 14143  __21:
 14144  	;
 14145  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 14146  		goto __22
 14147  	}
 14148  	neg = 1
 14149  	j++
 14150  	goto __23
 14151  __22:
 14152  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 14153  		goto __24
 14154  	}
 14155  	j++
 14156  __24:
 14157  	;
 14158  __23:
 14159  	;
 14160  __25:
 14161  	if !(j < n && iExp < 1000000) {
 14162  		goto __26
 14163  	}
 14164  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 14165  		goto __27
 14166  	}
 14167  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 14168  __27:
 14169  	;
 14170  	j++
 14171  	goto __25
 14172  __26:
 14173  	;
 14174  	if !(neg != 0) {
 14175  		goto __28
 14176  	}
 14177  	iExp = -iExp
 14178  __28:
 14179  	;
 14180  	goto __15
 14181  __20:
 14182  	;
 14183  __19:
 14184  	;
 14185  __17:
 14186  	;
 14187  	i++
 14188  	goto __14
 14189  __15:
 14190  	;
 14191  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 14192  		goto __29
 14193  	}
 14194  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 14195  __29:
 14196  	;
 14197  	if !(iExp > 0) {
 14198  		goto __30
 14199  	}
 14200  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 14201  		goto __32
 14202  	}
 14203  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 14204  		goto __33
 14205  	}
 14206  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 14207  	iExp = 0
 14208  	goto __34
 14209  __33:
 14210  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14211  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14212  __34:
 14213  	;
 14214  __32:
 14215  	;
 14216  	if !(iExp > 0) {
 14217  		goto __35
 14218  	}
 14219  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14220  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14221  		goto __36
 14222  	}
 14223  	goto new_no_mem
 14224  __36:
 14225  	;
 14226  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint32(iExp))
 14227  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14228  __35:
 14229  	;
 14230  	goto __31
 14231  __30:
 14232  	if !(iExp < 0) {
 14233  		goto __37
 14234  	}
 14235  	iExp = -iExp
 14236  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 14237  	if !(nExtra != 0) {
 14238  		goto __38
 14239  	}
 14240  	if !(nExtra >= iExp) {
 14241  		goto __39
 14242  	}
 14243  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14244  	iExp = 0
 14245  	goto __40
 14246  __39:
 14247  	iExp = iExp - nExtra
 14248  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 14249  __40:
 14250  	;
 14251  __38:
 14252  	;
 14253  	if !(iExp > 0) {
 14254  		goto __41
 14255  	}
 14256  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 14257  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 14258  		goto __42
 14259  	}
 14260  	goto new_no_mem
 14261  __42:
 14262  	;
 14263  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint32((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14264  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint32(iExp))
 14265  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 14266  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 14267  __41:
 14268  	;
 14269  __37:
 14270  	;
 14271  __31:
 14272  	;
 14273  	return p
 14274  
 14275  new_no_mem:
 14276  	if !(pCtx != 0) {
 14277  		goto __43
 14278  	}
 14279  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14280  __43:
 14281  	;
 14282  	sqlite3.Xsqlite3_free(tls, p)
 14283  	return uintptr(0)
 14284  }
 14285  
 14286  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 14287  	var z uintptr
 14288  	var i int32
 14289  	var j int32
 14290  	var n int32
 14291  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 14292  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14293  		return
 14294  	}
 14295  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 14296  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 14297  		return
 14298  	}
 14299  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 14300  	if z == uintptr(0) {
 14301  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 14302  		return
 14303  	}
 14304  	i = 0
 14305  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 14306  		(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 14307  	}
 14308  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 14309  		*(*int8)(unsafe.Pointer(z)) = int8('-')
 14310  		i = 1
 14311  	}
 14312  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14313  	if n <= 0 {
 14314  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('0')
 14315  	}
 14316  	j = 0
 14317  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 14318  		j++
 14319  		n--
 14320  	}
 14321  	for n > 0 {
 14322  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14323  		j++
 14324  		n--
 14325  	}
 14326  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 14327  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('.')
 14328  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 14329  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 14330  			j++
 14331  		}
 14332  	}
 14333  	*(*int8)(unsafe.Pointer(z + uintptr(i))) = int8(0)
 14334  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14335  }
 14336  
 14337  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14338  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14339  	_ = argc
 14340  	decimal_result(tls, context, p)
 14341  	decimal_free(tls, p)
 14342  }
 14343  
 14344  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 14345  	var nASig int32
 14346  	var nBSig int32
 14347  	var rc int32
 14348  	var n int32
 14349  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14350  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14351  			return -1
 14352  		}
 14353  		return +1
 14354  	}
 14355  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 14356  		var pTemp uintptr = pA
 14357  		pA = pB
 14358  		pB = pTemp
 14359  	}
 14360  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14361  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14362  	if nASig != nBSig {
 14363  		return nASig - nBSig
 14364  	}
 14365  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 14366  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 14367  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14368  	}
 14369  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint32(n))
 14370  	if rc == 0 {
 14371  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 14372  	}
 14373  	return rc
 14374  }
 14375  
 14376  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14377  	var pA uintptr
 14378  	var pB uintptr
 14379  	var rc int32
 14380  	pA = uintptr(0)
 14381  	pB = uintptr(0)
 14382  
 14383  	_ = argc
 14384  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14385  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 14386  		goto __1
 14387  	}
 14388  	goto cmp_done
 14389  __1:
 14390  	;
 14391  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*4)), 0, uintptr(0))
 14392  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14393  		goto __2
 14394  	}
 14395  	goto cmp_done
 14396  __2:
 14397  	;
 14398  	rc = decimal_cmp(tls, pA, pB)
 14399  	if !(rc < 0) {
 14400  		goto __3
 14401  	}
 14402  	rc = -1
 14403  	goto __4
 14404  __3:
 14405  	if !(rc > 0) {
 14406  		goto __5
 14407  	}
 14408  	rc = +1
 14409  __5:
 14410  	;
 14411  __4:
 14412  	;
 14413  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 14414  cmp_done:
 14415  	decimal_free(tls, pA)
 14416  	decimal_free(tls, pB)
 14417  }
 14418  
 14419  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 14420  	var nAddSig int32
 14421  	var nAddFrac int32
 14422  	if p == uintptr(0) {
 14423  		return
 14424  	}
 14425  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 14426  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 14427  	if nAddFrac == 0 && nAddSig == 0 {
 14428  		return
 14429  	}
 14430  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 14431  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14432  		(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14433  		return
 14434  	}
 14435  	if nAddSig != 0 {
 14436  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint32((*Decimal)(unsafe.Pointer(p)).FnDigit))
 14437  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint32(nAddSig))
 14438  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 14439  	}
 14440  	if nAddFrac != 0 {
 14441  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint32(nAddFrac))
 14442  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 14443  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 14444  	}
 14445  }
 14446  
 14447  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 14448  	var nSig int32
 14449  	var nFrac int32
 14450  	var nDigit int32
 14451  	var i int32
 14452  	var rc int32
 14453  	if pA == uintptr(0) {
 14454  		return
 14455  	}
 14456  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14457  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 14458  		return
 14459  	}
 14460  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 14461  		(*Decimal)(unsafe.Pointer(pA)).FisNull = int8(1)
 14462  		return
 14463  	}
 14464  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14465  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 14466  		nSig--
 14467  	}
 14468  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14469  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14470  	}
 14471  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14472  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 14473  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14474  	}
 14475  	nDigit = nSig + nFrac + 1
 14476  	decimal_expand(tls, pA, nDigit, nFrac)
 14477  	decimal_expand(tls, pB, nDigit, nFrac)
 14478  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 14479  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 14480  	} else {
 14481  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 14482  			var carry int32 = 0
 14483  			for i = nDigit - 1; i >= 0; i-- {
 14484  				var x int32 = int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))) + int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(i)))) + carry
 14485  				if x >= 10 {
 14486  					carry = 1
 14487  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 14488  				} else {
 14489  					carry = 0
 14490  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14491  				}
 14492  			}
 14493  		} else {
 14494  			var aA uintptr
 14495  			var aB uintptr
 14496  			var borrow int32 = 0
 14497  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint32(nDigit))
 14498  			if rc < 0 {
 14499  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 14500  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 14501  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 14502  			} else {
 14503  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 14504  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 14505  			}
 14506  			for i = nDigit - 1; i >= 0; i-- {
 14507  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 14508  				if x < 0 {
 14509  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 14510  					borrow = 1
 14511  				} else {
 14512  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 14513  					borrow = 0
 14514  				}
 14515  			}
 14516  		}
 14517  	}
 14518  }
 14519  
 14520  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 14521  	var zA uintptr = pKey1
 14522  	var zB uintptr = pKey2
 14523  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 14524  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 14525  	var rc int32
 14526  	_ = notUsed
 14527  	if pA == uintptr(0) || pB == uintptr(0) {
 14528  		rc = 0
 14529  	} else {
 14530  		rc = decimal_cmp(tls, pA, pB)
 14531  	}
 14532  	decimal_free(tls, pA)
 14533  	decimal_free(tls, pB)
 14534  	return rc
 14535  }
 14536  
 14537  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14538  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14539  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*4)), 0, uintptr(0))
 14540  	_ = argc
 14541  	decimal_add(tls, pA, pB)
 14542  	decimal_result(tls, context, pA)
 14543  	decimal_free(tls, pA)
 14544  	decimal_free(tls, pB)
 14545  }
 14546  
 14547  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14548  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14549  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*4)), 0, uintptr(0))
 14550  	_ = argc
 14551  	if pB != 0 {
 14552  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 14553  		decimal_add(tls, pA, pB)
 14554  		decimal_result(tls, context, pA)
 14555  	}
 14556  	decimal_free(tls, pA)
 14557  	decimal_free(tls, pB)
 14558  }
 14559  
 14560  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14561  	var p uintptr
 14562  	var pArg uintptr
 14563  	_ = argc
 14564  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14565  	if p == uintptr(0) {
 14566  		return
 14567  	}
 14568  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 14569  		(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 14570  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 14571  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14572  			(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14573  		} else {
 14574  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 14575  		}
 14576  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 14577  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14578  	}
 14579  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14580  		return
 14581  	}
 14582  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14583  	decimal_add(tls, p, pArg)
 14584  	decimal_free(tls, pArg)
 14585  }
 14586  
 14587  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14588  	var p uintptr
 14589  	var pArg uintptr
 14590  	_ = argc
 14591  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14592  	if p == uintptr(0) {
 14593  		return
 14594  	}
 14595  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14596  		return
 14597  	}
 14598  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14599  	if pArg != 0 {
 14600  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 14601  	}
 14602  	decimal_add(tls, p, pArg)
 14603  	decimal_free(tls, pArg)
 14604  }
 14605  
 14606  func decimalSumValue(tls *libc.TLS, context uintptr) {
 14607  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14608  	if p == uintptr(0) {
 14609  		return
 14610  	}
 14611  	decimal_result(tls, context, p)
 14612  }
 14613  
 14614  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 14615  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14616  	if p == uintptr(0) {
 14617  		return
 14618  	}
 14619  	decimal_result(tls, context, p)
 14620  	decimal_clear(tls, p)
 14621  }
 14622  
 14623  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14624  	var pA uintptr
 14625  	var pB uintptr
 14626  	var acc uintptr
 14627  	var i int32
 14628  	var j int32
 14629  	var k int32
 14630  	var minFrac int32
 14631  	var f int8
 14632  	var carry int32
 14633  	var x int32
 14634  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14635  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*4)), 0, uintptr(0))
 14636  	acc = uintptr(0)
 14637  	_ = argc
 14638  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 14639  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14640  		goto __1
 14641  	}
 14642  	goto mul_end
 14643  __1:
 14644  	;
 14645  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14646  	if !(acc == uintptr(0)) {
 14647  		goto __2
 14648  	}
 14649  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14650  	goto mul_end
 14651  __2:
 14652  	;
 14653  	libc.Xmemset(tls, acc, 0, uint32((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14654  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14655  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 14656  		goto __3
 14657  	}
 14658  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14659  __3:
 14660  	;
 14661  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 14662  __4:
 14663  	if !(i >= 0) {
 14664  		goto __6
 14665  	}
 14666  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 14667  	carry = 0
 14668  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 14669  	k = i + j + 3
 14670  __7:
 14671  	if !(j >= 0) {
 14672  		goto __9
 14673  	}
 14674  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 14675  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14676  	carry = x / 10
 14677  	goto __8
 14678  __8:
 14679  	j--
 14680  	k--
 14681  	goto __7
 14682  	goto __9
 14683  __9:
 14684  	;
 14685  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 14686  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14687  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 14688  	goto __5
 14689  __5:
 14690  	i--
 14691  	goto __4
 14692  	goto __6
 14693  __6:
 14694  	;
 14695  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 14696  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 14697  	acc = uintptr(0)
 14698  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 14699  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14700  	*(*int8)(unsafe.Pointer(pA)) ^= int8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 14701  __10:
 14702  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 14703  		goto __11
 14704  	}
 14705  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 14706  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 14707  	goto __10
 14708  __11:
 14709  	;
 14710  	decimal_result(tls, context, pA)
 14711  
 14712  mul_end:
 14713  	sqlite3.Xsqlite3_free(tls, acc)
 14714  	decimal_free(tls, pA)
 14715  	decimal_free(tls, pB)
 14716  }
 14717  
 14718  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14719  	var rc int32 = SQLITE_OK
 14720  	var i uint32
 14721  	_ = pzErrMsg
 14722  
 14723  	_ = pApi
 14724  
 14725  	for i = uint32(0); i < uint32(unsafe.Sizeof(aFunc))/uint32(unsafe.Sizeof(struct {
 14726  		FzFuncName uintptr
 14727  		FnArg      int32
 14728  		FxFunc     uintptr
 14729  	}{})) && rc == SQLITE_OK; i++ {
 14730  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 14731  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14732  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 14733  	}
 14734  	if rc == SQLITE_OK {
 14735  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 14736  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 14737  			*(*uintptr)(unsafe.Pointer(&struct {
 14738  				f func(*libc.TLS, uintptr, int32, uintptr)
 14739  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 14740  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 14741  				f func(*libc.TLS, uintptr, int32, uintptr)
 14742  			}{decimalSumInverse})), uintptr(0))
 14743  	}
 14744  	if rc == SQLITE_OK {
 14745  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 14746  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14747  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 14748  			}{decimalCollFunc})))
 14749  	}
 14750  	return rc
 14751  }
 14752  
 14753  var aFunc = [5]struct {
 14754  	FzFuncName uintptr
 14755  	FnArg      int32
 14756  	FxFunc     uintptr
 14757  }{
 14758  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 14759  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 14760  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 14761  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 14762  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 14763  }
 14764  
 14765  type EvalResult = struct {
 14766  	Fz      uintptr
 14767  	FzSep   uintptr
 14768  	FszSep  int32
 14769  	FnAlloc sqlite3_int64
 14770  	FnUsed  sqlite3_int64
 14771  }
 14772  
 14773  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 14774  	var p uintptr = pCtx
 14775  	var i int32
 14776  	if argv == uintptr(0) {
 14777  		return 0
 14778  	}
 14779  	for i = 0; i < argc; i++ {
 14780  		var z uintptr
 14781  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)) != 0 {
 14782  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))
 14783  		} else {
 14784  			z = ts + 584
 14785  		}
 14786  		var sz size_t = libc.Xstrlen(tls, z)
 14787  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 14788  			var zNew uintptr
 14789  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = (*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2) + sqlite3_int64(sz) + sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep) + int64(1)
 14790  
 14791  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 14792  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 14793  			} else {
 14794  				zNew = uintptr(0)
 14795  			}
 14796  			if zNew == uintptr(0) {
 14797  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 14798  				libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(EvalResult{})))
 14799  				return 1
 14800  			}
 14801  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 14802  		}
 14803  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 14804  			libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), (*EvalResult)(unsafe.Pointer(p)).FzSep, uint32((*EvalResult)(unsafe.Pointer(p)).FszSep))
 14805  			*(*sqlite3_int64)(unsafe.Pointer(p + 20)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 14806  		}
 14807  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 14808  		*(*sqlite3_int64)(unsafe.Pointer(p + 20)) += sqlite3_int64(sz)
 14809  	}
 14810  	return 0
 14811  }
 14812  
 14813  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14814  	bp := tls.Alloc(32)
 14815  	defer tls.Free(32)
 14816  
 14817  	var zSql uintptr
 14818  	var db uintptr
 14819  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(0)
 14820  	var rc int32
 14821  
 14822  	libc.Xmemset(tls, bp, 0, uint32(unsafe.Sizeof(EvalResult{})))
 14823  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 14824  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14825  	if zSql == uintptr(0) {
 14826  		return
 14827  	}
 14828  	if argc > 1 {
 14829  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 14830  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14831  			return
 14832  		}
 14833  	}
 14834  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 14835  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 14836  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 14837  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 14838  	}{callback})), bp, bp+28)
 14839  	if rc != SQLITE_OK {
 14840  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 28)), -1)
 14841  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 28)))
 14842  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14843  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14844  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 14845  	} else {
 14846  		sqlite3.Xsqlite3_result_text(tls, context, (*EvalResult)(unsafe.Pointer(bp)).Fz, int32((*EvalResult)(unsafe.Pointer(bp)).FnUsed), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14847  	}
 14848  }
 14849  
 14850  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14851  	var rc int32 = SQLITE_OK
 14852  	_ = pApi
 14853  
 14854  	_ = pzErrMsg
 14855  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 14856  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14857  		*(*uintptr)(unsafe.Pointer(&struct {
 14858  			f func(*libc.TLS, uintptr, int32, uintptr)
 14859  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14860  	if rc == SQLITE_OK {
 14861  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 14862  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14863  			*(*uintptr)(unsafe.Pointer(&struct {
 14864  				f func(*libc.TLS, uintptr, int32, uintptr)
 14865  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14866  	}
 14867  	return rc
 14868  }
 14869  
 14870  type explain_vtab1 = struct {
 14871  	Fbase sqlite3_vtab
 14872  	Fdb   uintptr
 14873  }
 14874  
 14875  type explain_vtab = explain_vtab1
 14876  
 14877  type explain_cursor1 = struct {
 14878  	Fbase     sqlite3_vtab_cursor
 14879  	Fdb       uintptr
 14880  	FzSql     uintptr
 14881  	FpExplain uintptr
 14882  	Frc       int32
 14883  }
 14884  
 14885  type explain_cursor = explain_cursor1
 14886  
 14887  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14888  	var pNew uintptr
 14889  	var rc int32
 14890  
 14891  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 14892  		ts+4901)
 14893  	if rc == SQLITE_OK {
 14894  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 14895  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14896  		if pNew == uintptr(0) {
 14897  			return SQLITE_NOMEM
 14898  		}
 14899  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(explain_vtab{})))
 14900  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 14901  	}
 14902  	return rc
 14903  }
 14904  
 14905  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14906  	sqlite3.Xsqlite3_free(tls, pVtab)
 14907  	return SQLITE_OK
 14908  }
 14909  
 14910  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14911  	var pCur uintptr
 14912  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 14913  	if pCur == uintptr(0) {
 14914  		return SQLITE_NOMEM
 14915  	}
 14916  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(explain_cursor{})))
 14917  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 14918  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14919  	return SQLITE_OK
 14920  }
 14921  
 14922  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 14923  	var pCur uintptr = cur
 14924  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14925  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14926  	sqlite3.Xsqlite3_free(tls, pCur)
 14927  	return SQLITE_OK
 14928  }
 14929  
 14930  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 14931  	var pCur uintptr = cur
 14932  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14933  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 14934  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14935  	}
 14936  	return SQLITE_OK
 14937  }
 14938  
 14939  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 14940  	var pCur uintptr = cur
 14941  	if i == EXPLN_COLUMN_SQL {
 14942  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 14943  	} else {
 14944  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 14945  	}
 14946  	return SQLITE_OK
 14947  }
 14948  
 14949  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 14950  	var pCur uintptr = cur
 14951  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 14952  	return SQLITE_OK
 14953  }
 14954  
 14955  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 14956  	var pCur uintptr = cur
 14957  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 14958  }
 14959  
 14960  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14961  	bp := tls.Alloc(16)
 14962  	defer tls.Free(16)
 14963  
 14964  	var pCur uintptr = pVtabCursor
 14965  	var zSql uintptr = uintptr(0)
 14966  	var rc int32
 14967  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14968  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14969  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 14970  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 14971  		return SQLITE_OK
 14972  	}
 14973  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14974  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 14975  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 14976  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 14977  	}
 14978  	if zSql == uintptr(0) {
 14979  		rc = SQLITE_NOMEM
 14980  	} else {
 14981  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+12, uintptr(0))
 14982  		sqlite3.Xsqlite3_free(tls, zSql)
 14983  	}
 14984  	if rc != 0 {
 14985  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14986  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14987  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14988  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 14989  	} else {
 14990  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14991  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 14992  			rc = SQLITE_OK
 14993  		} else {
 14994  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14995  		}
 14996  	}
 14997  	return rc
 14998  }
 14999  
 15000  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15001  	var i int32
 15002  	var idx int32 = -1
 15003  	var unusable int32 = 0
 15004  
 15005  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 15006  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 15007  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 15008  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 15009  			continue
 15010  		}
 15011  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 15012  			unusable = 1
 15013  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 15014  			idx = i
 15015  		}
 15016  	}
 15017  	if idx >= 0 {
 15018  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15019  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15020  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 15021  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 15022  	} else if unusable != 0 {
 15023  		return SQLITE_CONSTRAINT
 15024  	}
 15025  	return SQLITE_OK
 15026  }
 15027  
 15028  var explainModule = sqlite3_module{
 15029  	FxConnect:    0,
 15030  	FxBestIndex:  0,
 15031  	FxDisconnect: 0,
 15032  	FxOpen:       0,
 15033  	FxClose:      0,
 15034  	FxFilter:     0,
 15035  	FxNext:       0,
 15036  	FxEof:        0,
 15037  	FxColumn:     0,
 15038  	FxRowid:      0,
 15039  }
 15040  
 15041  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 15042  	var rc int32 = SQLITE_OK
 15043  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 15044  	return rc
 15045  }
 15046  
 15047  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15048  	var rc int32 = SQLITE_OK
 15049  	_ = pApi
 15050  
 15051  	rc = sqlite3ExplainVtabInit(tls, db)
 15052  	return rc
 15053  }
 15054  
 15055  type flock = struct {
 15056  	Fl_type   int16
 15057  	Fl_whence int16
 15058  	Fl_start  int64
 15059  	Fl_len    int64
 15060  	Fl_pid    int32
 15061  }
 15062  
 15063  type useconds_t = uint32
 15064  
 15065  type intptr_t = int32
 15066  
 15067  type socklen_t = uint32
 15068  
 15069  type dirent = struct {
 15070  	Fd_ino       uint64
 15071  	Fd_off       int64
 15072  	Fd_reclen    uint16
 15073  	Fd_type      uint8
 15074  	Fd_name      [256]int8
 15075  	F__ccgo_pad1 [1]byte
 15076  }
 15077  
 15078  type timezone = struct {
 15079  	Ftz_minuteswest int32
 15080  	Ftz_dsttime     int32
 15081  }
 15082  
 15083  type itimerval = struct {
 15084  	Fit_interval struct {
 15085  		Ftv_sec  int32
 15086  		Ftv_usec int32
 15087  	}
 15088  	Fit_value struct {
 15089  		Ftv_sec  int32
 15090  		Ftv_usec int32
 15091  	}
 15092  }
 15093  
 15094  type tm = struct {
 15095  	Ftm_sec    int32
 15096  	Ftm_min    int32
 15097  	Ftm_hour   int32
 15098  	Ftm_mday   int32
 15099  	Ftm_mon    int32
 15100  	Ftm_year   int32
 15101  	Ftm_wday   int32
 15102  	Ftm_yday   int32
 15103  	Ftm_isdst  int32
 15104  	Ftm_gmtoff int32
 15105  	Ftm_zone   uintptr
 15106  }
 15107  
 15108  type itimerspec = struct {
 15109  	Fit_interval struct {
 15110  		Ftv_sec  int32
 15111  		Ftv_nsec int32
 15112  	}
 15113  	Fit_value struct {
 15114  		Ftv_sec  int32
 15115  		Ftv_nsec int32
 15116  	}
 15117  }
 15118  
 15119  type sigevent = struct {
 15120  	Fsigev_value  struct{ Fsival_int int32 }
 15121  	Fsigev_signo  int32
 15122  	Fsigev_notify int32
 15123  	F_sigev_un    struct{ F_pad [13]int32 }
 15124  }
 15125  
 15126  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 15127  	var in uintptr
 15128  	var nIn sqlite3_int64
 15129  	var pBuf uintptr
 15130  	var db uintptr
 15131  	var mxBlob int32
 15132  
 15133  	in = libc.Xfopen(tls, zName, ts+4402)
 15134  	if in == uintptr(0) {
 15135  		return
 15136  	}
 15137  	libc.Xfseek(tls, in, 0, SEEK_END)
 15138  	nIn = sqlite3_int64(libc.Xftell(tls, in))
 15139  	libc.Xrewind(tls, in)
 15140  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 15141  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 15142  	if nIn > sqlite3_int64(mxBlob) {
 15143  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 15144  		libc.Xfclose(tls, in)
 15145  		return
 15146  	}
 15147  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 15148  		if nIn != 0 {
 15149  			return uint64(nIn)
 15150  		}
 15151  		return uint64(1)
 15152  	}())
 15153  	if pBuf == uintptr(0) {
 15154  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15155  		libc.Xfclose(tls, in)
 15156  		return
 15157  	}
 15158  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint32(1), size_t(nIn), in)) {
 15159  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 15160  	} else {
 15161  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 15162  		sqlite3.Xsqlite3_free(tls, pBuf)
 15163  	}
 15164  	libc.Xfclose(tls, in)
 15165  }
 15166  
 15167  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15168  	var zName uintptr
 15169  	_ = argc
 15170  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15171  	if zName == uintptr(0) {
 15172  		return
 15173  	}
 15174  	readFileContents(tls, context, zName)
 15175  }
 15176  
 15177  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 15178  	var zMsg uintptr = uintptr(0)
 15179  	var ap va_list
 15180  	_ = ap
 15181  	ap = va
 15182  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15183  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 15184  	sqlite3.Xsqlite3_free(tls, zMsg)
 15185  	_ = ap
 15186  }
 15187  
 15188  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15189  	return libc.Xstat(tls, zPath, pStatBuf)
 15190  }
 15191  
 15192  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 15193  	return libc.Xlstat(tls, zPath, pStatBuf)
 15194  }
 15195  
 15196  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 15197  	bp := tls.Alloc(104)
 15198  	defer tls.Free(104)
 15199  
 15200  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 15201  	var rc int32 = SQLITE_OK
 15202  
 15203  	if zCopy == uintptr(0) {
 15204  		rc = SQLITE_NOMEM
 15205  	} else {
 15206  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 15207  		var i int32 = 1
 15208  
 15209  		for rc == SQLITE_OK {
 15210  			var rc2 int32
 15211  
 15212  			for ; int32(*(*int8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 15213  			}
 15214  			if i == nCopy {
 15215  				break
 15216  			}
 15217  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8(0)
 15218  
 15219  			rc2 = fileStat(tls, zCopy, bp+8)
 15220  			if rc2 != 0 {
 15221  				if libc.Xmkdir(tls, zCopy, uint32(0777)) != 0 {
 15222  					rc = SQLITE_ERROR
 15223  				}
 15224  			} else {
 15225  				if !((*stat)(unsafe.Pointer(bp+8)).Fst_mode&uint32(0170000) == uint32(0040000)) {
 15226  					rc = SQLITE_ERROR
 15227  				}
 15228  			}
 15229  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8('/')
 15230  			i++
 15231  		}
 15232  
 15233  		sqlite3.Xsqlite3_free(tls, zCopy)
 15234  	}
 15235  
 15236  	return rc
 15237  }
 15238  
 15239  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 15240  	bp := tls.Alloc(112)
 15241  	defer tls.Free(112)
 15242  
 15243  	if zFile == uintptr(0) {
 15244  		return 1
 15245  	}
 15246  	if mode&mode_t(0170000) == mode_t(0120000) {
 15247  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 15248  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 15249  			return 1
 15250  		}
 15251  	} else {
 15252  		if mode&mode_t(0170000) == mode_t(0040000) {
 15253  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 15254  				if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) != EEXIST ||
 15255  					0 != fileStat(tls, zFile, bp) ||
 15256  					!((*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0040000)) ||
 15257  					(*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0777) != mode&mode_t(0777) && 0 != libc.Xchmod(tls, zFile, mode&mode_t(0777)) {
 15258  					return 1
 15259  				}
 15260  			}
 15261  		} else {
 15262  			var nWrite sqlite3_int64 = int64(0)
 15263  			var z uintptr
 15264  			var rc int32 = 0
 15265  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 15266  			if out == uintptr(0) {
 15267  				return 1
 15268  			}
 15269  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 15270  			if z != 0 {
 15271  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint32(1), uint32(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 15272  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 15273  				if nWrite != n {
 15274  					rc = 1
 15275  				}
 15276  			}
 15277  			libc.Xfclose(tls, out)
 15278  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, mode&mode_t(0777)) != 0 {
 15279  				rc = 1
 15280  			}
 15281  			if rc != 0 {
 15282  				return 2
 15283  			}
 15284  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 15285  		}
 15286  	}
 15287  
 15288  	if mtime >= int64(0) {
 15289  		(*timeval)(unsafe.Pointer(bp + 96)).Ftv_usec = libc.AssignPtrInt32(bp+96+1*8+4, 0)
 15290  		(*timeval)(unsafe.Pointer(bp + 96)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 15291  		(*timeval)(unsafe.Pointer(bp + 96 + 1*8)).Ftv_sec = int32(mtime)
 15292  		if libc.Xutimes(tls, zFile, bp+96) != 0 {
 15293  			return 1
 15294  		}
 15295  	}
 15296  
 15297  	return 0
 15298  }
 15299  
 15300  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15301  	bp := tls.Alloc(24)
 15302  	defer tls.Free(24)
 15303  
 15304  	var zFile uintptr
 15305  	var mode mode_t = mode_t(0)
 15306  	var res int32
 15307  	var mtime sqlite3_int64 = int64(-1)
 15308  
 15309  	if argc < 2 || argc > 4 {
 15310  		sqlite3.Xsqlite3_result_error(tls, context,
 15311  			ts+4985, -1)
 15312  		return
 15313  	}
 15314  
 15315  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15316  	if zFile == uintptr(0) {
 15317  		return
 15318  	}
 15319  	if argc >= 3 {
 15320  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 15321  	}
 15322  	if argc == 4 {
 15323  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 15324  	}
 15325  
 15326  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*4)), mode, mtime)
 15327  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 15328  		if makeDirectory(tls, zFile) == SQLITE_OK {
 15329  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*4)), mode, mtime)
 15330  		}
 15331  	}
 15332  
 15333  	if argc > 2 && res != 0 {
 15334  		if mode&mode_t(0170000) == mode_t(0120000) {
 15335  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 15336  		} else if mode&mode_t(0170000) == mode_t(0040000) {
 15337  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 15338  		} else {
 15339  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 15340  		}
 15341  	}
 15342  }
 15343  
 15344  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 15345  	bp := tls.Alloc(16)
 15346  	defer tls.Free(16)
 15347  
 15348  	var i int32
 15349  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15350  
 15351  	_ = argc
 15352  	if iMode&0170000 == 0120000 {
 15353  		*(*int8)(unsafe.Pointer(bp)) = int8('l')
 15354  	} else if iMode&0170000 == 0100000 {
 15355  		*(*int8)(unsafe.Pointer(bp)) = int8('-')
 15356  	} else if iMode&0170000 == 0040000 {
 15357  		*(*int8)(unsafe.Pointer(bp)) = int8('d')
 15358  	} else {
 15359  		*(*int8)(unsafe.Pointer(bp)) = int8('?')
 15360  	}
 15361  	for i = 0; i < 3; i++ {
 15362  		var m int32 = iMode >> ((2 - i) * 3)
 15363  		var a uintptr = bp + uintptr(1+i*3)
 15364  		*(*int8)(unsafe.Pointer(a)) = func() int8 {
 15365  			if m&0x4 != 0 {
 15366  				return int8('r')
 15367  			}
 15368  			return int8('-')
 15369  		}()
 15370  		*(*int8)(unsafe.Pointer(a + 1)) = func() int8 {
 15371  			if m&0x2 != 0 {
 15372  				return int8('w')
 15373  			}
 15374  			return int8('-')
 15375  		}()
 15376  		*(*int8)(unsafe.Pointer(a + 2)) = func() int8 {
 15377  			if m&0x1 != 0 {
 15378  				return int8('x')
 15379  			}
 15380  			return int8('-')
 15381  		}()
 15382  	}
 15383  	*(*int8)(unsafe.Pointer(bp + 10)) = int8(0)
 15384  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 15385  }
 15386  
 15387  type fsdir_cursor1 = struct {
 15388  	Fbase  sqlite3_vtab_cursor
 15389  	FnLvl  int32
 15390  	FiLvl  int32
 15391  	FaLvl  uintptr
 15392  	FzBase uintptr
 15393  	FnBase int32
 15394  	FsStat struct {
 15395  		Fst_dev      uint64
 15396  		F__pad1      uint16
 15397  		F__ccgo_pad1 [2]byte
 15398  		F__st_ino    uint32
 15399  		Fst_mode     uint32
 15400  		Fst_nlink    uint32
 15401  		Fst_uid      uint32
 15402  		Fst_gid      uint32
 15403  		Fst_rdev     uint64
 15404  		F__pad2      uint16
 15405  		F__ccgo_pad2 [2]byte
 15406  		Fst_size     int64
 15407  		Fst_blksize  int32
 15408  		Fst_blocks   int64
 15409  		Fst_atim     struct {
 15410  			Ftv_sec  int32
 15411  			Ftv_nsec int32
 15412  		}
 15413  		Fst_mtim struct {
 15414  			Ftv_sec  int32
 15415  			Ftv_nsec int32
 15416  		}
 15417  		Fst_ctim struct {
 15418  			Ftv_sec  int32
 15419  			Ftv_nsec int32
 15420  		}
 15421  		Fst_ino uint64
 15422  	}
 15423  	FzPath  uintptr
 15424  	FiRowid sqlite3_int64
 15425  }
 15426  
 15427  type fsdir_cursor = fsdir_cursor1
 15428  type FsdirLevel1 = struct {
 15429  	FpDir uintptr
 15430  	FzDir uintptr
 15431  }
 15432  
 15433  type FsdirLevel = FsdirLevel1
 15434  
 15435  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 15436  
 15437  type fsdir_tab = fsdir_tab1
 15438  
 15439  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15440  	var pNew uintptr = uintptr(0)
 15441  	var rc int32
 15442  	_ = pAux
 15443  	_ = argc
 15444  	_ = argv
 15445  	_ = pzErr
 15446  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 15447  	if rc == SQLITE_OK {
 15448  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 15449  		if pNew == uintptr(0) {
 15450  			return SQLITE_NOMEM
 15451  		}
 15452  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(fsdir_tab{})))
 15453  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 15454  	}
 15455  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15456  	return rc
 15457  }
 15458  
 15459  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15460  	sqlite3.Xsqlite3_free(tls, pVtab)
 15461  	return SQLITE_OK
 15462  }
 15463  
 15464  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 15465  	var pCur uintptr
 15466  	_ = p
 15467  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 15468  	if pCur == uintptr(0) {
 15469  		return SQLITE_NOMEM
 15470  	}
 15471  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(fsdir_cursor{})))
 15472  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15473  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15474  	return SQLITE_OK
 15475  }
 15476  
 15477  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 15478  	var i int32
 15479  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 15480  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*8
 15481  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 15482  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15483  		}
 15484  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15485  	}
 15486  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15487  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 15488  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 15489  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15490  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 15491  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 15492  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 15493  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 15494  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15495  }
 15496  
 15497  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 15498  	var pCur uintptr = cur
 15499  
 15500  	fsdirResetCursor(tls, pCur)
 15501  	sqlite3.Xsqlite3_free(tls, pCur)
 15502  	return SQLITE_OK
 15503  }
 15504  
 15505  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 15506  	var ap va_list
 15507  	_ = ap
 15508  	ap = va
 15509  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 15510  	_ = ap
 15511  }
 15512  
 15513  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 15514  	bp := tls.Alloc(32)
 15515  	defer tls.Free(32)
 15516  
 15517  	var pCur uintptr = cur
 15518  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15519  
 15520  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15521  	if m&mode_t(0170000) == mode_t(0040000) {
 15522  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 15523  		var pLvl uintptr
 15524  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 15525  			var nNew int32 = iNew + 1
 15526  			var nByte sqlite3_int64 = sqlite3_int64(uint32(nNew) * uint32(unsafe.Sizeof(FsdirLevel{})))
 15527  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 15528  			if aNew == uintptr(0) {
 15529  				return SQLITE_NOMEM
 15530  			}
 15531  			libc.Xmemset(tls, aNew+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl)*8, 0, uint32(unsafe.Sizeof(FsdirLevel{}))*uint32(nNew-(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl))
 15532  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 15533  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 15534  		}
 15535  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15536  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*8
 15537  
 15538  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15539  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15540  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15541  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15542  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15543  			return SQLITE_ERROR
 15544  		}
 15545  	}
 15546  
 15547  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15548  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*8
 15549  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15550  		if pEntry != 0 {
 15551  			if int32(*(*int8)(unsafe.Pointer(pEntry + 19))) == '.' {
 15552  				if int32(*(*int8)(unsafe.Pointer(pEntry + 19 + 1))) == '.' && int32(*(*int8)(unsafe.Pointer(pEntry + 19 + 2))) == 0 {
 15553  					continue
 15554  				}
 15555  				if int32(*(*int8)(unsafe.Pointer(pEntry + 19 + 1))) == 0 {
 15556  					continue
 15557  				}
 15558  			}
 15559  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15560  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+19))
 15561  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15562  				return SQLITE_NOMEM
 15563  			}
 15564  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+24) != 0 {
 15565  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15566  				return SQLITE_ERROR
 15567  			}
 15568  			return SQLITE_OK
 15569  		}
 15570  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15571  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15572  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 15573  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 15574  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 15575  	}
 15576  
 15577  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15578  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15579  	return SQLITE_OK
 15580  }
 15581  
 15582  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15583  	bp := tls.Alloc(64)
 15584  	defer tls.Free(64)
 15585  
 15586  	var pCur uintptr = cur
 15587  	switch i {
 15588  	case FSDIR_COLUMN_NAME:
 15589  		{
 15590  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 15591  			break
 15592  
 15593  		}
 15594  
 15595  	case FSDIR_COLUMN_MODE:
 15596  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 15597  		break
 15598  
 15599  	case FSDIR_COLUMN_MTIME:
 15600  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec))
 15601  		break
 15602  
 15603  	case FSDIR_COLUMN_DATA:
 15604  		{
 15605  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15606  			if m&mode_t(0170000) == mode_t(0040000) {
 15607  				sqlite3.Xsqlite3_result_null(tls, ctx)
 15608  			} else if m&mode_t(0170000) == mode_t(0120000) {
 15609  				var aBuf uintptr = bp
 15610  				var nBuf sqlite3_int64 = int64(64)
 15611  				var n int32
 15612  
 15613  				for 1 != 0 {
 15614  					n = libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint32(nBuf))
 15615  					if sqlite3_int64(n) < nBuf {
 15616  						break
 15617  					}
 15618  					if aBuf != bp {
 15619  						sqlite3.Xsqlite3_free(tls, aBuf)
 15620  					}
 15621  					nBuf = nBuf * int64(2)
 15622  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 15623  					if aBuf == uintptr(0) {
 15624  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15625  						return SQLITE_NOMEM
 15626  					}
 15627  				}
 15628  
 15629  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 15630  				if aBuf != bp {
 15631  					sqlite3.Xsqlite3_free(tls, aBuf)
 15632  				}
 15633  			} else {
 15634  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15635  			}
 15636  
 15637  		}
 15638  		fallthrough
 15639  	case FSDIR_COLUMN_PATH:
 15640  		fallthrough
 15641  	default:
 15642  		{
 15643  			break
 15644  
 15645  		}
 15646  	}
 15647  	return SQLITE_OK
 15648  }
 15649  
 15650  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15651  	var pCur uintptr = cur
 15652  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 15653  	return SQLITE_OK
 15654  }
 15655  
 15656  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 15657  	var pCur uintptr = cur
 15658  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 15659  }
 15660  
 15661  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15662  	bp := tls.Alloc(32)
 15663  	defer tls.Free(32)
 15664  
 15665  	var zDir uintptr = uintptr(0)
 15666  	var pCur uintptr = cur
 15667  	_ = idxStr
 15668  	fsdirResetCursor(tls, pCur)
 15669  
 15670  	if idxNum == 0 {
 15671  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 15672  		return SQLITE_ERROR
 15673  	}
 15674  
 15675  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15676  	if zDir == uintptr(0) {
 15677  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 15678  		return SQLITE_ERROR
 15679  	}
 15680  	if argc == 2 {
 15681  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 15682  	}
 15683  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 15684  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 15685  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 15686  	} else {
 15687  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 15688  	}
 15689  
 15690  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15691  		return SQLITE_NOMEM
 15692  	}
 15693  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+24) != 0 {
 15694  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15695  		return SQLITE_ERROR
 15696  	}
 15697  
 15698  	return SQLITE_OK
 15699  }
 15700  
 15701  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15702  	var i int32
 15703  	var idxPath int32 = -1
 15704  	var idxDir int32 = -1
 15705  	var seenPath int32 = 0
 15706  	var seenDir int32 = 0
 15707  	var pConstraint uintptr
 15708  
 15709  	_ = tab
 15710  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15711  	i = 0
 15712  __1:
 15713  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15714  		goto __3
 15715  	}
 15716  	{
 15717  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 15718  			goto __2
 15719  		}
 15720  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 15721  		case FSDIR_COLUMN_PATH:
 15722  			{
 15723  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15724  					idxPath = i
 15725  					seenPath = 0
 15726  				} else if idxPath < 0 {
 15727  					seenPath = 1
 15728  				}
 15729  				break
 15730  
 15731  			}
 15732  		case FSDIR_COLUMN_DIR:
 15733  			{
 15734  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15735  					idxDir = i
 15736  					seenDir = 0
 15737  				} else if idxDir < 0 {
 15738  					seenDir = 1
 15739  				}
 15740  				break
 15741  
 15742  			}
 15743  		}
 15744  
 15745  	}
 15746  	goto __2
 15747  __2:
 15748  	i++
 15749  	pConstraint += 12
 15750  	goto __1
 15751  	goto __3
 15752  __3:
 15753  	;
 15754  	if seenPath != 0 || seenDir != 0 {
 15755  		return SQLITE_CONSTRAINT
 15756  	}
 15757  
 15758  	if idxPath < 0 {
 15759  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 15760  
 15761  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 15762  	} else {
 15763  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 15764  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 15765  		if idxDir >= 0 {
 15766  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 15767  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 15768  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 15769  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15770  		} else {
 15771  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15772  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 15773  		}
 15774  	}
 15775  
 15776  	return SQLITE_OK
 15777  }
 15778  
 15779  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 15780  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 15781  	return rc
 15782  }
 15783  
 15784  var fsdirModule1 = sqlite3_module{
 15785  	FxConnect:    0,
 15786  	FxBestIndex:  0,
 15787  	FxDisconnect: 0,
 15788  	FxOpen:       0,
 15789  	FxClose:      0,
 15790  	FxFilter:     0,
 15791  	FxNext:       0,
 15792  	FxEof:        0,
 15793  	FxColumn:     0,
 15794  	FxRowid:      0,
 15795  }
 15796  
 15797  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15798  	var rc int32 = SQLITE_OK
 15799  	_ = pApi
 15800  
 15801  	_ = pzErrMsg
 15802  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 15803  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15804  		*(*uintptr)(unsafe.Pointer(&struct {
 15805  			f func(*libc.TLS, uintptr, int32, uintptr)
 15806  		}{readfileFunc})), uintptr(0), uintptr(0))
 15807  	if rc == SQLITE_OK {
 15808  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 15809  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15810  			*(*uintptr)(unsafe.Pointer(&struct {
 15811  				f func(*libc.TLS, uintptr, int32, uintptr)
 15812  			}{writefileFunc})), uintptr(0), uintptr(0))
 15813  	}
 15814  	if rc == SQLITE_OK {
 15815  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 15816  			*(*uintptr)(unsafe.Pointer(&struct {
 15817  				f func(*libc.TLS, uintptr, int32, uintptr)
 15818  			}{lsModeFunc})), uintptr(0), uintptr(0))
 15819  	}
 15820  	if rc == SQLITE_OK {
 15821  		rc = fsdirRegister(tls, db)
 15822  	}
 15823  	return rc
 15824  }
 15825  
 15826  type fuzzer_vtab1 = struct {
 15827  	Fbase       sqlite3_vtab
 15828  	FzClassName uintptr
 15829  	FpRule      uintptr
 15830  	FnCursor    int32
 15831  }
 15832  
 15833  type fuzzer_vtab = fuzzer_vtab1
 15834  type fuzzer_cursor1 = struct {
 15835  	Fbase     sqlite3_vtab_cursor
 15836  	FiRowid   sqlite3_int64
 15837  	FpVtab    uintptr
 15838  	FrLimit   fuzzer_cost
 15839  	FpStem    uintptr
 15840  	FpDone    uintptr
 15841  	FaQueue   [20]uintptr
 15842  	FmxQueue  int32
 15843  	FzBuf     uintptr
 15844  	FnBuf     int32
 15845  	FnStem    int32
 15846  	FiRuleset int32
 15847  	FnullRule fuzzer_rule
 15848  	FapHash   [4001]uintptr
 15849  }
 15850  
 15851  type fuzzer_cursor = fuzzer_cursor1
 15852  type fuzzer_rule1 = struct {
 15853  	FpNext       uintptr
 15854  	FzFrom       uintptr
 15855  	FrCost       fuzzer_cost
 15856  	FnFrom       fuzzer_len
 15857  	FnTo         fuzzer_len
 15858  	F__ccgo_pad1 [2]byte
 15859  	FiRuleset    fuzzer_ruleid
 15860  	FzTo         [4]int8
 15861  }
 15862  
 15863  type fuzzer_rule = fuzzer_rule1
 15864  type fuzzer_stem1 = struct {
 15865  	FzBasis      uintptr
 15866  	FpRule       uintptr
 15867  	FpNext       uintptr
 15868  	FpHash       uintptr
 15869  	FrBaseCost   fuzzer_cost
 15870  	FrCostX      fuzzer_cost
 15871  	FnBasis      fuzzer_len
 15872  	Fn           fuzzer_len
 15873  	F__ccgo_pad1 [2]byte
 15874  }
 15875  
 15876  type fuzzer_stem = fuzzer_stem1
 15877  
 15878  type fuzzer_cost = int32
 15879  type fuzzer_len = int8
 15880  type fuzzer_ruleid = int32
 15881  
 15882  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15883  	bp := tls.Alloc(24)
 15884  	defer tls.Free(24)
 15885  
 15886  	var pTail uintptr
 15887  
 15888  	pTail = bp
 15889  	for pA != 0 && pB != 0 {
 15890  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 15891  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15892  			pTail = pA
 15893  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 15894  		} else {
 15895  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15896  			pTail = pB
 15897  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 15898  		}
 15899  	}
 15900  	if pA == uintptr(0) {
 15901  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15902  	} else {
 15903  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15904  	}
 15905  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 15906  }
 15907  
 15908  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 15909  	bp := tls.Alloc(48)
 15910  	defer tls.Free(48)
 15911  
 15912  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 15913  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 15914  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 15915  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 15916  
 15917  	var rc int32 = SQLITE_OK
 15918  	var nFrom int32
 15919  	var nTo int32
 15920  	var pRule uintptr = uintptr(0)
 15921  
 15922  	if zFrom == uintptr(0) {
 15923  		zFrom = ts + 584
 15924  	}
 15925  	if zTo == uintptr(0) {
 15926  		zTo = ts + 584
 15927  	}
 15928  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 15929  	nTo = int32(libc.Xstrlen(tls, zTo))
 15930  
 15931  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 15932  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 15933  		return SQLITE_OK
 15934  	}
 15935  
 15936  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 15937  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 15938  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 15939  		rc = SQLITE_ERROR
 15940  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 15941  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 15942  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 15943  		rc = SQLITE_ERROR
 15944  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 15945  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 15946  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 15947  		rc = SQLITE_ERROR
 15948  	} else {
 15949  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(fuzzer_rule{}))+uint32(nFrom)+uint32(nTo)))
 15950  		if pRule == uintptr(0) {
 15951  			rc = SQLITE_NOMEM
 15952  		} else {
 15953  			libc.Xmemset(tls, pRule, 0, uint32(unsafe.Sizeof(fuzzer_rule{})))
 15954  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 20
 15955  			*(*uintptr)(unsafe.Pointer(pRule + 4)) += uintptr(nTo + 1)
 15956  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 15957  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint32(nFrom+1))
 15958  			libc.Xmemcpy(tls, pRule+20, zTo, uint32(nTo+1))
 15959  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 15960  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 15961  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 15962  		}
 15963  	}
 15964  
 15965  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 15966  	return rc
 15967  }
 15968  
 15969  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 15970  	bp := tls.Alloc(124)
 15971  	defer tls.Free(124)
 15972  
 15973  	var rc int32 = SQLITE_OK
 15974  	var zSql uintptr
 15975  	var pHead uintptr = uintptr(0)
 15976  
 15977  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 15978  	if zSql == uintptr(0) {
 15979  		rc = SQLITE_NOMEM
 15980  	} else {
 15981  		var rc2 int32
 15982  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 15983  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 15984  		if rc != SQLITE_OK {
 15985  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3427, libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, sqlite3.Xsqlite3_errmsg(tls, db)))
 15986  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 15987  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 15988  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 15989  			rc = SQLITE_ERROR
 15990  		} else {
 15991  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 15992  				*(*uintptr)(unsafe.Pointer(bp + 60)) = uintptr(0)
 15993  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+60, pzErr)
 15994  				if *(*uintptr)(unsafe.Pointer(bp + 60)) != 0 {
 15995  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 60)))).FpNext = pHead
 15996  					pHead = *(*uintptr)(unsafe.Pointer(bp + 60))
 15997  				}
 15998  			}
 15999  		}
 16000  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 16001  		if rc == SQLITE_OK {
 16002  			rc = rc2
 16003  		}
 16004  	}
 16005  	sqlite3.Xsqlite3_free(tls, zSql)
 16006  
 16007  	if rc == SQLITE_OK {
 16008  		var i uint32
 16009  		var pX uintptr
 16010  
 16011  		for i = uint32(0); i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 16012  			*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = uintptr(0)
 16013  		}
 16014  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 16015  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 16016  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 16017  			for i = uint32(0); *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) != 0 && i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0)))-uint32(1); i++ {
 16018  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 16019  				*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = uintptr(0)
 16020  			}
 16021  			*(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 16022  		}
 16023  		pX = *(*uintptr)(unsafe.Pointer(bp + 64))
 16024  		i = uint32(1)
 16025  		for ; i < uint32(unsafe.Sizeof([15]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 16026  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 64 + uintptr(i)*4)), pX)
 16027  		}
 16028  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 16029  	} else {
 16030  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 16031  	}
 16032  
 16033  	return rc
 16034  }
 16035  
 16036  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 16037  	var nIn sqlite3_int64
 16038  	var zOut uintptr
 16039  
 16040  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 16041  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 16042  	if zOut != 0 {
 16043  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 16044  
 16045  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 16046  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 16047  		} else {
 16048  			var iOut int32 = 0
 16049  			var iIn int32
 16050  
 16051  			if int32(q) == '[' {
 16052  				q = int8(']')
 16053  			}
 16054  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 16055  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 16056  					iIn++
 16057  				}
 16058  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 16059  			}
 16060  		}
 16061  
 16062  	}
 16063  	return zOut
 16064  }
 16065  
 16066  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 16067  	var p uintptr = pVtab
 16068  
 16069  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 16070  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 16071  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16072  		sqlite3.Xsqlite3_free(tls, pRule)
 16073  	}
 16074  	sqlite3.Xsqlite3_free(tls, p)
 16075  	return SQLITE_OK
 16076  }
 16077  
 16078  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 16079  	bp := tls.Alloc(8)
 16080  	defer tls.Free(8)
 16081  
 16082  	var rc int32 = SQLITE_OK
 16083  	var pNew uintptr = uintptr(0)
 16084  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 16085  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 16086  
 16087  	if argc != 4 {
 16088  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 16089  			ts+5394, libc.VaList(bp, zModule))
 16090  		rc = SQLITE_ERROR
 16091  	} else {
 16092  		var nModule sqlite3_int64
 16093  
 16094  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 16095  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(sqlite3_int64(unsafe.Sizeof(fuzzer_vtab{}))+nModule+int64(1)))
 16096  		if pNew == uintptr(0) {
 16097  			rc = SQLITE_NOMEM
 16098  		} else {
 16099  			var zTab uintptr
 16100  
 16101  			libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(fuzzer_vtab{})))
 16102  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*24
 16103  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 16104  
 16105  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 16106  			if zTab == uintptr(0) {
 16107  				rc = SQLITE_NOMEM
 16108  			} else {
 16109  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 16110  				sqlite3.Xsqlite3_free(tls, zTab)
 16111  			}
 16112  
 16113  			if rc == SQLITE_OK {
 16114  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 16115  			}
 16116  			if rc != SQLITE_OK {
 16117  				fuzzerDisconnect(tls, pNew)
 16118  				pNew = uintptr(0)
 16119  			} else {
 16120  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 16121  			}
 16122  		}
 16123  	}
 16124  
 16125  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 16126  	return rc
 16127  }
 16128  
 16129  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 16130  	var p uintptr = pVTab
 16131  	var pCur uintptr
 16132  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 16133  	if pCur == uintptr(0) {
 16134  		return SQLITE_NOMEM
 16135  	}
 16136  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(fuzzer_cursor{})))
 16137  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 16138  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 16139  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 16140  	return SQLITE_OK
 16141  }
 16142  
 16143  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 16144  	for pStem != 0 {
 16145  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 16146  		sqlite3.Xsqlite3_free(tls, pStem)
 16147  		pStem = pNext
 16148  	}
 16149  }
 16150  
 16151  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 16152  	var i int32
 16153  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16154  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 16155  	for i = 0; i < FUZZER_NQUEUE; i++ {
 16156  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)))
 16157  	}
 16158  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16159  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 16160  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 16161  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16162  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 16163  		libc.Xmemset(tls, pCur+28, 0, uint32(unsafe.Sizeof([20]uintptr{})))
 16164  		libc.Xmemset(tls, pCur+152, 0, uint32(unsafe.Sizeof([4001]uintptr{})))
 16165  	}
 16166  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 16167  }
 16168  
 16169  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 16170  	var pCur uintptr = cur
 16171  	fuzzerClearCursor(tls, pCur, 0)
 16172  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16173  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 16174  	sqlite3.Xsqlite3_free(tls, pCur)
 16175  	return SQLITE_OK
 16176  }
 16177  
 16178  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 16179  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 16180  	var n int32
 16181  	var z uintptr
 16182  
 16183  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 16184  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 16185  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 16186  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 16187  			return SQLITE_NOMEM
 16188  		}
 16189  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 16190  	}
 16191  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 16192  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 16193  	if n < 0 {
 16194  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint32(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 16195  	} else {
 16196  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint32(n))
 16197  		libc.Xmemcpy(tls, z+uintptr(n), pRule+20, uint32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 16198  		libc.Xmemcpy(tls, z+uintptr(n+int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo)), (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis+uintptr(n+int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)),
 16199  			uint32(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 16200  	}
 16201  
 16202  	return SQLITE_OK
 16203  }
 16204  
 16205  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 16206  	var h uint32 = uint32(0)
 16207  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 16208  		h = h<<3 ^ h>>29 ^ uint32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 16209  	}
 16210  	return h % uint32(FUZZER_HASH)
 16211  }
 16212  
 16213  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 16214  	return libc.AssignPtrInt32(pStem+20, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 16215  }
 16216  
 16217  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16218  	var h uint32
 16219  	var pLookup uintptr
 16220  
 16221  	if fuzzerRender(tls, pStem, pCur+112, pCur+116) == SQLITE_NOMEM {
 16222  		return -1
 16223  	}
 16224  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 16225  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 152 + uintptr(h)*4))
 16226  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 16227  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 16228  	}
 16229  	return libc.Bool32(pLookup != uintptr(0))
 16230  }
 16231  
 16232  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 16233  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 16234  		int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) > FUZZER_MX_OUTPUT_LENGTH))
 16235  }
 16236  
 16237  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 16238  	var pRule uintptr
 16239  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 16240  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 16241  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 16242  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 16243  				libc.Xmemcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis+uintptr((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn), (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, uint32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)) == 0 {
 16244  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 16245  				if rc < 0 {
 16246  					return -1
 16247  				}
 16248  				if rc == 0 {
 16249  					fuzzerCost(tls, pStem)
 16250  					return 1
 16251  				}
 16252  			}
 16253  		}
 16254  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 16255  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16256  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16257  		}
 16258  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 16259  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 16260  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 16261  		}
 16262  	}
 16263  	return 0
 16264  }
 16265  
 16266  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 16267  	bp := tls.Alloc(28)
 16268  	defer tls.Free(28)
 16269  
 16270  	var pTail uintptr
 16271  
 16272  	pTail = bp
 16273  	for pA != 0 && pB != 0 {
 16274  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 16275  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16276  			pTail = pA
 16277  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 16278  		} else {
 16279  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16280  			pTail = pB
 16281  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 16282  		}
 16283  	}
 16284  	if pA == uintptr(0) {
 16285  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 16286  	} else {
 16287  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 16288  	}
 16289  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 16290  }
 16291  
 16292  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 16293  	var pBest uintptr
 16294  	var pX uintptr
 16295  	var iBest int32
 16296  	var i int32
 16297  
 16298  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 16299  		iBest = -1
 16300  		pBest = uintptr(0)
 16301  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16302  			pX = *(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4))
 16303  			if pX == uintptr(0) {
 16304  				continue
 16305  			}
 16306  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 16307  				pBest = pX
 16308  				iBest = i
 16309  			}
 16310  		}
 16311  		if pBest != 0 {
 16312  			*(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(iBest)*4)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 16313  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 16314  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 16315  		}
 16316  	}
 16317  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16318  }
 16319  
 16320  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 16321  	var pX uintptr
 16322  	var i int32
 16323  
 16324  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 16325  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16326  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 16327  		pNew = pX
 16328  	}
 16329  
 16330  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 16331  	pX = pNew
 16332  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 16333  		if *(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)) != 0 {
 16334  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)))
 16335  			*(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)) = uintptr(0)
 16336  		} else {
 16337  			*(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)) = pX
 16338  			break
 16339  		}
 16340  	}
 16341  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 16342  		if i < FUZZER_NQUEUE {
 16343  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 16344  			*(*uintptr)(unsafe.Pointer(pCur + 28 + uintptr(i)*4)) = pX
 16345  		} else {
 16346  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 28 + 19*4)))
 16347  			*(*uintptr)(unsafe.Pointer(pCur + 28 + 19*4)) = pX
 16348  		}
 16349  	}
 16350  
 16351  	return fuzzerLowestCostStem(tls, pCur)
 16352  }
 16353  
 16354  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 16355  	var pNew uintptr
 16356  	var pRule uintptr
 16357  	var h uint32
 16358  
 16359  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint32(1)))
 16360  	if pNew == uintptr(0) {
 16361  		return uintptr(0)
 16362  	}
 16363  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(fuzzer_stem{})))
 16364  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*28
 16365  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 16366  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint32(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 16367  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16368  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 16369  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 16370  	}
 16371  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 16372  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 16373  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+20, rBaseCost)
 16374  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 16375  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 152 + uintptr(h)*4))
 16376  	*(*uintptr)(unsafe.Pointer(pCur + 152 + uintptr(h)*4)) = pNew
 16377  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 16378  	return pNew
 16379  }
 16380  
 16381  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 16382  	var pCur uintptr = cur
 16383  	var rc int32
 16384  	var pStem uintptr
 16385  	var pNew uintptr
 16386  
 16387  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 16388  
 16389  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 16390  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 16391  		rc = fuzzerRender(tls, pStem, pCur+112, pCur+116)
 16392  		if rc == SQLITE_NOMEM {
 16393  			return SQLITE_NOMEM
 16394  		}
 16395  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 16396  		if pNew != 0 {
 16397  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 16398  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16399  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 16400  			} else {
 16401  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 16402  					return SQLITE_OK
 16403  				}
 16404  			}
 16405  		} else {
 16406  			return SQLITE_NOMEM
 16407  		}
 16408  	}
 16409  
 16410  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 16411  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 16412  		if res < 0 {
 16413  			return SQLITE_NOMEM
 16414  		} else if res > 0 {
 16415  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16416  			pStem = fuzzerInsert(tls, pCur, pStem)
 16417  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 16418  				if rc < 0 {
 16419  					return SQLITE_NOMEM
 16420  				}
 16421  				continue
 16422  			}
 16423  			return SQLITE_OK
 16424  		}
 16425  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 16426  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 16427  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 16428  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 16429  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 16430  			if rc < 0 {
 16431  				return SQLITE_NOMEM
 16432  			}
 16433  			if rc == 0 {
 16434  				return SQLITE_OK
 16435  			}
 16436  		}
 16437  	}
 16438  
 16439  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16440  	return SQLITE_OK
 16441  }
 16442  
 16443  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 16444  	var pCur uintptr = pVtabCursor
 16445  	var zWord uintptr = ts + 584
 16446  	var pStem uintptr
 16447  	var idx int32
 16448  
 16449  	fuzzerClearCursor(tls, pCur, 1)
 16450  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 16451  	idx = 0
 16452  	if idxNum&1 != 0 {
 16453  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16454  		idx++
 16455  	}
 16456  	if idxNum&2 != 0 {
 16457  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*4)))
 16458  		idx++
 16459  	}
 16460  	if idxNum&4 != 0 {
 16461  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*4)))
 16462  		idx++
 16463  	}
 16464  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 16465  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 16466  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 16467  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 16468  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 16469  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 16470  
 16471  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 16472  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 16473  		if pStem == uintptr(0) {
 16474  			return SQLITE_NOMEM
 16475  		}
 16476  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 128
 16477  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 16478  	} else {
 16479  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 16480  	}
 16481  
 16482  	return SQLITE_OK
 16483  }
 16484  
 16485  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 16486  	var pCur uintptr = cur
 16487  	if i == 0 {
 16488  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+112, pCur+116) == SQLITE_NOMEM {
 16489  			return SQLITE_NOMEM
 16490  		}
 16491  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 16492  	} else if i == 1 {
 16493  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 16494  	} else {
 16495  		sqlite3.Xsqlite3_result_null(tls, ctx)
 16496  	}
 16497  	return SQLITE_OK
 16498  }
 16499  
 16500  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 16501  	var pCur uintptr = cur
 16502  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 16503  	return SQLITE_OK
 16504  }
 16505  
 16506  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 16507  	var pCur uintptr = cur
 16508  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 16509  }
 16510  
 16511  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 16512  	var iPlan int32 = 0
 16513  	var iDistTerm int32 = -1
 16514  	var iRulesetTerm int32 = -1
 16515  	var i int32
 16516  	var seenMatch int32 = 0
 16517  	var pConstraint uintptr
 16518  	var rCost float64 = 1e12
 16519  
 16520  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 16521  	i = 0
 16522  __1:
 16523  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 16524  		goto __3
 16525  	}
 16526  	{
 16527  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16528  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16529  			seenMatch = 1
 16530  		}
 16531  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16532  			goto __2
 16533  		}
 16534  		if iPlan&1 == 0 &&
 16535  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16536  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16537  			iPlan = iPlan | 1
 16538  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16539  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16540  			rCost = rCost / 1e6
 16541  		}
 16542  		if iPlan&2 == 0 &&
 16543  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16544  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16545  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16546  			iPlan = iPlan | 2
 16547  			iDistTerm = i
 16548  			rCost = rCost / 10.0
 16549  		}
 16550  		if iPlan&4 == 0 &&
 16551  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 16552  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 16553  			iPlan = iPlan | 4
 16554  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16555  			iRulesetTerm = i
 16556  			rCost = rCost / 10.0
 16557  		}
 16558  
 16559  	}
 16560  	goto __2
 16561  __2:
 16562  	i++
 16563  	pConstraint += 12
 16564  	goto __1
 16565  	goto __3
 16566  __3:
 16567  	;
 16568  	if iPlan&2 != 0 {
 16569  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 16570  	}
 16571  	if iPlan&4 != 0 {
 16572  		var idx int32 = 1
 16573  		if iPlan&1 != 0 {
 16574  			idx++
 16575  		}
 16576  		if iPlan&2 != 0 {
 16577  			idx++
 16578  		}
 16579  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 16580  	}
 16581  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 16582  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 16583  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 16584  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 16585  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 16586  	}
 16587  	if seenMatch != 0 && iPlan&1 == 0 {
 16588  		rCost = 1e99
 16589  	}
 16590  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 16591  
 16592  	return SQLITE_OK
 16593  }
 16594  
 16595  var fuzzerModule = sqlite3_module{
 16596  	FxCreate:     0,
 16597  	FxConnect:    0,
 16598  	FxBestIndex:  0,
 16599  	FxDisconnect: 0,
 16600  	FxDestroy:    0,
 16601  	FxOpen:       0,
 16602  	FxClose:      0,
 16603  	FxFilter:     0,
 16604  	FxNext:       0,
 16605  	FxEof:        0,
 16606  	FxColumn:     0,
 16607  	FxRowid:      0,
 16608  }
 16609  
 16610  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16611  	var rc int32 = SQLITE_OK
 16612  	_ = pApi
 16613  
 16614  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 16615  	return rc
 16616  }
 16617  
 16618  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16619  	bp := tls.Alloc(156)
 16620  	defer tls.Free(156)
 16621  
 16622  	if argc == 1 {
 16623  		var m sqlite3_int64
 16624  
 16625  		var e int32
 16626  		var isNeg int32
 16627  
 16628  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16629  			uint32(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint32(unsafe.Sizeof(float64(0))) {
 16630  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16631  			var i uint32
 16632  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 16633  			for i = uint32(0); i < uint32(unsafe.Sizeof(float64(0))); i++ {
 16634  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16635  			}
 16636  			libc.Xmemcpy(tls, bp+16, bp+24, uint32(unsafe.Sizeof(float64(0))))
 16637  		} else {
 16638  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16639  		}
 16640  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 16641  			isNeg = 1
 16642  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 16643  		} else {
 16644  			isNeg = 0
 16645  		}
 16646  		libc.Xmemcpy(tls, bp+32, bp+16, uint32(unsafe.Sizeof(sqlite3_int64(0))))
 16647  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 16648  			e = 0
 16649  			m = int64(0)
 16650  		} else {
 16651  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 16652  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 16653  			if e == 0 {
 16654  				m <<= 1
 16655  			} else {
 16656  				m = m | int64(1)<<52
 16657  			}
 16658  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 16659  				m >>= 1
 16660  				e++
 16661  			}
 16662  			if isNeg != 0 {
 16663  				m = -m
 16664  			}
 16665  		}
 16666  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 16667  		case 0:
 16668  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+5490,
 16669  				libc.VaList(bp, m, e-1075))
 16670  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 16671  			break
 16672  			fallthrough
 16673  		case 1:
 16674  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 16675  			break
 16676  			fallthrough
 16677  		case 2:
 16678  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 16679  			break
 16680  		}
 16681  	} else {
 16682  		var m sqlite3_int64
 16683  		var e sqlite3_int64
 16684  
 16685  		var isNeg int32 = 0
 16686  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16687  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 16688  
 16689  		if e > int64(10000) {
 16690  			e = int64(10000)
 16691  		} else if e < int64(-10000) {
 16692  			e = int64(-10000)
 16693  		}
 16694  
 16695  		if m < int64(0) {
 16696  			isNeg = 1
 16697  			m = -m
 16698  			if m < int64(0) {
 16699  				return
 16700  			}
 16701  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 16702  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 16703  			return
 16704  		}
 16705  		for m>>32&int64(0xffe00000) != 0 {
 16706  			m >>= 1
 16707  			e++
 16708  		}
 16709  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 16710  			m <<= 1
 16711  			e--
 16712  		}
 16713  		e = e + int64(1075)
 16714  		if e <= int64(0) {
 16715  			if int64(1)-e >= int64(64) {
 16716  				m = int64(0)
 16717  			} else {
 16718  				m >>= int64(1) - e
 16719  			}
 16720  			e = int64(0)
 16721  		} else if e > int64(0x7ff) {
 16722  			e = int64(0x7ff)
 16723  		}
 16724  		*(*sqlite3_int64)(unsafe.Pointer(bp + 148)) = m & (int64(1)<<52 - int64(1))
 16725  		*(*sqlite3_int64)(unsafe.Pointer(bp + 148)) |= e << 52
 16726  		if isNeg != 0 {
 16727  			*(*sqlite3_int64)(unsafe.Pointer(bp + 148)) |= libc.Int64FromUint64(uint64(1) << 63)
 16728  		}
 16729  		libc.Xmemcpy(tls, bp+140, bp+148, uint32(unsafe.Sizeof(float64(0))))
 16730  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 140)))
 16731  	}
 16732  }
 16733  
 16734  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16735  	bp := tls.Alloc(16)
 16736  	defer tls.Free(16)
 16737  
 16738  	_ = argc
 16739  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16740  		uint32(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint32(unsafe.Sizeof(float64(0))) {
 16741  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16742  		var i uint32
 16743  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 16744  		for i = uint32(0); i < uint32(unsafe.Sizeof(float64(0))); i++ {
 16745  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16746  		}
 16747  		libc.Xmemcpy(tls, bp, bp+8, uint32(unsafe.Sizeof(float64(0))))
 16748  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 16749  	}
 16750  }
 16751  
 16752  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16753  	bp := tls.Alloc(24)
 16754  	defer tls.Free(24)
 16755  
 16756  	_ = argc
 16757  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 16758  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 16759  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16760  
 16761  		var i uint32
 16762  		libc.Xmemcpy(tls, bp, bp+8, uint32(unsafe.Sizeof(float64(0))))
 16763  		for i = uint32(1); i <= uint32(unsafe.Sizeof(float64(0))); i++ {
 16764  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint32(unsafe.Sizeof(float64(0)))-i))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 16765  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 16766  		}
 16767  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 16768  	}
 16769  }
 16770  
 16771  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16772  	var i uint32
 16773  	var rc int32 = SQLITE_OK
 16774  	_ = pApi
 16775  
 16776  	_ = pzErrMsg
 16777  	for i = uint32(0); i < uint32(unsafe.Sizeof(aFunc1))/uint32(unsafe.Sizeof(struct {
 16778  		FzFName uintptr
 16779  		FnArg   int32
 16780  		FiAux   int32
 16781  		FxFunc  uintptr
 16782  	}{})) && rc == SQLITE_OK; i++ {
 16783  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 16784  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 16785  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*16+8,
 16786  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 16787  	}
 16788  	return rc
 16789  }
 16790  
 16791  var aFunc1 = [6]struct {
 16792  	FzFName uintptr
 16793  	FnArg   int32
 16794  	FiAux   int32
 16795  	FxFunc  uintptr
 16796  }{
 16797  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 16798  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 16799  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 16800  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 16801  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 16802  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 16803  }
 16804  
 16805  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 16806  	bp := tls.Alloc(76)
 16807  	defer tls.Free(76)
 16808  
 16809  	var rc int32 = SQLITE_OK
 16810  	var zSql uintptr = uintptr(0)
 16811  	var pgsz int32 = 0
 16812  	var nTotal int32 = 0
 16813  
 16814  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 16815  		return SQLITE_MISUSE
 16816  	}
 16817  
 16818  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 16819  		libc.VaList(bp, func() uintptr {
 16820  			if zDb != 0 {
 16821  				return ts + 5624
 16822  			}
 16823  			return ts + 584
 16824  		}(), func() uintptr {
 16825  			if zDb != 0 {
 16826  				return zDb
 16827  			}
 16828  			return ts + 584
 16829  		}(), func() uintptr {
 16830  			if zDb != 0 {
 16831  				return ts + 5626
 16832  			}
 16833  			return ts + 584
 16834  		}()))
 16835  	if zSql == uintptr(0) {
 16836  		return SQLITE_NOMEM
 16837  	}
 16838  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 16839  	sqlite3.Xsqlite3_free(tls, zSql)
 16840  
 16841  	if rc == SQLITE_OK {
 16842  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 16843  			libc.VaList(bp+24, func() uintptr {
 16844  				if zDb != 0 {
 16845  					return ts + 5624
 16846  				}
 16847  				return ts + 584
 16848  			}(), func() uintptr {
 16849  				if zDb != 0 {
 16850  					return zDb
 16851  				}
 16852  				return ts + 584
 16853  			}(), func() uintptr {
 16854  				if zDb != 0 {
 16855  					return ts + 5626
 16856  				}
 16857  				return ts + 584
 16858  			}()))
 16859  		if zSql == uintptr(0) {
 16860  			rc = SQLITE_NOMEM
 16861  		} else {
 16862  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16863  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 16864  			sqlite3.Xsqlite3_free(tls, zSql)
 16865  			if rc == SQLITE_OK {
 16866  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 16867  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 16868  				}
 16869  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 16870  			}
 16871  			if rc == SQLITE_OK && pgsz == 0 {
 16872  				rc = SQLITE_ERROR
 16873  			}
 16874  		}
 16875  	}
 16876  
 16877  	if rc == SQLITE_OK {
 16878  		var rc2 int32
 16879  		*(*uintptr)(unsafe.Pointer(bp + 68)) = uintptr(0)
 16880  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+68)
 16881  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 68)))).FpMethods)).FiVersion >= 3 {
 16882  			var iPg sqlite3_int64 = int64(1)
 16883  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 68)))).FpMethods
 16884  			for 1 != 0 {
 16885  				rc = (*struct {
 16886  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 16887  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods)(unsafe.Pointer(p)).FxFetch})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 68)), sqlite3_int64(pgsz)*iPg, pgsz, bp+72)
 16888  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 72)) == uintptr(0) {
 16889  					break
 16890  				}
 16891  
 16892  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))))
 16893  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(pgsz-1))))
 16894  
 16895  				rc = (*struct {
 16896  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 16897  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods)(unsafe.Pointer(p)).FxUnfetch})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 68)), sqlite3_int64(pgsz)*iPg, *(*uintptr)(unsafe.Pointer(bp + 72)))
 16898  				if rc != SQLITE_OK {
 16899  					break
 16900  				}
 16901  				iPg++
 16902  			}
 16903  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 16904  				ts+5652, libc.VaList(bp+48, func() int64 {
 16905  					if iPg == int64(1) {
 16906  						return int64(0)
 16907  					}
 16908  					return iPg
 16909  				}(),
 16910  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 16911  		}
 16912  
 16913  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 16914  		if rc == SQLITE_OK {
 16915  			rc = rc2
 16916  		}
 16917  	}
 16918  
 16919  	return rc
 16920  }
 16921  
 16922  type nextCharContext1 = struct {
 16923  	Fdb           uintptr
 16924  	FpStmt        uintptr
 16925  	FzPrefix      uintptr
 16926  	FnPrefix      int32
 16927  	FnAlloc       int32
 16928  	FnUsed        int32
 16929  	FaResult      uintptr
 16930  	FmallocFailed int32
 16931  	FotherError   int32
 16932  }
 16933  
 16934  type nextCharContext = nextCharContext1
 16935  
 16936  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 16937  	var i int32
 16938  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 16939  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 16940  			return
 16941  		}
 16942  	}
 16943  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 16944  		var aNew uintptr
 16945  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 16946  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(uint32(n)*uint32(unsafe.Sizeof(uint32(0)))))
 16947  		if aNew == uintptr(0) {
 16948  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 16949  			return
 16950  		} else {
 16951  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 16952  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 16953  		}
 16954  	}
 16955  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 16956  }
 16957  
 16958  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 16959  	if c < uint32(0x00080) {
 16960  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 16961  		return 1
 16962  	}
 16963  	if c < uint32(0x00800) {
 16964  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 16965  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16966  		return 2
 16967  	}
 16968  	if c < uint32(0x10000) {
 16969  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 16970  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16971  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16972  		return 3
 16973  	}
 16974  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 16975  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 16976  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16977  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16978  	return 4
 16979  }
 16980  
 16981  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 16982  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 16983  	if c < uint32(0xc0) {
 16984  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16985  		return 1
 16986  	} else {
 16987  		var n int32 = 1
 16988  		c = uint32(validBits[c-uint32(0xc0)])
 16989  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 16990  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 16991  		}
 16992  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 16993  			c = uint32(0xFFFD)
 16994  		}
 16995  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16996  		return n
 16997  	}
 16998  	return int32(0)
 16999  }
 17000  
 17001  var validBits = [64]uint8{
 17002  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17003  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17004  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 17005  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 17006  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17007  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 17008  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 17009  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 17010  }
 17011  
 17012  func findNextChars(tls *libc.TLS, p uintptr) {
 17013  	bp := tls.Alloc(12)
 17014  	defer tls.Free(12)
 17015  
 17016  	var cPrev uint32 = uint32(0)
 17017  
 17018  	var n int32
 17019  	var rc int32
 17020  
 17021  	for {
 17022  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 17023  			uintptr(0))
 17024  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 17025  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 17026  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17027  		if rc == SQLITE_DONE {
 17028  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17029  			return
 17030  		} else if rc != SQLITE_ROW {
 17031  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 17032  			return
 17033  		} else {
 17034  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 17035  
 17036  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 17037  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 17038  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 17039  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 17040  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 17041  				return
 17042  			}
 17043  		}
 17044  	}
 17045  }
 17046  
 17047  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 17048  	bp := tls.Alloc(116)
 17049  	defer tls.Free(116)
 17050  
 17051  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 17052  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 17053  	var zWhere uintptr
 17054  	var zCollName uintptr
 17055  	var zWhereClause uintptr = uintptr(0)
 17056  	var zColl uintptr = uintptr(0)
 17057  	var zSql uintptr
 17058  	var rc int32
 17059  
 17060  	libc.Xmemset(tls, bp+80, 0, uint32(unsafe.Sizeof(nextCharContext{})))
 17061  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 17062  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17063  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17064  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 17065  		return
 17066  	}
 17067  	if argc >= 4 &&
 17068  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))) != uintptr(0) &&
 17069  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 17070  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 17071  		if zWhereClause == uintptr(0) {
 17072  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17073  			return
 17074  		}
 17075  	} else {
 17076  		zWhereClause = ts + 584
 17077  	}
 17078  	if argc >= 5 &&
 17079  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)))) != uintptr(0) &&
 17080  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 17081  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 17082  		if zColl == uintptr(0) {
 17083  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17084  			if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 17085  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 17086  			}
 17087  			return
 17088  		}
 17089  	} else {
 17090  		zColl = ts + 584
 17091  	}
 17092  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 17093  		ts+5728,
 17094  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 17095  	if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 17096  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 17097  	}
 17098  	if *(*int8)(unsafe.Pointer(zColl)) != 0 {
 17099  		sqlite3.Xsqlite3_free(tls, zColl)
 17100  	}
 17101  	if zSql == uintptr(0) {
 17102  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17103  		return
 17104  	}
 17105  
 17106  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+4, uintptr(0))
 17107  	sqlite3.Xsqlite3_free(tls, zSql)
 17108  	if rc != 0 {
 17109  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 17110  		return
 17111  	}
 17112  	findNextChars(tls, bp+80)
 17113  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 17114  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17115  	} else {
 17116  		var pRes uintptr
 17117  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 17118  		if pRes == uintptr(0) {
 17119  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 17120  		} else {
 17121  			var i int32
 17122  			var n int32 = 0
 17123  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 17124  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 17125  			}
 17126  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 17127  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 17128  		}
 17129  	}
 17130  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 17131  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 17132  }
 17133  
 17134  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17135  	var rc int32 = SQLITE_OK
 17136  	_ = pApi
 17137  
 17138  	_ = pzErrMsg
 17139  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 17140  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17141  		*(*uintptr)(unsafe.Pointer(&struct {
 17142  			f func(*libc.TLS, uintptr, int32, uintptr)
 17143  		}{nextCharFunc})), uintptr(0), uintptr(0))
 17144  	if rc == SQLITE_OK {
 17145  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 17146  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17147  			*(*uintptr)(unsafe.Pointer(&struct {
 17148  				f func(*libc.TLS, uintptr, int32, uintptr)
 17149  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17150  	}
 17151  	if rc == SQLITE_OK {
 17152  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 17153  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17154  			*(*uintptr)(unsafe.Pointer(&struct {
 17155  				f func(*libc.TLS, uintptr, int32, uintptr)
 17156  			}{nextCharFunc})), uintptr(0), uintptr(0))
 17157  	}
 17158  	return rc
 17159  }
 17160  
 17161  var aiClass = [256]uint8{
 17162  	uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(7), uint8(7), uint8(27), uint8(7), uint8(7), uint8(27), uint8(27),
 17163  	uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27), uint8(27),
 17164  	uint8(7), uint8(15), uint8(8), uint8(5), uint8(4), uint8(22), uint8(24), uint8(8), uint8(17), uint8(18), uint8(21), uint8(20), uint8(23), uint8(11), uint8(26), uint8(16),
 17165  	uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(3), uint8(5), uint8(19), uint8(12), uint8(14), uint8(13), uint8(6),
 17166  	uint8(5), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1),
 17167  	uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(0), uint8(1), uint8(1), uint8(9), uint8(27), uint8(27), uint8(27), uint8(1),
 17168  	uint8(8), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1),
 17169  	uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(1), uint8(0), uint8(1), uint8(1), uint8(27), uint8(10), uint8(27), uint8(25), uint8(27),
 17170  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17171  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17172  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17173  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17174  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17175  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17176  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17177  	uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2), uint8(2),
 17178  }
 17179  
 17180  var sqlite3UpperToLower = [256]uint8{
 17181  	uint8(0), uint8(1), uint8(2), uint8(3), uint8(4), uint8(5), uint8(6), uint8(7), uint8(8), uint8(9), uint8(10), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(17),
 17182  	uint8(18), uint8(19), uint8(20), uint8(21), uint8(22), uint8(23), uint8(24), uint8(25), uint8(26), uint8(27), uint8(28), uint8(29), uint8(30), uint8(31), uint8(32), uint8(33), uint8(34), uint8(35),
 17183  	uint8(36), uint8(37), uint8(38), uint8(39), uint8(40), uint8(41), uint8(42), uint8(43), uint8(44), uint8(45), uint8(46), uint8(47), uint8(48), uint8(49), uint8(50), uint8(51), uint8(52), uint8(53),
 17184  	uint8(54), uint8(55), uint8(56), uint8(57), uint8(58), uint8(59), uint8(60), uint8(61), uint8(62), uint8(63), uint8(64), uint8(97), uint8(98), uint8(99), uint8(100), uint8(101), uint8(102), uint8(103),
 17185  	uint8(104), uint8(105), uint8(106), uint8(107), uint8(108), uint8(109), uint8(110), uint8(111), uint8(112), uint8(113), uint8(114), uint8(115), uint8(116), uint8(117), uint8(118), uint8(119), uint8(120), uint8(121),
 17186  	uint8(122), uint8(91), uint8(92), uint8(93), uint8(94), uint8(95), uint8(96), uint8(97), uint8(98), uint8(99), uint8(100), uint8(101), uint8(102), uint8(103), uint8(104), uint8(105), uint8(106), uint8(107),
 17187  	uint8(108), uint8(109), uint8(110), uint8(111), uint8(112), uint8(113), uint8(114), uint8(115), uint8(116), uint8(117), uint8(118), uint8(119), uint8(120), uint8(121), uint8(122), uint8(123), uint8(124), uint8(125),
 17188  	uint8(126), uint8(127), uint8(128), uint8(129), uint8(130), uint8(131), uint8(132), uint8(133), uint8(134), uint8(135), uint8(136), uint8(137), uint8(138), uint8(139), uint8(140), uint8(141), uint8(142), uint8(143),
 17189  	uint8(144), uint8(145), uint8(146), uint8(147), uint8(148), uint8(149), uint8(150), uint8(151), uint8(152), uint8(153), uint8(154), uint8(155), uint8(156), uint8(157), uint8(158), uint8(159), uint8(160), uint8(161),
 17190  	uint8(162), uint8(163), uint8(164), uint8(165), uint8(166), uint8(167), uint8(168), uint8(169), uint8(170), uint8(171), uint8(172), uint8(173), uint8(174), uint8(175), uint8(176), uint8(177), uint8(178), uint8(179),
 17191  	uint8(180), uint8(181), uint8(182), uint8(183), uint8(184), uint8(185), uint8(186), uint8(187), uint8(188), uint8(189), uint8(190), uint8(191), uint8(192), uint8(193), uint8(194), uint8(195), uint8(196), uint8(197),
 17192  	uint8(198), uint8(199), uint8(200), uint8(201), uint8(202), uint8(203), uint8(204), uint8(205), uint8(206), uint8(207), uint8(208), uint8(209), uint8(210), uint8(211), uint8(212), uint8(213), uint8(214), uint8(215),
 17193  	uint8(216), uint8(217), uint8(218), uint8(219), uint8(220), uint8(221), uint8(222), uint8(223), uint8(224), uint8(225), uint8(226), uint8(227), uint8(228), uint8(229), uint8(230), uint8(231), uint8(232), uint8(233),
 17194  	uint8(234), uint8(235), uint8(236), uint8(237), uint8(238), uint8(239), uint8(240), uint8(241), uint8(242), uint8(243), uint8(244), uint8(245), uint8(246), uint8(247), uint8(248), uint8(249), uint8(250), uint8(251),
 17195  	uint8(252), uint8(253), uint8(254), uint8(255),
 17196  }
 17197  
 17198  var sqlite3CtypeMap = [256]uint8{
 17199  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17200  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 17201  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17202  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17203  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 17204  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17205  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 17206  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17207  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 17208  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17209  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 17210  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 17211  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 17212  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17213  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 17214  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 17215  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17216  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17217  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17218  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17219  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17220  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17221  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17222  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17223  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17224  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17225  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17226  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17227  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17228  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17229  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17230  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 17231  }
 17232  
 17233  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 17234  	var i int32
 17235  	var c int32
 17236  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 17237  	case CC_SPACE:
 17238  		{
 17239  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 17240  			}
 17241  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17242  			return i
 17243  
 17244  		}
 17245  	case CC_MINUS:
 17246  		{
 17247  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 17248  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 17249  				}
 17250  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17251  				return i
 17252  			}
 17253  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17254  			return 1
 17255  
 17256  		}
 17257  	case CC_LP:
 17258  		{
 17259  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17260  			return 1
 17261  
 17262  		}
 17263  	case CC_RP:
 17264  		{
 17265  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17266  			return 1
 17267  
 17268  		}
 17269  	case CC_SEMI:
 17270  		{
 17271  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17272  			return 1
 17273  
 17274  		}
 17275  	case CC_PLUS:
 17276  		{
 17277  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17278  			return 1
 17279  
 17280  		}
 17281  	case CC_STAR:
 17282  		{
 17283  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17284  			return 1
 17285  
 17286  		}
 17287  	case CC_SLASH:
 17288  		{
 17289  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 17290  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17291  				return 1
 17292  			}
 17293  			i = 3
 17294  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 17295  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17296  			}
 17297  			if c != 0 {
 17298  				i++
 17299  			}
 17300  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 17301  			return i
 17302  
 17303  		}
 17304  	case CC_PERCENT:
 17305  		{
 17306  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17307  			return 1
 17308  
 17309  		}
 17310  	case CC_EQ:
 17311  		{
 17312  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17313  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 17314  
 17315  		}
 17316  	case CC_LT:
 17317  		{
 17318  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17319  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17320  				return 2
 17321  			} else if c == '>' {
 17322  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17323  				return 2
 17324  			} else if c == '<' {
 17325  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17326  				return 2
 17327  			} else {
 17328  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17329  				return 1
 17330  			}
 17331  
 17332  		}
 17333  		fallthrough
 17334  	case CC_GT:
 17335  		{
 17336  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 17337  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17338  				return 2
 17339  			} else if c == '>' {
 17340  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17341  				return 2
 17342  			} else {
 17343  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17344  				return 1
 17345  			}
 17346  
 17347  		}
 17348  		fallthrough
 17349  	case CC_BANG:
 17350  		{
 17351  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 17352  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17353  				return 1
 17354  			} else {
 17355  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17356  				return 2
 17357  			}
 17358  
 17359  		}
 17360  		fallthrough
 17361  	case CC_PIPE:
 17362  		{
 17363  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 17364  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17365  				return 1
 17366  			} else {
 17367  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17368  				return 2
 17369  			}
 17370  
 17371  		}
 17372  		fallthrough
 17373  	case CC_COMMA:
 17374  		{
 17375  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17376  			return 1
 17377  
 17378  		}
 17379  	case CC_AND:
 17380  		{
 17381  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17382  			return 1
 17383  
 17384  		}
 17385  	case CC_TILDA:
 17386  		{
 17387  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17388  			return 1
 17389  
 17390  		}
 17391  	case CC_QUOTE:
 17392  		{
 17393  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 17394  
 17395  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17396  				if c == delim {
 17397  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 17398  						i++
 17399  					} else {
 17400  						break
 17401  					}
 17402  				}
 17403  			}
 17404  			if c == '\'' {
 17405  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17406  				return i + 1
 17407  			} else if c != 0 {
 17408  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17409  				return i + 1
 17410  			} else {
 17411  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17412  				return i
 17413  			}
 17414  
 17415  		}
 17416  		fallthrough
 17417  	case CC_DOT:
 17418  		{
 17419  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 17420  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 17421  				return 1
 17422  			}
 17423  
 17424  		}
 17425  		fallthrough
 17426  	case CC_DIGIT:
 17427  		{
 17428  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17429  			if int32(*(*uint8)(unsafe.Pointer(z))) == '0' && (int32(*(*uint8)(unsafe.Pointer(z + 1))) == 'x' || int32(*(*uint8)(unsafe.Pointer(z + 1))) == 'X') && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 2))])&0x08 != 0 {
 17430  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17431  				}
 17432  				return i
 17433  			}
 17434  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17435  			}
 17436  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 17437  				i++
 17438  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17439  					i++
 17440  				}
 17441  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17442  			}
 17443  			if (int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == 'e' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == 'E') && (int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))])&0x04 != 0 ||
 17444  				(int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == '+' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == '-') && int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i+2)))])&0x04 != 0) {
 17445  				i = i + 2
 17446  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 17447  					i++
 17448  				}
 17449  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17450  			}
 17451  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17452  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17453  				i++
 17454  			}
 17455  			return i
 17456  
 17457  		}
 17458  	case CC_QUOTE2:
 17459  		{
 17460  			i = 1
 17461  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 17462  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17463  			}
 17464  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 17465  				if c == ']' {
 17466  					return TK_NAME
 17467  				}
 17468  				return TK_ERROR
 17469  			}()
 17470  			return i
 17471  
 17472  		}
 17473  	case CC_VARNUM:
 17474  		{
 17475  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17476  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 17477  			}
 17478  			return i
 17479  
 17480  		}
 17481  	case CC_DOLLAR:
 17482  		fallthrough
 17483  	case CC_VARALPHA:
 17484  		{
 17485  			var n int32 = 0
 17486  
 17487  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17488  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 17489  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 17490  					n++
 17491  				} else if c == '(' && n > 0 {
 17492  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 17493  						i++
 17494  					}
 17495  					if c == ')' {
 17496  						i++
 17497  					} else {
 17498  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17499  					}
 17500  					break
 17501  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 17502  					i++
 17503  				} else {
 17504  					break
 17505  				}
 17506  			}
 17507  			if n == 0 {
 17508  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17509  			}
 17510  			return i
 17511  
 17512  		}
 17513  	case CC_KYWD:
 17514  		{
 17515  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 17516  			}
 17517  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17518  				i++
 17519  				break
 17520  			}
 17521  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17522  			return i
 17523  
 17524  		}
 17525  	case CC_X:
 17526  		{
 17527  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 17528  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17529  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17530  				}
 17531  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17532  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17533  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17534  						i++
 17535  					}
 17536  				}
 17537  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17538  					i++
 17539  				}
 17540  				return i
 17541  			}
 17542  
 17543  		}
 17544  		fallthrough
 17545  	case CC_ID:
 17546  		{
 17547  			i = 1
 17548  			break
 17549  
 17550  		}
 17551  	default:
 17552  		{
 17553  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17554  			return 1
 17555  
 17556  		}
 17557  	}
 17558  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17559  		i++
 17560  	}
 17561  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17562  	return i
 17563  }
 17564  
 17565  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 17566  	bp := tls.Alloc(4)
 17567  	defer tls.Free(4)
 17568  
 17569  	var z uintptr
 17570  	var nZ sqlite3_int64
 17571  	var nSql sqlite3_int64
 17572  	var i int32
 17573  	var j int32
 17574  
 17575  	var n int32
 17576  	var k int32
 17577  
 17578  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 17579  	nZ = nSql
 17580  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 17581  	if z == uintptr(0) {
 17582  		return uintptr(0)
 17583  	}
 17584  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 17585  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 17586  		switch *(*int32)(unsafe.Pointer(bp)) {
 17587  		case TK_SPACE:
 17588  			{
 17589  				break
 17590  
 17591  			}
 17592  		case TK_ERROR:
 17593  			{
 17594  				sqlite3.Xsqlite3_free(tls, z)
 17595  				return uintptr(0)
 17596  
 17597  			}
 17598  		case TK_LITERAL:
 17599  			{
 17600  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17601  				break
 17602  
 17603  			}
 17604  		case TK_PUNCT:
 17605  			fallthrough
 17606  		case TK_NAME:
 17607  			{
 17608  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 17609  					if j >= 3 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(2), ts+5851, uint32(2)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-3))))])&0x46 != 0) ||
 17610  						j >= 4 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(3), ts+5854, uint32(3)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-4))))])&0x46 != 0) {
 17611  					} else {
 17612  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17613  						break
 17614  					}
 17615  				}
 17616  				if j > 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-1))))])&0x46 != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i))))])&0x46 != 0 {
 17617  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(' ')
 17618  				}
 17619  				for k = 0; k < n; k++ {
 17620  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(sqlite3UpperToLower[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i+k))))])
 17621  				}
 17622  				break
 17623  
 17624  			}
 17625  		}
 17626  	}
 17627  	for j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 17628  		j--
 17629  	}
 17630  	if j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 17631  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(';')
 17632  	}
 17633  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17634  
 17635  	for i = 0; i < j; i = n {
 17636  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 17637  		var nParen int32
 17638  		if zIn == uintptr(0) {
 17639  			break
 17640  		}
 17641  		n = (int32(zIn)-int32(z))/1 + 3
 17642  		if n != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1))))])&0x46 != 0 {
 17643  			continue
 17644  		}
 17645  		if libc.Xstrncmp(tls, zIn, ts+5862, uint32(9)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 9)))])&0x46 != 0) {
 17646  			continue
 17647  		}
 17648  		if libc.Xstrncmp(tls, zIn, ts+5872, uint32(7)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 7)))])&0x46 != 0) {
 17649  			continue
 17650  		}
 17651  		nParen = 1
 17652  		k = 0
 17653  		for ; *(*int8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 17654  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 17655  				nParen++
 17656  			}
 17657  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 17658  				nParen--
 17659  				if nParen == 0 {
 17660  					break
 17661  				}
 17662  			}
 17663  		}
 17664  
 17665  		if k < 5 {
 17666  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 17667  			if z == uintptr(0) {
 17668  				return uintptr(0)
 17669  			}
 17670  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint32(j-(n+k)))
 17671  		} else if k > 5 {
 17672  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint32(j-(n+k)))
 17673  		}
 17674  		j = j - k + 5
 17675  		*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17676  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint32(5))
 17677  	}
 17678  	return z
 17679  }
 17680  
 17681  type Percentile1 = struct {
 17682  	FnAlloc uint32
 17683  	FnUsed  uint32
 17684  	FrPct   float64
 17685  	Fa      uintptr
 17686  }
 17687  
 17688  type Percentile = Percentile1
 17689  
 17690  func isInfinity(tls *libc.TLS, r float64) int32 {
 17691  	bp := tls.Alloc(16)
 17692  	defer tls.Free(16)
 17693  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 17694  
 17695  	libc.Xmemcpy(tls, bp, bp+8, uint32(unsafe.Sizeof(sqlite3_uint64(0))))
 17696  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 17697  }
 17698  
 17699  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 17700  	a = a - b
 17701  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 17702  }
 17703  
 17704  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 17705  	var p uintptr
 17706  	var rPct float64
 17707  	var eType int32
 17708  	var y float64
 17709  
 17710  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 17711  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 17712  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 17713  		rPct < 0.0 || rPct > 100.0 {
 17714  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17715  			ts+5886, -1)
 17716  		return
 17717  	}
 17718  
 17719  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 17720  	if p == uintptr(0) {
 17721  		return
 17722  	}
 17723  
 17724  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 17725  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 17726  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 17727  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17728  			ts+5953, -1)
 17729  		return
 17730  	}
 17731  
 17732  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17733  	if eType == SQLITE_NULL {
 17734  		return
 17735  	}
 17736  
 17737  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 17738  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17739  			ts+6017, -1)
 17740  		return
 17741  	}
 17742  
 17743  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17744  	if isInfinity(tls, y) != 0 {
 17745  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 17746  		return
 17747  	}
 17748  
 17749  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 17750  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 17751  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(uint32(unsafe.Sizeof(float64(0)))*n))
 17752  		if a == uintptr(0) {
 17753  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17754  			libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(Percentile{})))
 17755  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 17756  			return
 17757  		}
 17758  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 17759  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 17760  	}
 17761  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 17762  }
 17763  
 17764  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 17765  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 17766  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 17767  	if a == b {
 17768  		return 0
 17769  	}
 17770  	if a < b {
 17771  		return -1
 17772  	}
 17773  	return +1
 17774  }
 17775  
 17776  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 17777  	var p uintptr
 17778  	var i1 uint32
 17779  	var i2 uint32
 17780  	var v1 float64
 17781  	var v2 float64
 17782  	var ix float64
 17783  	var vx float64
 17784  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 17785  	if p == uintptr(0) {
 17786  		return
 17787  	}
 17788  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 17789  		return
 17790  	}
 17791  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 17792  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, (*Percentile)(unsafe.Pointer(p)).FnUsed, uint32(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 17793  			f func(*libc.TLS, uintptr, uintptr) int32
 17794  		}{doubleCmp})))
 17795  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 17796  		i1 = uint32(ix)
 17797  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 17798  			i2 = i1
 17799  		} else {
 17800  			i2 = i1 + uint32(1)
 17801  		}
 17802  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 17803  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 17804  		vx = v1 + (v2-v1)*(ix-float64(i1))
 17805  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 17806  	}
 17807  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17808  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(Percentile{})))
 17809  }
 17810  
 17811  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17812  	var rc int32 = SQLITE_OK
 17813  	_ = pApi
 17814  
 17815  	_ = pzErrMsg
 17816  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 17817  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17818  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17819  			f func(*libc.TLS, uintptr, int32, uintptr)
 17820  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 17821  	return rc
 17822  }
 17823  
 17824  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 17825  
 17826  type prefixes_vtab = prefixes_vtab1
 17827  
 17828  type prefixes_cursor1 = struct {
 17829  	Fbase   sqlite3_vtab_cursor
 17830  	FiRowid sqlite3_int64
 17831  	FzStr   uintptr
 17832  	FnStr   int32
 17833  }
 17834  
 17835  type prefixes_cursor = prefixes_cursor1
 17836  
 17837  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17838  	var pNew uintptr
 17839  	var rc int32
 17840  
 17841  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17842  		ts+6098)
 17843  	if rc == SQLITE_OK {
 17844  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 17845  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17846  		if pNew == uintptr(0) {
 17847  			return SQLITE_NOMEM
 17848  		}
 17849  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(prefixes_vtab{})))
 17850  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 17851  	}
 17852  	return rc
 17853  }
 17854  
 17855  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17856  	var p uintptr = pVtab
 17857  	sqlite3.Xsqlite3_free(tls, p)
 17858  	return SQLITE_OK
 17859  }
 17860  
 17861  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17862  	var pCur uintptr
 17863  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 17864  	if pCur == uintptr(0) {
 17865  		return SQLITE_NOMEM
 17866  	}
 17867  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(prefixes_cursor{})))
 17868  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17869  	return SQLITE_OK
 17870  }
 17871  
 17872  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 17873  	var pCur uintptr = cur
 17874  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17875  	sqlite3.Xsqlite3_free(tls, pCur)
 17876  	return SQLITE_OK
 17877  }
 17878  
 17879  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 17880  	var pCur uintptr = cur
 17881  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 17882  	return SQLITE_OK
 17883  }
 17884  
 17885  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17886  	var pCur uintptr = cur
 17887  	switch i {
 17888  	case 0:
 17889  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr-int32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid),
 17890  			uintptr(0))
 17891  		break
 17892  	default:
 17893  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 17894  		break
 17895  	}
 17896  	return SQLITE_OK
 17897  }
 17898  
 17899  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17900  	var pCur uintptr = cur
 17901  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 17902  	return SQLITE_OK
 17903  }
 17904  
 17905  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 17906  	var pCur uintptr = cur
 17907  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 17908  }
 17909  
 17910  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17911  	bp := tls.Alloc(8)
 17912  	defer tls.Free(8)
 17913  
 17914  	var pCur uintptr = pVtabCursor
 17915  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17916  	if argc > 0 {
 17917  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 17918  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 17919  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 17920  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 17921  			}
 17922  			return 0
 17923  		}()
 17924  	} else {
 17925  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 17926  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 17927  	}
 17928  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17929  	return SQLITE_OK
 17930  }
 17931  
 17932  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17933  	var i int32
 17934  	var p uintptr
 17935  
 17936  	i = 0
 17937  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 17938  __1:
 17939  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 17940  		goto __3
 17941  	}
 17942  	{
 17943  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 17944  			goto __2
 17945  		}
 17946  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 17947  			goto __2
 17948  		}
 17949  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 17950  			goto __2
 17951  		}
 17952  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 17953  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17954  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17955  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17956  		return SQLITE_OK
 17957  
 17958  	}
 17959  	goto __2
 17960  __2:
 17961  	i++
 17962  	p += 12
 17963  	goto __1
 17964  	goto __3
 17965  __3:
 17966  	;
 17967  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 17968  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 17969  	return SQLITE_OK
 17970  }
 17971  
 17972  var prefixesModule = sqlite3_module{
 17973  	FxConnect:    0,
 17974  	FxBestIndex:  0,
 17975  	FxDisconnect: 0,
 17976  	FxOpen:       0,
 17977  	FxClose:      0,
 17978  	FxFilter:     0,
 17979  	FxNext:       0,
 17980  	FxEof:        0,
 17981  	FxColumn:     0,
 17982  	FxRowid:      0,
 17983  }
 17984  
 17985  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 17986  	var nByte int32
 17987  	var nRet int32 = 0
 17988  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17989  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*4)))
 17990  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17991  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*4)))
 17992  	var i int32
 17993  
 17994  	nByte = func() int32 {
 17995  		if nL > nR {
 17996  			return nL
 17997  		}
 17998  		return nR
 17999  	}()
 18000  	for i = 0; i < nByte; i++ {
 18001  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 18002  			break
 18003  		}
 18004  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 18005  			nRet++
 18006  		}
 18007  	}
 18008  
 18009  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 18010  		nRet--
 18011  	}
 18012  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 18013  }
 18014  
 18015  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18016  	var rc int32 = SQLITE_OK
 18017  	_ = pApi
 18018  
 18019  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 18020  	if rc == SQLITE_OK {
 18021  		rc = sqlite3.Xsqlite3_create_function(tls,
 18022  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18023  				f func(*libc.TLS, uintptr, int32, uintptr)
 18024  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 18025  	}
 18026  	return rc
 18027  }
 18028  
 18029  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 18030  
 18031  type qpvtab_vtab = qpvtab_vtab1
 18032  
 18033  type qpvtab_cursor1 = struct {
 18034  	Fbase   sqlite3_vtab_cursor
 18035  	FiRowid sqlite3_int64
 18036  	FzData  uintptr
 18037  	FnData  int32
 18038  	Fflags  int32
 18039  }
 18040  
 18041  type qpvtab_cursor = qpvtab_cursor1
 18042  
 18043  var azColname = [13]uintptr{
 18044  	ts + 6185,
 18045  	ts + 6188,
 18046  	ts + 6191,
 18047  	ts + 6194,
 18048  	ts + 6197,
 18049  	ts + 6200,
 18050  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 18051  	ts + 6214,
 18052  	ts + 584,
 18053  }
 18054  
 18055  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 18056  	var pNew uintptr
 18057  	var rc int32
 18058  
 18059  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18060  		ts+6220)
 18061  	if rc == SQLITE_OK {
 18062  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 18063  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 18064  		if pNew == uintptr(0) {
 18065  			return SQLITE_NOMEM
 18066  		}
 18067  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(qpvtab_vtab{})))
 18068  	}
 18069  	return rc
 18070  }
 18071  
 18072  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18073  	var p uintptr = pVtab
 18074  	sqlite3.Xsqlite3_free(tls, p)
 18075  	return SQLITE_OK
 18076  }
 18077  
 18078  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 18079  	var pCur uintptr
 18080  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 18081  	if pCur == uintptr(0) {
 18082  		return SQLITE_NOMEM
 18083  	}
 18084  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(qpvtab_cursor{})))
 18085  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18086  	return SQLITE_OK
 18087  }
 18088  
 18089  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 18090  	var pCur uintptr = cur
 18091  	sqlite3.Xsqlite3_free(tls, pCur)
 18092  	return SQLITE_OK
 18093  }
 18094  
 18095  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 18096  	var pCur uintptr = cur
 18097  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18098  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18099  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 18100  		if zEnd != 0 {
 18101  			zEnd++
 18102  		}
 18103  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64((int32(zEnd) - int32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1)
 18104  	}
 18105  	return SQLITE_OK
 18106  }
 18107  
 18108  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18109  	bp := tls.Alloc(1)
 18110  	defer tls.Free(1)
 18111  
 18112  	var pCur uintptr = cur
 18113  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 18114  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 18115  		var zEnd uintptr
 18116  		var j int32
 18117  		j = QPVTAB_VN
 18118  		for 1 != 0 {
 18119  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 18120  				if j == QPVTAB_RHS {
 18121  					return '\n'
 18122  				}
 18123  				return ','
 18124  			}())
 18125  			if j == i || zEnd == uintptr(0) {
 18126  				break
 18127  			}
 18128  			z = zEnd + uintptr(1)
 18129  			j++
 18130  		}
 18131  		if zEnd == z {
 18132  			sqlite3.Xsqlite3_result_null(tls, ctx)
 18133  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 18134  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 18135  		} else {
 18136  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int32(zEnd)-int32(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18137  		}
 18138  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 18139  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 18140  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 18141  		} else {
 18142  			*(*int8)(unsafe.Pointer(bp)) = int8('a' + i - QPVTAB_A)
 18143  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 18144  		}
 18145  	} else if i == QPVTAB_FLAGS {
 18146  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 18147  	}
 18148  	return SQLITE_OK
 18149  }
 18150  
 18151  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18152  	var pCur uintptr = cur
 18153  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 18154  	return SQLITE_OK
 18155  }
 18156  
 18157  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 18158  	var pCur uintptr = cur
 18159  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 18160  }
 18161  
 18162  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 18163  	var pCur uintptr = pVtabCursor
 18164  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 18165  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 18166  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 18167  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 18168  	return SQLITE_OK
 18169  }
 18170  
 18171  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 18172  	bp := tls.Alloc(25)
 18173  	defer tls.Free(25)
 18174  
 18175  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 18176  	case SQLITE_NULL:
 18177  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 18178  		break
 18179  	case SQLITE_INTEGER:
 18180  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 18181  		break
 18182  	case SQLITE_FLOAT:
 18183  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 18184  		break
 18185  	case SQLITE_TEXT:
 18186  		{
 18187  			var i int32
 18188  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 18189  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18190  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18191  			for i = 0; i < n; i++ {
 18192  				*(*int8)(unsafe.Pointer(bp + 24)) = *(*int8)(unsafe.Pointer(a + uintptr(i)))
 18193  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\n' {
 18194  					*(*int8)(unsafe.Pointer(bp + 24)) = int8(' ')
 18195  				}
 18196  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18197  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\'' {
 18198  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 18199  				}
 18200  			}
 18201  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18202  			break
 18203  
 18204  		}
 18205  	case SQLITE_BLOB:
 18206  		{
 18207  			var i int32
 18208  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 18209  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 18210  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 18211  			for i = 0; i < n; i++ {
 18212  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 18213  			}
 18214  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 18215  			break
 18216  
 18217  		}
 18218  	}
 18219  }
 18220  
 18221  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 18222  	bp := tls.Alloc(116)
 18223  	defer tls.Free(116)
 18224  
 18225  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 18226  	var i int32
 18227  	var k int32 = 0
 18228  	var rc int32
 18229  	_ = rc
 18230  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 18231  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18232  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18233  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18234  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18235  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18236  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18237  
 18238  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18239  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18240  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 18241  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18242  				}
 18243  			}
 18244  		}
 18245  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18246  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18247  			iCol = QPVTAB_NONE
 18248  		}
 18249  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 18250  			libc.VaList(bp+8, i,
 18251  				azColname[iCol],
 18252  				op,
 18253  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 18254  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 18255  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 18256  
 18257  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 18258  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 18259  		}
 18260  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 18261  	}
 18262  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 18263  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 18264  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 18265  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 18266  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 18267  			iCol = QPVTAB_NONE
 18268  		}
 18269  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 18270  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 18271  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 18272  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 18273  			}
 18274  		}
 18275  	}
 18276  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 18277  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 18278  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 18279  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 18280  			func() uintptr {
 18281  				if iCol >= 0 {
 18282  					return azColname[iCol]
 18283  				}
 18284  				return ts + 6427
 18285  			}(),
 18286  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 18287  	}
 18288  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 18289  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 18290  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 18291  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 18292  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 18293  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 18294  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 18295  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 18296  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 18297  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 18298  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 18299  	return SQLITE_OK
 18300  }
 18301  
 18302  var qpvtabModule = sqlite3_module{
 18303  	FxConnect:    0,
 18304  	FxBestIndex:  0,
 18305  	FxDisconnect: 0,
 18306  	FxOpen:       0,
 18307  	FxClose:      0,
 18308  	FxFilter:     0,
 18309  	FxNext:       0,
 18310  	FxEof:        0,
 18311  	FxColumn:     0,
 18312  	FxRowid:      0,
 18313  }
 18314  
 18315  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18316  	var rc int32 = SQLITE_OK
 18317  	_ = pApi
 18318  
 18319  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 18320  	return rc
 18321  }
 18322  
 18323  type ReStateNumber = uint16
 18324  
 18325  type ReStateSet1 = struct {
 18326  	FnState uint32
 18327  	FaState uintptr
 18328  }
 18329  
 18330  type ReStateSet = ReStateSet1
 18331  
 18332  type ReInput1 = struct {
 18333  	Fz  uintptr
 18334  	Fi  int32
 18335  	Fmx int32
 18336  }
 18337  
 18338  type ReInput = ReInput1
 18339  
 18340  type ReCompiled1 = struct {
 18341  	FsIn       ReInput
 18342  	FzErr      uintptr
 18343  	FaOp       uintptr
 18344  	FaArg      uintptr
 18345  	FxNextChar uintptr
 18346  	FzInit     [12]uint8
 18347  	FnInit     int32
 18348  	FnState    uint32
 18349  	FnAlloc    uint32
 18350  }
 18351  
 18352  type ReCompiled = ReCompiled1
 18353  
 18354  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 18355  	var i uint32
 18356  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 18357  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 18358  			return
 18359  		}
 18360  	}
 18361  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 18362  }
 18363  
 18364  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 18365  	var c uint32
 18366  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 18367  		return uint32(0)
 18368  	}
 18369  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 18370  	if c >= uint32(0x80) {
 18371  		if c&uint32(0xe0) == uint32(0xc0) && (*ReInput)(unsafe.Pointer(p)).Fi < (*ReInput)(unsafe.Pointer(p)).Fmx && int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi))))&0xc0 == 0x80 {
 18372  			c = c&uint32(0x1f)<<6 | uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))&0x3f)
 18373  			if c < uint32(0x80) {
 18374  				c = uint32(0xfffd)
 18375  			}
 18376  		} else if c&uint32(0xf0) == uint32(0xe0) && (*ReInput)(unsafe.Pointer(p)).Fi+1 < (*ReInput)(unsafe.Pointer(p)).Fmx && int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi))))&0xc0 == 0x80 &&
 18377  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 18378  			c = c&uint32(0x0f)<<12 | uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi))))&0x3f<<6) | uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0x3f)
 18379  			*(*int32)(unsafe.Pointer(p + 4)) += 2
 18380  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 18381  				c = uint32(0xfffd)
 18382  			}
 18383  		} else if c&uint32(0xf8) == uint32(0xf0) && (*ReInput)(unsafe.Pointer(p)).Fi+3 < (*ReInput)(unsafe.Pointer(p)).Fmx && int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi))))&0xc0 == 0x80 &&
 18384  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 && int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0xc0 == 0x80 {
 18385  			c = c&uint32(0x07)<<18 | uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi))))&0x3f<<12) | uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0x3f<<6) |
 18386  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 18387  			*(*int32)(unsafe.Pointer(p + 4)) += 3
 18388  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 18389  				c = uint32(0xfffd)
 18390  			}
 18391  		} else {
 18392  			c = uint32(0xfffd)
 18393  		}
 18394  	}
 18395  	return c
 18396  }
 18397  
 18398  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 18399  	var c uint32 = re_next_char(tls, p)
 18400  	if c >= uint32('A') && c <= uint32('Z') {
 18401  		c = c + uint32('a'-'A')
 18402  	}
 18403  	return c
 18404  }
 18405  
 18406  func re_word_char(tls *libc.TLS, c int32) int32 {
 18407  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 18408  		c >= 'A' && c <= 'Z' || c == '_')
 18409  }
 18410  
 18411  func re_digit_char(tls *libc.TLS, c int32) int32 {
 18412  	return libc.Bool32(c >= '0' && c <= '9')
 18413  }
 18414  
 18415  func re_space_char(tls *libc.TLS, c int32) int32 {
 18416  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 18417  }
 18418  
 18419  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 18420  	bp := tls.Alloc(228)
 18421  	defer tls.Free(228)
 18422  
 18423  	var pThis uintptr
 18424  	var pNext uintptr
 18425  
 18426  	var pToFree uintptr
 18427  	var i uint32
 18428  	var iSwap uint32
 18429  	var c int32
 18430  	var cPrev int32
 18431  	var rc int32
 18432  
 18433  	var x uint8
 18434  	var j int32
 18435  	var n int32
 18436  	var hit int32
 18437  	var x1 int32
 18438  	i = uint32(0)
 18439  	iSwap = uint32(0)
 18440  	c = RE_EOF + 1
 18441  	cPrev = 0
 18442  	rc = 0
 18443  
 18444  	(*ReInput)(unsafe.Pointer(bp + 216)).Fz = zIn
 18445  	(*ReInput)(unsafe.Pointer(bp + 216)).Fi = 0
 18446  	(*ReInput)(unsafe.Pointer(bp + 216)).Fmx = func() int32 {
 18447  		if nIn >= 0 {
 18448  			return nIn
 18449  		}
 18450  		return int32(libc.Xstrlen(tls, zIn))
 18451  	}()
 18452  
 18453  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 18454  		goto __1
 18455  	}
 18456  	x = *(*uint8)(unsafe.Pointer(pRe + 28))
 18457  __2:
 18458  	if !((*ReInput)(unsafe.Pointer(bp+216)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+216)).Fmx &&
 18459  		(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr((*ReInput)(unsafe.Pointer(bp+216)).Fi)))) != int32(x) || libc.Xstrncmp(tls, zIn+uintptr((*ReInput)(unsafe.Pointer(bp+216)).Fi), pRe+28, uint32((*ReCompiled)(unsafe.Pointer(pRe)).FnInit)) != 0)) {
 18460  		goto __3
 18461  	}
 18462  	(*ReInput)(unsafe.Pointer(bp+216)).Fi++
 18463  	goto __2
 18464  __3:
 18465  	;
 18466  	if !((*ReInput)(unsafe.Pointer(bp+216)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+216)).Fmx) {
 18467  		goto __4
 18468  	}
 18469  	return 0
 18470  __4:
 18471  	;
 18472  __1:
 18473  	;
 18474  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnState <= uint32(unsafe.Sizeof([100]ReStateNumber{}))/(uint32(unsafe.Sizeof(ReStateNumber(0)))*uint32(2))) {
 18475  		goto __5
 18476  	}
 18477  	pToFree = uintptr(0)
 18478  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 16
 18479  	goto __6
 18480  __5:
 18481  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(ReStateNumber(0)))*uint32(2)*(*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 18482  	if !(pToFree == uintptr(0)) {
 18483  		goto __7
 18484  	}
 18485  	return -1
 18486  __7:
 18487  	;
 18488  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 18489  __6:
 18490  	;
 18491  	(*ReStateSet)(unsafe.Pointer(bp + 1*8)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 18492  	pNext = bp + 1*8
 18493  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18494  	re_add_state(tls, pNext, 0)
 18495  __8:
 18496  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 18497  		goto __9
 18498  	}
 18499  	cPrev = c
 18500  	c = int32((*struct {
 18501  		f func(*libc.TLS, uintptr) uint32
 18502  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+216))
 18503  	pThis = pNext
 18504  	pNext = bp + uintptr(iSwap)*8
 18505  	iSwap = uint32(1) - iSwap
 18506  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 18507  	i = uint32(0)
 18508  __10:
 18509  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 18510  		goto __12
 18511  	}
 18512  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 18513  	switch int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 18514  	case RE_OP_MATCH:
 18515  		goto __14
 18516  	case RE_OP_ANY:
 18517  		goto __15
 18518  	case RE_OP_WORD:
 18519  		goto __16
 18520  	case RE_OP_NOTWORD:
 18521  		goto __17
 18522  	case RE_OP_DIGIT:
 18523  		goto __18
 18524  	case RE_OP_NOTDIGIT:
 18525  		goto __19
 18526  	case RE_OP_SPACE:
 18527  		goto __20
 18528  	case RE_OP_NOTSPACE:
 18529  		goto __21
 18530  	case RE_OP_BOUNDARY:
 18531  		goto __22
 18532  	case RE_OP_ANYSTAR:
 18533  		goto __23
 18534  	case RE_OP_FORK:
 18535  		goto __24
 18536  	case RE_OP_GOTO:
 18537  		goto __25
 18538  	case RE_OP_ACCEPT:
 18539  		goto __26
 18540  	case RE_OP_CC_EXC:
 18541  		goto __27
 18542  	case RE_OP_CC_INC:
 18543  		goto __28
 18544  	}
 18545  	goto __13
 18546  __14:
 18547  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 18548  		goto __29
 18549  	}
 18550  	re_add_state(tls, pNext, x1+1)
 18551  __29:
 18552  	;
 18553  	goto __13
 18554  
 18555  __15:
 18556  	if !(c != 0) {
 18557  		goto __30
 18558  	}
 18559  	re_add_state(tls, pNext, x1+1)
 18560  __30:
 18561  	;
 18562  	goto __13
 18563  
 18564  __16:
 18565  	if !(re_word_char(tls, c) != 0) {
 18566  		goto __31
 18567  	}
 18568  	re_add_state(tls, pNext, x1+1)
 18569  __31:
 18570  	;
 18571  	goto __13
 18572  
 18573  __17:
 18574  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 18575  		goto __32
 18576  	}
 18577  	re_add_state(tls, pNext, x1+1)
 18578  __32:
 18579  	;
 18580  	goto __13
 18581  
 18582  __18:
 18583  	if !(re_digit_char(tls, c) != 0) {
 18584  		goto __33
 18585  	}
 18586  	re_add_state(tls, pNext, x1+1)
 18587  __33:
 18588  	;
 18589  	goto __13
 18590  
 18591  __19:
 18592  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 18593  		goto __34
 18594  	}
 18595  	re_add_state(tls, pNext, x1+1)
 18596  __34:
 18597  	;
 18598  	goto __13
 18599  
 18600  __20:
 18601  	if !(re_space_char(tls, c) != 0) {
 18602  		goto __35
 18603  	}
 18604  	re_add_state(tls, pNext, x1+1)
 18605  __35:
 18606  	;
 18607  	goto __13
 18608  
 18609  __21:
 18610  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 18611  		goto __36
 18612  	}
 18613  	re_add_state(tls, pNext, x1+1)
 18614  __36:
 18615  	;
 18616  	goto __13
 18617  
 18618  __22:
 18619  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 18620  		goto __37
 18621  	}
 18622  	re_add_state(tls, pThis, x1+1)
 18623  __37:
 18624  	;
 18625  	goto __13
 18626  
 18627  __23:
 18628  	re_add_state(tls, pNext, x1)
 18629  	re_add_state(tls, pThis, x1+1)
 18630  	goto __13
 18631  
 18632  __24:
 18633  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18634  	re_add_state(tls, pThis, x1+1)
 18635  	goto __13
 18636  
 18637  __25:
 18638  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18639  	goto __13
 18640  
 18641  __26:
 18642  	rc = 1
 18643  	goto re_match_end
 18644  
 18645  __27:
 18646  	if !(c == 0) {
 18647  		goto __38
 18648  	}
 18649  	goto __13
 18650  __38:
 18651  	;
 18652  	goto re_op_cc_inc
 18653  
 18654  __28:
 18655  re_op_cc_inc:
 18656  	j = 1
 18657  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 18658  	hit = 0
 18659  	j = 1
 18660  __39:
 18661  	if !(j > 0 && j < n) {
 18662  		goto __41
 18663  	}
 18664  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 18665  		goto __42
 18666  	}
 18667  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 18668  		goto __44
 18669  	}
 18670  	hit = 1
 18671  	j = -1
 18672  __44:
 18673  	;
 18674  	goto __43
 18675  __42:
 18676  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) <= c && *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j+1)*4)) >= c) {
 18677  		goto __45
 18678  	}
 18679  	hit = 1
 18680  	j = -1
 18681  	goto __46
 18682  __45:
 18683  	j++
 18684  __46:
 18685  	;
 18686  __43:
 18687  	;
 18688  	goto __40
 18689  __40:
 18690  	j++
 18691  	goto __39
 18692  	goto __41
 18693  __41:
 18694  	;
 18695  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 18696  		goto __47
 18697  	}
 18698  	hit = libc.BoolInt32(!(hit != 0))
 18699  __47:
 18700  	;
 18701  	if !(hit != 0) {
 18702  		goto __48
 18703  	}
 18704  	re_add_state(tls, pNext, x1+n)
 18705  __48:
 18706  	;
 18707  	goto __13
 18708  
 18709  __13:
 18710  	;
 18711  	goto __11
 18712  __11:
 18713  	i++
 18714  	goto __10
 18715  	goto __12
 18716  __12:
 18717  	;
 18718  	goto __8
 18719  __9:
 18720  	;
 18721  	i = uint32(0)
 18722  __49:
 18723  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 18724  		goto __51
 18725  	}
 18726  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pNext)).FaState + uintptr(i)*2)))))) == RE_OP_ACCEPT) {
 18727  		goto __52
 18728  	}
 18729  	rc = 1
 18730  	goto __51
 18731  __52:
 18732  	;
 18733  	goto __50
 18734  __50:
 18735  	i++
 18736  	goto __49
 18737  	goto __51
 18738  __51:
 18739  	;
 18740  re_match_end:
 18741  	sqlite3.Xsqlite3_free(tls, pToFree)
 18742  	return rc
 18743  }
 18744  
 18745  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 18746  	var aOp uintptr
 18747  	var aArg uintptr
 18748  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(uint32(N)*uint32(unsafe.Sizeof(int8(0)))))
 18749  	if aOp == uintptr(0) {
 18750  		return 1
 18751  	}
 18752  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 18753  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(uint32(N)*uint32(unsafe.Sizeof(int32(0)))))
 18754  	if aArg == uintptr(0) {
 18755  		return 1
 18756  	}
 18757  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 18758  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 18759  	return 0
 18760  }
 18761  
 18762  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 18763  	var i int32
 18764  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 18765  		return 0
 18766  	}
 18767  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 18768  		*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 18769  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 18770  	}
 18771  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 18772  	*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = int8(op)
 18773  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 18774  	return iBefore
 18775  }
 18776  
 18777  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 18778  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 18779  }
 18780  
 18781  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 18782  	if (*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(N) >= (*ReCompiled)(unsafe.Pointer(p)).FnAlloc && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2)+uint32(N))) != 0 {
 18783  		return
 18784  	}
 18785  	libc.Xmemcpy(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState), (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr(iStart), uint32(N)*uint32(unsafe.Sizeof(int8(0))))
 18786  	libc.Xmemcpy(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState)*4, (*ReCompiled)(unsafe.Pointer(p)).FaArg+uintptr(iStart)*4, uint32(N)*uint32(unsafe.Sizeof(int32(0))))
 18787  	*(*uint32)(unsafe.Pointer(p + 44)) += uint32(N)
 18788  }
 18789  
 18790  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 18791  	if c >= '0' && c <= '9' {
 18792  		c = c - '0'
 18793  	} else if c >= 'a' && c <= 'f' {
 18794  		c = c - ('a' - 10)
 18795  	} else if c >= 'A' && c <= 'F' {
 18796  		c = c - ('A' - 10)
 18797  	} else {
 18798  		return 0
 18799  	}
 18800  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 18801  	return 1
 18802  }
 18803  
 18804  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 18805  	bp := tls.Alloc(4)
 18806  	defer tls.Free(4)
 18807  
 18808  	var i int32
 18809  	*(*int32)(unsafe.Pointer(bp)) = 0
 18810  	var c int8
 18811  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18812  		return uint32(0)
 18813  	}
 18814  	c = int8(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi))))
 18815  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18816  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18817  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18818  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 18819  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 18820  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 18821  			*(*int32)(unsafe.Pointer(p + 4)) += 5
 18822  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18823  		}
 18824  	}
 18825  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18826  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18827  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18828  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 18829  			*(*int32)(unsafe.Pointer(p + 4)) += 3
 18830  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18831  		}
 18832  	}
 18833  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 18834  	}
 18835  	if zEsc[i] != 0 {
 18836  		if i < 6 {
 18837  			c = zTrans[i]
 18838  		}
 18839  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18840  	} else {
 18841  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 18842  	}
 18843  	return uint32(c)
 18844  }
 18845  
 18846  var zEsc = *(*[21]int8)(unsafe.Pointer(ts + 6559))
 18847  var zTrans = *(*[7]int8)(unsafe.Pointer(ts + 6580))
 18848  
 18849  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 18850  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18851  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18852  	}
 18853  	return uint8(0)
 18854  }
 18855  
 18856  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 18857  	var zErr uintptr
 18858  	var iStart int32
 18859  	var iEnd int32
 18860  	var iGoto int32
 18861  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18862  	zErr = re_subcompile_string(tls, p)
 18863  	if zErr != 0 {
 18864  		return zErr
 18865  	}
 18866  	for int32(rePeek(tls, p)) == '|' {
 18867  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18868  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 18869  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 18870  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18871  		zErr = re_subcompile_string(tls, p)
 18872  		if zErr != 0 {
 18873  			return zErr
 18874  		}
 18875  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 18876  	}
 18877  	return uintptr(0)
 18878  }
 18879  
 18880  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 18881  	var iPrev int32 = -1
 18882  	var iStart int32
 18883  	var c uint32
 18884  	var zErr uintptr
 18885  	for libc.AssignUint32(&c, (*struct {
 18886  		f func(*libc.TLS, uintptr) uint32
 18887  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18888  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18889  		switch c {
 18890  		case uint32('|'):
 18891  			fallthrough
 18892  		case uint32('$'):
 18893  			fallthrough
 18894  		case uint32(')'):
 18895  			{
 18896  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 18897  				return uintptr(0)
 18898  
 18899  			}
 18900  		case uint32('('):
 18901  			{
 18902  				zErr = re_subcompile_re(tls, p)
 18903  				if zErr != 0 {
 18904  					return zErr
 18905  				}
 18906  				if int32(rePeek(tls, p)) != ')' {
 18907  					return ts + 6587
 18908  				}
 18909  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18910  				break
 18911  
 18912  			}
 18913  		case uint32('.'):
 18914  			{
 18915  				if int32(rePeek(tls, p)) == '*' {
 18916  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 18917  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18918  				} else {
 18919  					re_append(tls, p, RE_OP_ANY, 0)
 18920  				}
 18921  				break
 18922  
 18923  			}
 18924  		case uint32('*'):
 18925  			{
 18926  				if iPrev < 0 {
 18927  					return ts + 6601
 18928  				}
 18929  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18930  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 18931  				break
 18932  
 18933  			}
 18934  		case uint32('+'):
 18935  			{
 18936  				if iPrev < 0 {
 18937  					return ts + 6621
 18938  				}
 18939  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 18940  				break
 18941  
 18942  			}
 18943  		case uint32('?'):
 18944  			{
 18945  				if iPrev < 0 {
 18946  					return ts + 6641
 18947  				}
 18948  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18949  				break
 18950  
 18951  			}
 18952  		case uint32('{'):
 18953  			{
 18954  				var m int32 = 0
 18955  				var n int32 = 0
 18956  				var sz int32
 18957  				var j int32
 18958  				if iPrev < 0 {
 18959  					return ts + 6661
 18960  				}
 18961  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18962  					m = int32(uint32(m*10) + c - uint32('0'))
 18963  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18964  				}
 18965  				n = m
 18966  				if c == uint32(',') {
 18967  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18968  					n = 0
 18969  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18970  						n = int32(uint32(n*10) + c - uint32('0'))
 18971  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18972  					}
 18973  				}
 18974  				if c != uint32('}') {
 18975  					return ts + 6685
 18976  				}
 18977  				if n > 0 && n < m {
 18978  					return ts + 6699
 18979  				}
 18980  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18981  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 18982  				if m == 0 {
 18983  					if n == 0 {
 18984  						return ts + 6724
 18985  					}
 18986  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 18987  					n--
 18988  				} else {
 18989  					for j = 1; j < m; j++ {
 18990  						re_copy(tls, p, iPrev, sz)
 18991  					}
 18992  				}
 18993  				for j = m; j < n; j++ {
 18994  					re_append(tls, p, RE_OP_FORK, sz+1)
 18995  					re_copy(tls, p, iPrev, sz)
 18996  				}
 18997  				if n == 0 && m > 0 {
 18998  					re_append(tls, p, RE_OP_FORK, -sz)
 18999  				}
 19000  				break
 19001  
 19002  			}
 19003  		case uint32('['):
 19004  			{
 19005  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 19006  				if int32(rePeek(tls, p)) == '^' {
 19007  					re_append(tls, p, RE_OP_CC_EXC, 0)
 19008  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19009  				} else {
 19010  					re_append(tls, p, RE_OP_CC_INC, 0)
 19011  				}
 19012  				for libc.AssignUint32(&c, (*struct {
 19013  					f func(*libc.TLS, uintptr) uint32
 19014  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 19015  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 19016  						return ts + 6757
 19017  					}
 19018  					if c == uint32('\\') {
 19019  						c = re_esc_char(tls, p)
 19020  					}
 19021  					if int32(rePeek(tls, p)) == '-' {
 19022  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19023  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19024  						c = (*struct {
 19025  							f func(*libc.TLS, uintptr) uint32
 19026  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 19027  						if c == uint32('\\') {
 19028  							c = re_esc_char(tls, p)
 19029  						}
 19030  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 19031  					} else {
 19032  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 19033  					}
 19034  					if int32(rePeek(tls, p)) == ']' {
 19035  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19036  						break
 19037  					}
 19038  				}
 19039  				if c == uint32(0) {
 19040  					return ts + 6795
 19041  				}
 19042  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 19043  				break
 19044  
 19045  			}
 19046  		case uint32('\\'):
 19047  			{
 19048  				var specialOp int32 = 0
 19049  				switch int32(rePeek(tls, p)) {
 19050  				case 'b':
 19051  					specialOp = RE_OP_BOUNDARY
 19052  					break
 19053  				case 'd':
 19054  					specialOp = RE_OP_DIGIT
 19055  					break
 19056  				case 'D':
 19057  					specialOp = RE_OP_NOTDIGIT
 19058  					break
 19059  				case 's':
 19060  					specialOp = RE_OP_SPACE
 19061  					break
 19062  				case 'S':
 19063  					specialOp = RE_OP_NOTSPACE
 19064  					break
 19065  				case 'w':
 19066  					specialOp = RE_OP_WORD
 19067  					break
 19068  				case 'W':
 19069  					specialOp = RE_OP_NOTWORD
 19070  					break
 19071  				}
 19072  				if specialOp != 0 {
 19073  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 19074  					re_append(tls, p, specialOp, 0)
 19075  				} else {
 19076  					c = re_esc_char(tls, p)
 19077  					re_append(tls, p, RE_OP_MATCH, int32(c))
 19078  				}
 19079  				break
 19080  
 19081  			}
 19082  		default:
 19083  			{
 19084  				re_append(tls, p, RE_OP_MATCH, int32(c))
 19085  				break
 19086  
 19087  			}
 19088  		}
 19089  		iPrev = iStart
 19090  	}
 19091  	return uintptr(0)
 19092  }
 19093  
 19094  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 19095  	if pRe != 0 {
 19096  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 19097  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 19098  		sqlite3.Xsqlite3_free(tls, pRe)
 19099  	}
 19100  }
 19101  
 19102  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 19103  	var pRe uintptr
 19104  	var zErr uintptr
 19105  	var i int32
 19106  	var j int32
 19107  
 19108  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 19109  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 19110  	if pRe == uintptr(0) {
 19111  		return ts + 2069
 19112  	}
 19113  	libc.Xmemset(tls, pRe, 0, uint32(unsafe.Sizeof(ReCompiled{})))
 19114  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 19115  		if noCase != 0 {
 19116  			return *(*uintptr)(unsafe.Pointer(&struct {
 19117  				f func(*libc.TLS, uintptr) uint32
 19118  			}{re_next_char_nocase}))
 19119  		}
 19120  		return *(*uintptr)(unsafe.Pointer(&struct {
 19121  			f func(*libc.TLS, uintptr) uint32
 19122  		}{re_next_char}))
 19123  	}()
 19124  	if re_resize(tls, pRe, 30) != 0 {
 19125  		sqlite3re_free(tls, pRe)
 19126  		return ts + 2069
 19127  	}
 19128  	if int32(*(*int8)(unsafe.Pointer(zIn))) == '^' {
 19129  		zIn++
 19130  	} else {
 19131  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 19132  	}
 19133  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 19134  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 19135  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 19136  	zErr = re_subcompile_re(tls, pRe)
 19137  	if zErr != 0 {
 19138  		sqlite3re_free(tls, pRe)
 19139  		return zErr
 19140  	}
 19141  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19142  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 19143  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19144  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19145  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 19146  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 19147  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 19148  	} else {
 19149  		sqlite3re_free(tls, pRe)
 19150  		return ts + 6808
 19151  	}
 19152  
 19153  	if int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 19154  		j = 0
 19155  		i = 1
 19156  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 19157  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 19158  			if x <= uint32(127) {
 19159  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 19160  			} else if x <= uint32(0xfff) {
 19161  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 19162  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19163  			} else if x <= uint32(0xffff) {
 19164  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 19165  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 19166  				*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 19167  			} else {
 19168  				break
 19169  			}
 19170  		}
 19171  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 28 + uintptr(j-1)))) == 0 {
 19172  			j--
 19173  		}
 19174  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 19175  	}
 19176  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 19177  }
 19178  
 19179  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19180  	bp := tls.Alloc(4)
 19181  	defer tls.Free(4)
 19182  
 19183  	var zPattern uintptr
 19184  	var zStr uintptr
 19185  	var zErr uintptr
 19186  	var setAux int32 = 0
 19187  
 19188  	_ = argc
 19189  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 19190  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19191  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19192  		if zPattern == uintptr(0) {
 19193  			return
 19194  		}
 19195  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 19196  		if zErr != 0 {
 19197  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 19198  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 19199  			return
 19200  		}
 19201  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 19202  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19203  			return
 19204  		}
 19205  		setAux = 1
 19206  	}
 19207  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 19208  	if zStr != uintptr(0) {
 19209  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 19210  	}
 19211  	if setAux != 0 {
 19212  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 19213  	}
 19214  }
 19215  
 19216  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19217  	var rc int32 = SQLITE_OK
 19218  	_ = pApi
 19219  
 19220  	_ = pzErrMsg
 19221  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 19222  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19223  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 19224  			f func(*libc.TLS, uintptr, int32, uintptr)
 19225  		}{re_sql_func})), uintptr(0), uintptr(0))
 19226  	if rc == SQLITE_OK {
 19227  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 19228  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 19229  			db, *(*uintptr)(unsafe.Pointer(&struct {
 19230  				f func(*libc.TLS, uintptr, int32, uintptr)
 19231  			}{re_sql_func})), uintptr(0), uintptr(0))
 19232  	}
 19233  	return rc
 19234  }
 19235  
 19236  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 19237  	var v sqlite3_int64
 19238  	var ptr uintptr
 19239  
 19240  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19241  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+4060)
 19242  	if ptr != 0 {
 19243  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 19244  	}
 19245  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 19246  }
 19247  
 19248  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19249  	var rc int32 = SQLITE_OK
 19250  	_ = pApi
 19251  
 19252  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 19253  		*(*uintptr)(unsafe.Pointer(&struct {
 19254  			f func(*libc.TLS, uintptr, int32, uintptr)
 19255  		}{rememberFunc})), uintptr(0), uintptr(0))
 19256  	return rc
 19257  }
 19258  
 19259  type series_cursor1 = struct {
 19260  	Fbase    sqlite3_vtab_cursor
 19261  	FisDesc  int32
 19262  	FiRowid  sqlite3_int64
 19263  	FiValue  sqlite3_int64
 19264  	FmnValue sqlite3_int64
 19265  	FmxValue sqlite3_int64
 19266  	FiStep   sqlite3_int64
 19267  }
 19268  
 19269  type series_cursor = series_cursor1
 19270  
 19271  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 19272  	var pNew uintptr
 19273  	var rc int32
 19274  
 19275  	_ = pUnused
 19276  	_ = argcUnused
 19277  	_ = argvUnused
 19278  	_ = pzErrUnused
 19279  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 19280  		ts+6855)
 19281  	if rc == SQLITE_OK {
 19282  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 19283  		if pNew == uintptr(0) {
 19284  			return SQLITE_NOMEM
 19285  		}
 19286  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(sqlite3_vtab{})))
 19287  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 19288  	}
 19289  	return rc
 19290  }
 19291  
 19292  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 19293  	sqlite3.Xsqlite3_free(tls, pVtab)
 19294  	return SQLITE_OK
 19295  }
 19296  
 19297  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 19298  	var pCur uintptr
 19299  	_ = pUnused
 19300  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 19301  	if pCur == uintptr(0) {
 19302  		return SQLITE_NOMEM
 19303  	}
 19304  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(series_cursor{})))
 19305  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 19306  	return SQLITE_OK
 19307  }
 19308  
 19309  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 19310  	sqlite3.Xsqlite3_free(tls, cur)
 19311  	return SQLITE_OK
 19312  }
 19313  
 19314  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 19315  	var pCur uintptr = cur
 19316  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19317  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 16)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19318  	} else {
 19319  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 16)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19320  	}
 19321  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 19322  	return SQLITE_OK
 19323  }
 19324  
 19325  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 19326  	var pCur uintptr = cur
 19327  	var x sqlite3_int64 = int64(0)
 19328  	switch i {
 19329  	case SERIES_COLUMN_START:
 19330  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19331  		break
 19332  	case SERIES_COLUMN_STOP:
 19333  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19334  		break
 19335  	case SERIES_COLUMN_STEP:
 19336  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19337  		break
 19338  	default:
 19339  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 19340  		break
 19341  	}
 19342  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 19343  	return SQLITE_OK
 19344  }
 19345  
 19346  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 19347  	var pCur uintptr = cur
 19348  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 19349  	return SQLITE_OK
 19350  }
 19351  
 19352  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 19353  	var pCur uintptr = cur
 19354  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 19355  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 19356  	} else {
 19357  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 19358  	}
 19359  	return int32(0)
 19360  }
 19361  
 19362  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 19363  	var pCur uintptr = pVtabCursor
 19364  	var i int32 = 0
 19365  	_ = idxStrUnused
 19366  	if idxNum&1 != 0 {
 19367  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*4)))
 19368  	} else {
 19369  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 19370  	}
 19371  	if idxNum&2 != 0 {
 19372  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*4)))
 19373  	} else {
 19374  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 19375  	}
 19376  	if idxNum&4 != 0 {
 19377  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*4)))
 19378  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 19379  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19380  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 19381  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19382  			if idxNum&16 == 0 {
 19383  				idxNum = idxNum | 8
 19384  			}
 19385  		}
 19386  	} else {
 19387  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 19388  	}
 19389  	for i = 0; i < argc; i++ {
 19390  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))) == SQLITE_NULL {
 19391  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 19392  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 19393  			break
 19394  		}
 19395  	}
 19396  	if idxNum&8 != 0 {
 19397  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 19398  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 19399  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 19400  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 16)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 19401  		}
 19402  	} else {
 19403  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 19404  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 19405  	}
 19406  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 19407  	return SQLITE_OK
 19408  }
 19409  
 19410  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 19411  	bp := tls.Alloc(12)
 19412  	defer tls.Free(12)
 19413  
 19414  	var i int32
 19415  	var j int32
 19416  	var idxNum int32 = 0
 19417  	var bStartSeen int32 = 0
 19418  	var unusableMask int32 = 0
 19419  	var nArg int32 = 0
 19420  
 19421  	var pConstraint uintptr
 19422  
 19423  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 19424  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 19425  	i = 0
 19426  __1:
 19427  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 19428  		goto __3
 19429  	}
 19430  	{
 19431  		var iCol int32
 19432  		var iMask int32
 19433  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 19434  			goto __2
 19435  		}
 19436  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 19437  
 19438  		iMask = int32(1) << iCol
 19439  		if iCol == 0 {
 19440  			bStartSeen = 1
 19441  		}
 19442  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 19443  			unusableMask = unusableMask | iMask
 19444  			goto __2
 19445  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 19446  			idxNum = idxNum | iMask
 19447  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 19448  		}
 19449  
 19450  	}
 19451  	goto __2
 19452  __2:
 19453  	i++
 19454  	pConstraint += 12
 19455  	goto __1
 19456  	goto __3
 19457  __3:
 19458  	;
 19459  	for i = 0; i < 3; i++ {
 19460  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 19461  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 19462  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 19463  		}
 19464  	}
 19465  
 19466  	if !(bStartSeen != 0) {
 19467  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 19468  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 19469  			ts+6914, 0)
 19470  		return SQLITE_ERROR
 19471  	}
 19472  	if unusableMask & ^idxNum != 0 {
 19473  		return SQLITE_CONSTRAINT
 19474  	}
 19475  	if idxNum&3 == 3 {
 19476  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 19477  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 19478  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 19479  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 19480  				idxNum = idxNum | 8
 19481  			} else {
 19482  				idxNum = idxNum | 16
 19483  			}
 19484  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 19485  		}
 19486  	} else {
 19487  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 19488  	}
 19489  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 19490  	return SQLITE_OK
 19491  }
 19492  
 19493  var seriesModule = sqlite3_module{
 19494  	FxConnect:    0,
 19495  	FxBestIndex:  0,
 19496  	FxDisconnect: 0,
 19497  	FxOpen:       0,
 19498  	FxClose:      0,
 19499  	FxFilter:     0,
 19500  	FxNext:       0,
 19501  	FxEof:        0,
 19502  	FxColumn:     0,
 19503  	FxRowid:      0,
 19504  }
 19505  
 19506  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 19507  	var rc int32 = SQLITE_OK
 19508  	_ = pApi
 19509  
 19510  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 19511  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 19512  			ts+6972, 0)
 19513  		return SQLITE_ERROR
 19514  	}
 19515  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 19516  	return rc
 19517  }
 19518  
 19519  type u16 = uint16
 19520  
 19521  var midClass = [128]uint8{
 19522  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19523  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19524  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19525  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19526  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19527  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19528  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19529  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19530  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19531  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19532  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19533  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19534  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19535  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19536  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19537  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19538  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19539  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19540  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19541  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19542  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19543  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19544  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19545  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19546  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19547  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19548  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19549  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19550  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19551  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 19552  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19553  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19554  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19555  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19556  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19557  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19558  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19559  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19560  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19561  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19562  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19563  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19564  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19565  }
 19566  
 19567  var initClass = [128]uint8{
 19568  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19569  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19570  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19571  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19572  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19573  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19574  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19575  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19576  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19577  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19578  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19579  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19580  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19581  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19582  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19583  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19584  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19585  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19586  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19587  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19588  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19589  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19590  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19591  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19592  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19593  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19594  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19595  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19596  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19597  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 19598  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19599  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19600  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19601  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19602  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19603  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19604  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19605  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19606  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19607  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19608  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 19609  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19610  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19611  }
 19612  
 19613  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 19614  
 19615  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 19616  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 19617  	var i int32
 19618  	var nOut int32 = 0
 19619  	var cPrev int8 = int8(0x77)
 19620  	var cPrevX int8 = int8(0x77)
 19621  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 19622  
 19623  	if zOut == uintptr(0) {
 19624  		return uintptr(0)
 19625  	}
 19626  	if nIn > 2 {
 19627  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 19628  		case 'g':
 19629  			fallthrough
 19630  		case 'k':
 19631  			{
 19632  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 19633  					zIn++
 19634  					nIn--
 19635  				}
 19636  				break
 19637  
 19638  			}
 19639  		}
 19640  	}
 19641  	for i = 0; i < nIn; i++ {
 19642  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 19643  		if i+1 < nIn {
 19644  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 19645  				continue
 19646  			}
 19647  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 19648  				continue
 19649  			}
 19650  			if i+2 < nIn {
 19651  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 19652  					continue
 19653  				}
 19654  			}
 19655  		}
 19656  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 19657  		if int32(c) == CCLASS_SPACE {
 19658  			continue
 19659  		}
 19660  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 19661  			continue
 19662  		}
 19663  		aClass = uintptr(unsafe.Pointer(&midClass))
 19664  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 19665  			continue
 19666  		}
 19667  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 19668  			nOut--
 19669  		}
 19670  		cPrev = int8(c)
 19671  		if int32(c) == CCLASS_SILENT {
 19672  			continue
 19673  		}
 19674  		cPrevX = int8(c)
 19675  		c = className[c]
 19676  
 19677  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 19678  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 19679  		}
 19680  	}
 19681  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 19682  	return zOut
 19683  }
 19684  
 19685  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19686  	var zIn uintptr
 19687  	var zOut uintptr
 19688  
 19689  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19690  	if zIn == uintptr(0) {
 19691  		return
 19692  	}
 19693  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 19694  	if zOut == uintptr(0) {
 19695  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19696  	} else {
 19697  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19698  	}
 19699  }
 19700  
 19701  func characterClass(tls *libc.TLS, cPrev int8, c int8) int8 {
 19702  	if int32(cPrev) == 0 {
 19703  		return int8(initClass[int32(c)&0x7f])
 19704  	}
 19705  	return int8(midClass[int32(c)&0x7f])
 19706  }
 19707  
 19708  func insertOrDeleteCost(tls *libc.TLS, cPrev int8, c int8, cNext int8) int32 {
 19709  	var classC int8 = characterClass(tls, cPrev, c)
 19710  	var classCprev int8
 19711  
 19712  	if int32(classC) == CCLASS_SILENT {
 19713  		return 1
 19714  	}
 19715  	if int32(cPrev) == int32(c) {
 19716  		return 10
 19717  	}
 19718  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 19719  		return 20
 19720  	}
 19721  	classCprev = characterClass(tls, cPrev, cPrev)
 19722  	if int32(classC) == int32(classCprev) {
 19723  		if int32(classC) == CCLASS_VOWEL {
 19724  			return 15
 19725  		} else {
 19726  			return 50
 19727  		}
 19728  	}
 19729  
 19730  	return 100
 19731  }
 19732  
 19733  func substituteCost(tls *libc.TLS, cPrev int8, cFrom int8, cTo int8) int32 {
 19734  	var classFrom int8
 19735  	var classTo int8
 19736  	if int32(cFrom) == int32(cTo) {
 19737  		return 0
 19738  	}
 19739  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 19740  		return 0
 19741  	}
 19742  	classFrom = characterClass(tls, cPrev, cFrom)
 19743  	classTo = characterClass(tls, cPrev, cTo)
 19744  	if int32(classFrom) == int32(classTo) {
 19745  		return 40
 19746  	}
 19747  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 19748  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 19749  		return 75
 19750  	}
 19751  
 19752  	return 100
 19753  }
 19754  
 19755  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 19756  	bp := tls.Alloc(300)
 19757  	defer tls.Free(300)
 19758  
 19759  	var nA int32
 19760  	var nB int32
 19761  	var xA int32
 19762  	var xB int32
 19763  	var cA int8 = int8(0)
 19764  	var cB int8
 19765  	var cAprev int8
 19766  	var cBprev int8
 19767  	var cAnext int8
 19768  	var cBnext int8
 19769  	var d int32
 19770  	var dc int32 = 0
 19771  	var res int32
 19772  	var m uintptr
 19773  	var cx uintptr
 19774  	var toFree uintptr = uintptr(0)
 19775  	var nMatch int32 = 0
 19776  
 19777  	if zA == uintptr(0) || zB == uintptr(0) {
 19778  		return -1
 19779  	}
 19780  
 19781  	for *(*int8)(unsafe.Pointer(zA)) != 0 && int32(*(*int8)(unsafe.Pointer(zA))) == int32(*(*int8)(unsafe.Pointer(zB))) {
 19782  		dc = int32(*(*int8)(unsafe.Pointer(zA)))
 19783  		zA++
 19784  		zB++
 19785  		nMatch++
 19786  	}
 19787  	if pnMatch != 0 {
 19788  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 19789  	}
 19790  	if int32(*(*int8)(unsafe.Pointer(zA))) == 0 && int32(*(*int8)(unsafe.Pointer(zB))) == 0 {
 19791  		return 0
 19792  	}
 19793  
 19794  	for nA = 0; *(*int8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 19795  		if int32(*(*int8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 19796  			return -2
 19797  		}
 19798  	}
 19799  	for nB = 0; *(*int8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 19800  		if int32(*(*int8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 19801  			return -2
 19802  		}
 19803  	}
 19804  
 19805  	if nA == 0 {
 19806  		cBprev = int8(dc)
 19807  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 19808  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 19809  			cBprev = cB
 19810  		}
 19811  		return res
 19812  	}
 19813  	if nB == 0 {
 19814  		cAprev = int8(dc)
 19815  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 19816  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA+1))))
 19817  			cAprev = cA
 19818  		}
 19819  		return res
 19820  	}
 19821  
 19822  	if int32(*(*int8)(unsafe.Pointer(zA))) == '*' && int32(*(*int8)(unsafe.Pointer(zA + 1))) == 0 {
 19823  		return 0
 19824  	}
 19825  
 19826  	if uint32(nB) < uint32(unsafe.Sizeof([75]int32{}))*uint32(4)/(uint32(unsafe.Sizeof(int32(0)))*uint32(5)) {
 19827  		m = bp
 19828  	} else {
 19829  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64(uint32((nB+1)*5)*uint32(unsafe.Sizeof(int32(0)))/uint32(4))))
 19830  		if m == uintptr(0) {
 19831  			return -3
 19832  		}
 19833  	}
 19834  	cx = m + uintptr(nB+1)*4
 19835  
 19836  	*(*int32)(unsafe.Pointer(m)) = 0
 19837  	*(*int8)(unsafe.Pointer(cx)) = int8(dc)
 19838  	cBprev = int8(dc)
 19839  	for xB = 1; xB <= nB; xB++ {
 19840  		cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19841  		cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19842  		*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 19843  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 19844  		cBprev = cB
 19845  	}
 19846  	cAprev = int8(dc)
 19847  	for xA = 1; xA <= nA; xA++ {
 19848  		var lastA int32 = libc.Bool32(xA == nA)
 19849  		cA = *(*int8)(unsafe.Pointer(zA + uintptr(xA-1)))
 19850  		cAnext = *(*int8)(unsafe.Pointer(zA + uintptr(xA)))
 19851  		if int32(cA) == '*' && lastA != 0 {
 19852  			break
 19853  		}
 19854  		d = *(*int32)(unsafe.Pointer(m))
 19855  		dc = int32(*(*int8)(unsafe.Pointer(cx)))
 19856  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 19857  		cBprev = int8(0)
 19858  		for xB = 1; xB <= nB; xB++ {
 19859  			var totalCost int32
 19860  			var insCost int32
 19861  			var delCost int32
 19862  			var subCost int32
 19863  			var ncx int32
 19864  			cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19865  			cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19866  
 19867  			insCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 19868  			if lastA != 0 {
 19869  				insCost = insCost / FINAL_INS_COST_DIV
 19870  			}
 19871  
 19872  			delCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 19873  
 19874  			subCost = substituteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 19875  
 19876  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 19877  			ncx = int32(cB)
 19878  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 19879  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19880  				ncx = int32(cA)
 19881  			}
 19882  			if subCost+d < totalCost {
 19883  				totalCost = subCost + d
 19884  			}
 19885  
 19886  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19887  			dc = int32(*(*int8)(unsafe.Pointer(cx + uintptr(xB))))
 19888  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 19889  			*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = int8(ncx)
 19890  			cBprev = cB
 19891  		}
 19892  		cAprev = cA
 19893  	}
 19894  
 19895  	if int32(cA) == '*' {
 19896  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 19897  		for xB = 1; xB <= nB; xB++ {
 19898  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 19899  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19900  				if pnMatch != 0 {
 19901  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 19902  				}
 19903  			}
 19904  		}
 19905  	} else {
 19906  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 19907  
 19908  	}
 19909  	sqlite3.Xsqlite3_free(tls, toFree)
 19910  	return res
 19911  }
 19912  
 19913  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19914  	var res int32 = editdist1(tls,
 19915  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 19916  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))),
 19917  		uintptr(0))
 19918  	if res < 0 {
 19919  		if res == -3 {
 19920  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19921  		} else if res == -2 {
 19922  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 19923  		} else {
 19924  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 19925  		}
 19926  	} else {
 19927  		sqlite3.Xsqlite3_result_int(tls, context, res)
 19928  	}
 19929  }
 19930  
 19931  type EditDist3Cost1 = struct {
 19932  	FpNext uintptr
 19933  	FnFrom u8
 19934  	FnTo   u8
 19935  	FiCost u16
 19936  	Fa     [4]int8
 19937  }
 19938  
 19939  type EditDist3Cost = EditDist3Cost1
 19940  type EditDist3Config1 = struct {
 19941  	FnLang int32
 19942  	Fa     uintptr
 19943  }
 19944  
 19945  type EditDist3Config = EditDist3Config1
 19946  type EditDist3From1 = struct {
 19947  	FnSubst  int32
 19948  	FnDel    int32
 19949  	FnByte   int32
 19950  	FapSubst uintptr
 19951  	FapDel   uintptr
 19952  }
 19953  
 19954  type EditDist3From = EditDist3From1
 19955  type EditDist3FromString1 = struct {
 19956  	Fz        uintptr
 19957  	Fn        int32
 19958  	FisPrefix int32
 19959  	Fa        uintptr
 19960  }
 19961  
 19962  type EditDist3FromString = EditDist3FromString1
 19963  type EditDist3To1 = struct {
 19964  	FnIns  int32
 19965  	FnByte int32
 19966  	FapIns uintptr
 19967  }
 19968  
 19969  type EditDist3To = EditDist3To1
 19970  type EditDist3ToString1 = struct {
 19971  	Fz uintptr
 19972  	Fn int32
 19973  	Fa uintptr
 19974  }
 19975  
 19976  type EditDist3ToString = EditDist3ToString1
 19977  type EditDist3Lang1 = struct {
 19978  	FiLang    int32
 19979  	FiInsCost int32
 19980  	FiDelCost int32
 19981  	FiSubCost int32
 19982  	FpCost    uintptr
 19983  }
 19984  
 19985  type EditDist3Lang = EditDist3Lang1
 19986  
 19987  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 19988  
 19989  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 19990  	var i int32
 19991  	if p == uintptr(0) {
 19992  		return
 19993  	}
 19994  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 19995  		var pCost uintptr
 19996  		var pNext uintptr
 19997  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*20)).FpCost
 19998  		for pCost != 0 {
 19999  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 20000  			sqlite3.Xsqlite3_free(tls, pCost)
 20001  			pCost = pNext
 20002  		}
 20003  	}
 20004  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 20005  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(EditDist3Config{})))
 20006  }
 20007  
 20008  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 20009  	var p uintptr = pIn
 20010  	editDist3ConfigClear(tls, p)
 20011  	sqlite3.Xsqlite3_free(tls, p)
 20012  }
 20013  
 20014  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 20015  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 20016  	var rc int32
 20017  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 20018  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20019  	}
 20020  	rc = libc.Xstrncmp(tls, pA+8, pB+8, uint32(n))
 20021  	if rc == 0 {
 20022  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 20023  	}
 20024  	return rc
 20025  }
 20026  
 20027  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 20028  	bp := tls.Alloc(4)
 20029  	defer tls.Free(4)
 20030  
 20031  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20032  	var ppTail uintptr = bp
 20033  	var p uintptr
 20034  	for pA != 0 && pB != 0 {
 20035  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 20036  			p = pA
 20037  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 20038  		} else {
 20039  			p = pB
 20040  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 20041  		}
 20042  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 20043  		ppTail = p
 20044  	}
 20045  	if pA != 0 {
 20046  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 20047  	} else {
 20048  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 20049  	}
 20050  	return *(*uintptr)(unsafe.Pointer(bp))
 20051  }
 20052  
 20053  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 20054  	bp := tls.Alloc(240)
 20055  	defer tls.Free(240)
 20056  
 20057  	var p uintptr
 20058  	var i int32
 20059  	var mx int32 = 0
 20060  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 20061  	*(*uintptr)(unsafe.Pointer(bp + 1*4)) = uintptr(0)
 20062  	for pList != 0 {
 20063  		p = pList
 20064  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20065  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 20066  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)) != 0; i++ {
 20067  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)), p)
 20068  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)) = uintptr(0)
 20069  		}
 20070  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)) = p
 20071  		if i > mx {
 20072  			mx = i
 20073  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*4)) = uintptr(0)
 20074  		}
 20075  	}
 20076  	p = uintptr(0)
 20077  	for i = 0; i <= mx; i++ {
 20078  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)) != 0 {
 20079  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*4)))
 20080  		}
 20081  	}
 20082  	return p
 20083  }
 20084  
 20085  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 20086  	bp := tls.Alloc(12)
 20087  	defer tls.Free(12)
 20088  
 20089  	var rc int32
 20090  	var rc2 int32
 20091  	var zSql uintptr
 20092  	var iLangPrev int32 = -9999
 20093  	var pLang uintptr = uintptr(0)
 20094  
 20095  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 20096  		ts+7107, libc.VaList(bp, zTable))
 20097  	if zSql == uintptr(0) {
 20098  		return SQLITE_NOMEM
 20099  	}
 20100  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 20101  	sqlite3.Xsqlite3_free(tls, zSql)
 20102  	if rc != 0 {
 20103  		return rc
 20104  	}
 20105  	editDist3ConfigClear(tls, p)
 20106  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 20107  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 20108  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20109  		var nFrom int32
 20110  		if zFrom != 0 {
 20111  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 20112  		} else {
 20113  			nFrom = 0
 20114  		}
 20115  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20116  		var nTo int32
 20117  		if zTo != 0 {
 20118  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 20119  		} else {
 20120  			nTo = 0
 20121  		}
 20122  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 20123  
 20124  		if nFrom > 100 || nTo > 100 {
 20125  			continue
 20126  		}
 20127  		if iCost < 0 {
 20128  			continue
 20129  		}
 20130  		if iCost >= 10000 {
 20131  			continue
 20132  		}
 20133  		if pLang == uintptr(0) || iLang != iLangPrev {
 20134  			var pNew uintptr
 20135  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64(uint32((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint32(unsafe.Sizeof(EditDist3Lang{}))))
 20136  			if pNew == uintptr(0) {
 20137  				rc = SQLITE_NOMEM
 20138  				break
 20139  			}
 20140  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 20141  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*20
 20142  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 20143  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 20144  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 20145  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 20146  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 20147  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 20148  			iLangPrev = iLang
 20149  		}
 20150  		if nFrom == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 20151  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 20152  		} else if nFrom == 0 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 20153  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 20154  		} else if nFrom == 1 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 20155  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 20156  		} else {
 20157  			var pCost uintptr
 20158  			var nExtra int32 = nFrom + nTo - 4
 20159  			if nExtra < 0 {
 20160  				nExtra = 0
 20161  			}
 20162  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(EditDist3Cost{}))+uint32(nExtra)))
 20163  			if pCost == uintptr(0) {
 20164  				rc = SQLITE_NOMEM
 20165  				break
 20166  			}
 20167  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 20168  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 20169  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 20170  			libc.Xmemcpy(tls, pCost+8, zFrom, uint32(nFrom))
 20171  			libc.Xmemcpy(tls, pCost+8+uintptr(nFrom), zTo, uint32(nTo))
 20172  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20173  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 20174  		}
 20175  	}
 20176  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 20177  	if rc == SQLITE_OK {
 20178  		rc = rc2
 20179  	}
 20180  	if rc == SQLITE_OK {
 20181  		var iLang int32
 20182  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 20183  			(*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(iLang)*20)).FpCost = editDist3CostSort(tls, (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa+uintptr(iLang)*20)).FpCost)
 20184  		}
 20185  	}
 20186  	return rc
 20187  }
 20188  
 20189  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 20190  	var len int32 = 1
 20191  	if int32(c) > 0x7f {
 20192  		if int32(c)&0xe0 == 0xc0 {
 20193  			len = 2
 20194  		} else if int32(c)&0xf0 == 0xe0 {
 20195  			len = 3
 20196  		} else {
 20197  			len = 4
 20198  		}
 20199  	}
 20200  	if len > N {
 20201  		len = N
 20202  	}
 20203  	return len
 20204  }
 20205  
 20206  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20207  	if int32(*(*int8)(unsafe.Pointer(p + 8 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*int8)(unsafe.Pointer(z))) {
 20208  		return 0
 20209  	}
 20210  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 20211  		return 0
 20212  	}
 20213  	if libc.Xstrncmp(tls, p+8+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 20214  		return 0
 20215  	}
 20216  	return 1
 20217  }
 20218  
 20219  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 20220  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 20221  		if int32(*(*int8)(unsafe.Pointer(p + 8))) != int32(*(*int8)(unsafe.Pointer(z))) {
 20222  			return 0
 20223  		}
 20224  		if libc.Xstrncmp(tls, p+8, z, uint32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 20225  			return 0
 20226  		}
 20227  	}
 20228  	return 1
 20229  }
 20230  
 20231  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 20232  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*20)).FnByte
 20233  	if b1 > n2 {
 20234  		return 0
 20235  	}
 20236  
 20237  	if int32(*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*int8)(unsafe.Pointer(z2))) {
 20238  		return 0
 20239  	}
 20240  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint32(b1)) != 0 {
 20241  		return 0
 20242  	}
 20243  	return 1
 20244  }
 20245  
 20246  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 20247  	var i int32
 20248  	if p != 0 {
 20249  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 20250  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*20)).FapDel)
 20251  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*20)).FapSubst)
 20252  		}
 20253  		sqlite3.Xsqlite3_free(tls, p)
 20254  	}
 20255  }
 20256  
 20257  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 20258  	var pStr uintptr
 20259  	var p uintptr
 20260  	var i int32
 20261  
 20262  	if z == uintptr(0) {
 20263  		return uintptr(0)
 20264  	}
 20265  	if n < 0 {
 20266  		n = int32(libc.Xstrlen(tls, z))
 20267  	}
 20268  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(EditDist3FromString{}))+uint32(unsafe.Sizeof(EditDist3From{}))*uint32(n)+uint32(n)+uint32(1)))
 20269  	if pStr == uintptr(0) {
 20270  		return uintptr(0)
 20271  	}
 20272  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*16
 20273  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint32(unsafe.Sizeof(EditDist3From{}))*uint32(n))
 20274  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 20275  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*20
 20276  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint32(n+1))
 20277  	if n != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 20278  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 20279  		n--
 20280  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 20281  		*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = int8(0)
 20282  	} else {
 20283  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 20284  	}
 20285  
 20286  	for i = 0; i < n; i++ {
 20287  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*20
 20288  		libc.Xmemset(tls, pFrom, 0, uint32(unsafe.Sizeof(EditDist3From{})))
 20289  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))), n-i)
 20290  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 20291  			var apNew uintptr
 20292  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 20293  				continue
 20294  			}
 20295  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 20296  				continue
 20297  			}
 20298  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 20299  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 20300  					uint64(uint32(unsafe.Sizeof(uintptr(0)))*uint32((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1)))
 20301  				if apNew == uintptr(0) {
 20302  					break
 20303  				}
 20304  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 20305  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*4)) = p
 20306  			} else {
 20307  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 20308  					uint64(uint32(unsafe.Sizeof(uintptr(0)))*uint32((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1)))
 20309  				if apNew == uintptr(0) {
 20310  					break
 20311  				}
 20312  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 20313  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*4)) = p
 20314  			}
 20315  		}
 20316  		if p != 0 {
 20317  			editDist3FromStringDelete(tls, pStr)
 20318  			pStr = uintptr(0)
 20319  			break
 20320  		}
 20321  	}
 20322  	return pStr
 20323  }
 20324  
 20325  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 20326  	var b uint32
 20327  
 20328  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 20329  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 20330  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 20331  	}
 20332  }
 20333  
 20334  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 20335  	bp := tls.Alloc(1040)
 20336  	defer tls.Free(1040)
 20337  
 20338  	var k int32
 20339  	var n int32
 20340  	var i1 int32
 20341  	var b1 int32
 20342  	var i2 int32
 20343  	var b2 int32
 20344  
 20345  	var a2 uintptr
 20346  	var m uintptr
 20347  	var pToFree uintptr
 20348  	var szRow int32
 20349  	var p uintptr
 20350  	var res int32
 20351  	var nByte sqlite3_uint64
 20352  
 20353  	var apNew uintptr
 20354  	var cx int32
 20355  	var cxp int32
 20356  	var cxd int32
 20357  	var cxu int32
 20358  	var rx int32
 20359  	var rxp int32
 20360  	var b int32
 20361  	var nExtra int32
 20362  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 20363  
 20364  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 20365  	n = (n + 1) & libc.CplInt32(1)
 20366  	nByte = sqlite3_uint64(uint32(n)*uint32(unsafe.Sizeof(uint32(0))) + uint32(unsafe.Sizeof(EditDist3To{}))*uint32(n2))
 20367  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 20368  		goto __1
 20369  	}
 20370  	m = bp
 20371  	pToFree = uintptr(0)
 20372  	goto __2
 20373  __1:
 20374  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 20375  	if !(m == uintptr(0)) {
 20376  		goto __3
 20377  	}
 20378  	return -1
 20379  __3:
 20380  	;
 20381  __2:
 20382  	;
 20383  	a2 = m + uintptr(n)*4
 20384  	libc.Xmemset(tls, a2, 0, uint32(unsafe.Sizeof(EditDist3To{}))*uint32(n2))
 20385  
 20386  	i2 = 0
 20387  __4:
 20388  	if !(i2 < n2) {
 20389  		goto __6
 20390  	}
 20391  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*12)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z2 + uintptr(i2)))), n2-i2)
 20392  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 20393  __7:
 20394  	if !(p != 0) {
 20395  		goto __9
 20396  	}
 20397  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 20398  		goto __10
 20399  	}
 20400  	goto __9
 20401  __10:
 20402  	;
 20403  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 20404  		goto __11
 20405  	}
 20406  	goto __8
 20407  __11:
 20408  	;
 20409  	if !(int32(*(*int8)(unsafe.Pointer(p + 8))) > int32(*(*int8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 20410  		goto __12
 20411  	}
 20412  	goto __9
 20413  __12:
 20414  	;
 20415  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 20416  		goto __13
 20417  	}
 20418  	goto __8
 20419  __13:
 20420  	;
 20421  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FnIns++
 20422  	apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FapIns, uint64(uint32(unsafe.Sizeof(uintptr(0)))*uint32((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FnIns)))
 20423  	if !(apNew == uintptr(0)) {
 20424  		goto __14
 20425  	}
 20426  	res = -1
 20427  	goto editDist3Abort
 20428  __14:
 20429  	;
 20430  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*12)).FapIns = apNew
 20431  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FnIns-1)*4)) = p
 20432  	goto __8
 20433  __8:
 20434  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 20435  	goto __7
 20436  	goto __9
 20437  __9:
 20438  	;
 20439  	goto __5
 20440  __5:
 20441  	i2++
 20442  	goto __4
 20443  	goto __6
 20444  __6:
 20445  	;
 20446  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 20447  	libc.Xmemset(tls, m, 0x01, uint32((n2+1)*szRow)*uint32(unsafe.Sizeof(uint32(0))))
 20448  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 20449  
 20450  	i1 = 0
 20451  __15:
 20452  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20453  		goto __17
 20454  	}
 20455  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*20)).FnByte
 20456  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20457  	k = 0
 20458  __18:
 20459  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FnDel) {
 20460  		goto __20
 20461  	}
 20462  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FapDel + uintptr(k)*4))
 20463  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20464  	goto __19
 20465  __19:
 20466  	k++
 20467  	goto __18
 20468  	goto __20
 20469  __20:
 20470  	;
 20471  	goto __16
 20472  __16:
 20473  	i1 = i1 + b1
 20474  	goto __15
 20475  	goto __17
 20476  __17:
 20477  	;
 20478  	i2 = 0
 20479  __21:
 20480  	if !(i2 < n2) {
 20481  		goto __23
 20482  	}
 20483  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*12)).FnByte
 20484  	rx = szRow * (i2 + b2)
 20485  	rxp = szRow * i2
 20486  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20487  	k = 0
 20488  __24:
 20489  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FnIns) {
 20490  		goto __26
 20491  	}
 20492  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FapIns + uintptr(k)*4))
 20493  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20494  	goto __25
 20495  __25:
 20496  	k++
 20497  	goto __24
 20498  	goto __26
 20499  __26:
 20500  	;
 20501  	i1 = 0
 20502  __27:
 20503  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 20504  		goto __29
 20505  	}
 20506  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*20)).FnByte
 20507  	cxp = rx + i1
 20508  	cx = cxp + b1
 20509  	cxd = rxp + i1
 20510  	cxu = cxd + b1
 20511  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 20512  	k = 0
 20513  __30:
 20514  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FnDel) {
 20515  		goto __32
 20516  	}
 20517  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FapDel + uintptr(k)*4))
 20518  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20519  	goto __31
 20520  __31:
 20521  	k++
 20522  	goto __30
 20523  	goto __32
 20524  __32:
 20525  	;
 20526  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20527  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20528  		goto __33
 20529  	}
 20530  	updateCost(tls, m, cx, cxd, 0)
 20531  __33:
 20532  	;
 20533  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20534  	k = 0
 20535  __34:
 20536  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FnSubst) {
 20537  		goto __36
 20538  	}
 20539  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*20)).FapSubst + uintptr(k)*4))
 20540  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20541  		goto __37
 20542  	}
 20543  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20544  __37:
 20545  	;
 20546  	goto __35
 20547  __35:
 20548  	k++
 20549  	goto __34
 20550  	goto __36
 20551  __36:
 20552  	;
 20553  	goto __28
 20554  __28:
 20555  	i1 = i1 + b1
 20556  	goto __27
 20557  	goto __29
 20558  __29:
 20559  	;
 20560  	goto __22
 20561  __22:
 20562  	i2 = i2 + b2
 20563  	goto __21
 20564  	goto __23
 20565  __23:
 20566  	;
 20567  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 20568  	n = n2
 20569  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 20570  		goto __38
 20571  	}
 20572  	i2 = 1
 20573  __39:
 20574  	if !(i2 <= n2) {
 20575  		goto __41
 20576  	}
 20577  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 20578  	if !(b <= res) {
 20579  		goto __42
 20580  	}
 20581  	res = b
 20582  	n = i2 - 1
 20583  __42:
 20584  	;
 20585  	goto __40
 20586  __40:
 20587  	i2++
 20588  	goto __39
 20589  	goto __41
 20590  __41:
 20591  	;
 20592  __38:
 20593  	;
 20594  	if !(pnMatch != 0) {
 20595  		goto __43
 20596  	}
 20597  	nExtra = 0
 20598  	k = 0
 20599  __44:
 20600  	if !(k < n) {
 20601  		goto __46
 20602  	}
 20603  	if !(int32(*(*int8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 20604  		goto __47
 20605  	}
 20606  	nExtra++
 20607  __47:
 20608  	;
 20609  	goto __45
 20610  __45:
 20611  	k++
 20612  	goto __44
 20613  	goto __46
 20614  __46:
 20615  	;
 20616  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 20617  __43:
 20618  	;
 20619  editDist3Abort:
 20620  	i2 = 0
 20621  __48:
 20622  	if !(i2 < n2) {
 20623  		goto __50
 20624  	}
 20625  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*12)).FapIns)
 20626  	goto __49
 20627  __49:
 20628  	i2++
 20629  	goto __48
 20630  	goto __50
 20631  __50:
 20632  	;
 20633  	sqlite3.Xsqlite3_free(tls, pToFree)
 20634  	return res
 20635  }
 20636  
 20637  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 20638  	var i int32
 20639  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 20640  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*20)).FiLang == iLang {
 20641  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*20
 20642  		}
 20643  	}
 20644  	return uintptr(unsafe.Pointer(&editDist3Lang))
 20645  }
 20646  
 20647  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20648  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 20649  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 20650  	var rc int32
 20651  	if argc == 1 {
 20652  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20653  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 20654  		if rc != 0 {
 20655  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 20656  		}
 20657  	} else {
 20658  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20659  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 20660  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20661  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 20662  		var iLang int32
 20663  		if argc == 3 {
 20664  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 20665  		} else {
 20666  			iLang = 0
 20667  		}
 20668  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 20669  		var pFrom uintptr
 20670  		var dist int32
 20671  
 20672  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 20673  		if pFrom == uintptr(0) {
 20674  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20675  			return
 20676  		}
 20677  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 20678  		editDist3FromStringDelete(tls, pFrom)
 20679  		if dist == -1 {
 20680  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20681  		} else {
 20682  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 20683  		}
 20684  	}
 20685  }
 20686  
 20687  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 20688  	var rc int32
 20689  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 20690  	if pConfig == uintptr(0) {
 20691  		return SQLITE_NOMEM
 20692  	}
 20693  	libc.Xmemset(tls, pConfig, 0, uint32(unsafe.Sizeof(EditDist3Config{})))
 20694  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20695  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20696  		*(*uintptr)(unsafe.Pointer(&struct {
 20697  			f func(*libc.TLS, uintptr, int32, uintptr)
 20698  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20699  	if rc == SQLITE_OK {
 20700  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20701  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20702  			*(*uintptr)(unsafe.Pointer(&struct {
 20703  				f func(*libc.TLS, uintptr, int32, uintptr)
 20704  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20705  	}
 20706  	if rc == SQLITE_OK {
 20707  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20708  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20709  			*(*uintptr)(unsafe.Pointer(&struct {
 20710  				f func(*libc.TLS, uintptr, int32, uintptr)
 20711  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 20712  	} else {
 20713  		sqlite3.Xsqlite3_free(tls, pConfig)
 20714  	}
 20715  	return rc
 20716  }
 20717  
 20718  var sqlite3Utf8Trans1 = [64]uint8{
 20719  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20720  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20721  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 20722  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 20723  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20724  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20725  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20726  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 20727  }
 20728  
 20729  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 20730  	var c int32
 20731  	var i int32
 20732  
 20733  	if 0 != 0 {
 20734  		c = libc.AssignInt32(&i, 0)
 20735  	} else {
 20736  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 20737  		i = 1
 20738  		if c >= 0xc0 {
 20739  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 20740  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 20741  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 20742  			}
 20743  		}
 20744  	}
 20745  	*(*int32)(unsafe.Pointer(pSize)) = i
 20746  	return c
 20747  }
 20748  
 20749  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 20750  	bp := tls.Alloc(4)
 20751  	defer tls.Free(4)
 20752  
 20753  	var i int32
 20754  	var nChar int32 = 0
 20755  	for i = 0; i < nIn; nChar++ {
 20756  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20757  		i = i + *(*int32)(unsafe.Pointer(bp))
 20758  	}
 20759  	return nChar
 20760  }
 20761  
 20762  type Transliteration1 = struct {
 20763  	FcFrom uint16
 20764  	FcTo0  uint8
 20765  	FcTo1  uint8
 20766  	FcTo2  uint8
 20767  	FcTo3  uint8
 20768  }
 20769  
 20770  type Transliteration = Transliteration1
 20771  
 20772  var translit = [389]Transliteration{
 20773  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 20774  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 20775  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 20776  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 20777  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 20778  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 20779  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 20780  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 20781  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 20782  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 20783  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 20784  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 20785  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 20786  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 20787  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 20788  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 20789  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 20790  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 20791  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 20792  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 20793  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 20794  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 20795  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 20796  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 20797  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 20798  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 20799  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 20800  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 20801  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 20802  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 20803  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 20804  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 20805  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20806  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 20807  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 20808  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 20809  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 20810  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 20811  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20812  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 20813  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20814  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 20815  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 20816  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 20817  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 20818  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 20819  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 20820  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 20821  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 20822  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 20823  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 20824  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 20825  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 20826  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 20827  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 20828  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 20829  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20830  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 20831  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 20832  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 20833  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 20834  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 20835  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 20836  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 20837  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20838  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 20839  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 20840  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 20841  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 20842  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 20843  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 20844  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 20845  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 20846  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 20847  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20848  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20849  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 20850  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 20851  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 20852  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 20853  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 20854  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 20855  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 20856  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 20857  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 20858  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 20859  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 20860  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 20861  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 20862  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 20863  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 20864  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 20865  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 20866  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 20867  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 20868  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 20869  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 20870  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 20871  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 20872  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 20873  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 20874  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 20875  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 20876  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 20877  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 20878  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 20879  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 20880  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 20881  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 20882  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 20883  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 20884  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 20885  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 20886  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 20887  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 20888  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 20889  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 20890  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 20891  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 20892  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 20893  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 20894  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 20895  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 20896  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 20897  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 20898  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 20899  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 20900  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 20901  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 20902  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 20903  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 20904  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 20905  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 20906  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 20907  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 20908  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 20909  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 20910  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 20911  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 20912  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 20913  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 20914  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 20915  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 20916  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 20917  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 20918  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 20919  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 20920  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 20921  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 20922  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20923  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 20924  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 20925  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 20926  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 20927  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 20928  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 20929  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 20930  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 20931  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20932  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20933  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 20934  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 20935  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 20936  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 20937  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 20938  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 20939  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 20940  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 20941  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 20942  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 20943  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 20944  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 20945  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 20946  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 20947  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 20948  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 20949  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 20950  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 20951  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 20952  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 20953  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 20954  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 20955  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 20956  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 20957  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 20958  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 20959  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 20960  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 20961  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 20962  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 20963  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 20964  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 20965  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 20966  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 20967  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 20968  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 20969  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 20970  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 20971  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 20972  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 20973  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 20974  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 20975  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 20976  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 20977  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 20978  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 20979  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 20980  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 20981  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 20982  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 20983  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 20984  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 20985  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 20986  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 20987  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20988  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 20989  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 20990  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 20991  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 20992  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 20993  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 20994  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 20995  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 20996  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 20997  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 20998  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 20999  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 21000  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 21001  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21002  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 21003  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 21004  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 21005  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 21006  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 21007  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 21008  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 21009  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 21010  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 21011  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 21012  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 21013  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 21014  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 21015  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 21016  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 21017  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 21018  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 21019  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 21020  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 21021  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 21022  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 21023  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 21024  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 21025  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 21026  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 21027  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 21028  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 21029  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 21030  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 21031  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21032  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 21033  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 21034  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 21035  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 21036  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 21037  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 21038  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 21039  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 21040  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 21041  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 21042  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 21043  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 21044  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 21045  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 21046  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 21047  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 21048  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 21049  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 21050  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 21051  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 21052  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 21053  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 21054  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 21055  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 21056  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 21057  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 21058  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 21059  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 21060  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 21061  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 21062  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 21063  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 21064  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 21065  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 21066  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 21067  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 21068  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 21069  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 21070  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 21071  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 21072  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 21073  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 21074  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 21075  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 21076  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 21077  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 21078  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 21079  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 21080  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21081  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 21082  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 21083  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 21084  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 21085  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 21086  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 21087  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 21088  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 21089  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 21090  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 21091  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 21092  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 21093  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 21094  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 21095  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 21096  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 21097  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 21098  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 21099  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 21100  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 21101  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 21102  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 21103  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 21104  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 21105  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 21106  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 21107  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 21108  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 21109  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 21110  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 21111  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 21112  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 21113  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 21114  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 21115  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 21116  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 21117  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 21118  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 21119  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 21120  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 21121  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 21122  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 21123  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 21124  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 21125  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 21126  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 21127  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 21128  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 21129  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 21130  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 21131  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 21132  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 21133  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 21134  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 21135  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 21136  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 21137  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 21138  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 21139  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 21140  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 21141  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 21142  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 21143  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 21144  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 21145  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 21146  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 21147  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 21148  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 21149  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 21150  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 21151  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 21152  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 21153  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 21154  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 21155  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 21156  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 21157  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 21158  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 21159  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 21160  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21161  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 21162  }
 21163  
 21164  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 21165  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint32(unsafe.Sizeof(translit))/uint32(unsafe.Sizeof(Transliteration{})) - uint32(1))
 21166  	return uintptr(unsafe.Pointer(&translit))
 21167  }
 21168  
 21169  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 21170  	bp := tls.Alloc(8)
 21171  	defer tls.Free(8)
 21172  
 21173  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 21174  	var c int32
 21175  
 21176  	var nOut int32
 21177  	if zOut == uintptr(0) {
 21178  		return uintptr(0)
 21179  	}
 21180  	nOut = 0
 21181  	for nIn > 0 {
 21182  		c = utf8Read(tls, zIn, nIn, bp)
 21183  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21184  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21185  		if c <= 127 {
 21186  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 21187  		} else {
 21188  			var xBtm int32
 21189  			var x int32
 21190  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21191  			xBtm = 0
 21192  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21193  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21194  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21195  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 21196  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21197  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 21198  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21199  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 21200  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21201  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 21202  							}
 21203  						}
 21204  					}
 21205  					c = 0
 21206  					break
 21207  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21208  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21209  				} else {
 21210  					xBtm = x + 1
 21211  				}
 21212  			}
 21213  			if c != 0 {
 21214  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 21215  			}
 21216  		}
 21217  	}
 21218  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 21219  	return zOut
 21220  }
 21221  
 21222  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 21223  	bp := tls.Alloc(8)
 21224  	defer tls.Free(8)
 21225  
 21226  	var i int32
 21227  	var c int32
 21228  
 21229  	var nOut int32
 21230  	var nChar int32
 21231  
 21232  	i = libc.AssignInt32(&nOut, 0)
 21233  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 21234  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 21235  		i = i + *(*int32)(unsafe.Pointer(bp))
 21236  
 21237  		nOut++
 21238  		if c >= 128 {
 21239  			var xBtm int32
 21240  			var x int32
 21241  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 21242  			xBtm = 0
 21243  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 21244  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 21245  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 21246  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 21247  						nOut++
 21248  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 21249  							nOut++
 21250  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 21251  								nOut++
 21252  							}
 21253  						}
 21254  					}
 21255  					break
 21256  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 21257  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 21258  				} else {
 21259  					xBtm = x + 1
 21260  				}
 21261  			}
 21262  		}
 21263  	}
 21264  
 21265  	return nChar
 21266  }
 21267  
 21268  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21269  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21270  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21271  	var zOut uintptr = transliterate(tls, zIn, nIn)
 21272  	if zOut == uintptr(0) {
 21273  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 21274  	} else {
 21275  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 21276  	}
 21277  }
 21278  
 21279  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 21280  	bp := tls.Alloc(4)
 21281  	defer tls.Free(4)
 21282  
 21283  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21284  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21285  	var c int32
 21286  
 21287  	var scriptMask int32 = 0
 21288  	var res int32
 21289  	var seenDigit int32 = 0
 21290  
 21291  	for nIn > 0 {
 21292  		c = utf8Read(tls, zIn, nIn, bp)
 21293  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 21294  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 21295  		if c < 0x02af {
 21296  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 21297  				scriptMask = scriptMask | SCRIPT_LATIN
 21298  			} else if c >= '0' && c <= '9' {
 21299  				seenDigit = 1
 21300  			}
 21301  		} else if c >= 0x0400 && c <= 0x04ff {
 21302  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 21303  		} else if c >= 0x0386 && c <= 0x03ce {
 21304  			scriptMask = scriptMask | SCRIPT_GREEK
 21305  		} else if c >= 0x0590 && c <= 0x05ff {
 21306  			scriptMask = scriptMask | SCRIPT_HEBREW
 21307  		} else if c >= 0x0600 && c <= 0x06ff {
 21308  			scriptMask = scriptMask | SCRIPT_ARABIC
 21309  		}
 21310  	}
 21311  	if scriptMask == 0 && seenDigit != 0 {
 21312  		scriptMask = SCRIPT_LATIN
 21313  	}
 21314  	switch scriptMask {
 21315  	case 0:
 21316  		res = 999
 21317  		break
 21318  	case SCRIPT_LATIN:
 21319  		res = 215
 21320  		break
 21321  	case SCRIPT_CYRILLIC:
 21322  		res = 220
 21323  		break
 21324  	case SCRIPT_GREEK:
 21325  		res = 200
 21326  		break
 21327  	case SCRIPT_HEBREW:
 21328  		res = 125
 21329  		break
 21330  	case SCRIPT_ARABIC:
 21331  		res = 160
 21332  		break
 21333  	default:
 21334  		res = 998
 21335  		break
 21336  	}
 21337  	sqlite3.Xsqlite3_result_int(tls, context, res)
 21338  }
 21339  
 21340  type spellfix1_vtab1 = struct {
 21341  	Fbase       sqlite3_vtab
 21342  	Fdb         uintptr
 21343  	FzDbName    uintptr
 21344  	FzTableName uintptr
 21345  	FzCostTable uintptr
 21346  	FpConfig3   uintptr
 21347  }
 21348  
 21349  type spellfix1_vtab = spellfix1_vtab1
 21350  type spellfix1_cursor1 = struct {
 21351  	Fbase      sqlite3_vtab_cursor
 21352  	FpVTab     uintptr
 21353  	FzPattern  uintptr
 21354  	FidxNum    int32
 21355  	FnRow      int32
 21356  	FnAlloc    int32
 21357  	FiRow      int32
 21358  	FiLang     int32
 21359  	FiTop      int32
 21360  	FiScope    int32
 21361  	FnSearch   int32
 21362  	FpFullScan uintptr
 21363  	Fa         uintptr
 21364  }
 21365  
 21366  type spellfix1_cursor = spellfix1_cursor1
 21367  
 21368  type spellfix1_row = struct {
 21369  	FiRowid    sqlite3_int64
 21370  	FzWord     uintptr
 21371  	FiRank     int32
 21372  	FiDistance int32
 21373  	FiScore    int32
 21374  	FiMatchlen int32
 21375  	FzHash     [32]int8
 21376  }
 21377  
 21378  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 21379  	var ap va_list
 21380  	_ = ap
 21381  	var zSql uintptr
 21382  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 21383  		return
 21384  	}
 21385  	ap = va
 21386  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 21387  	_ = ap
 21388  	if zSql == uintptr(0) {
 21389  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 21390  	} else {
 21391  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 21392  		sqlite3.Xsqlite3_free(tls, zSql)
 21393  	}
 21394  }
 21395  
 21396  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 21397  	bp := tls.Alloc(20)
 21398  	defer tls.Free(20)
 21399  
 21400  	var p uintptr = pVTab
 21401  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 21402  	if isDestroy != 0 {
 21403  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21404  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 21405  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21406  	}
 21407  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 21408  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21409  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21410  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21411  		sqlite3.Xsqlite3_free(tls, p)
 21412  	}
 21413  	return *(*int32)(unsafe.Pointer(bp + 16))
 21414  }
 21415  
 21416  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 21417  	return spellfix1Uninit(tls, 0, pVTab)
 21418  }
 21419  
 21420  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 21421  	return spellfix1Uninit(tls, 1, pVTab)
 21422  }
 21423  
 21424  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 21425  	bp := tls.Alloc(8)
 21426  	defer tls.Free(8)
 21427  
 21428  	var zOut uintptr
 21429  	var i int32
 21430  	var j int32
 21431  	var c int8
 21432  	for int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zIn)))))*2)))&int32(_ISspace) != 0 {
 21433  		zIn++
 21434  	}
 21435  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 21436  	if zOut == uintptr(0) {
 21437  		return uintptr(0)
 21438  	}
 21439  	i = int32(libc.Xstrlen(tls, zOut))
 21440  	*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
 21441  	c = *(*int8)(unsafe.Pointer(zOut))
 21442  	if int32(c) == '\'' || int32(c) == '"' {
 21443  		i = 1
 21444  		j = 0
 21445  		for ; 1 != 0; i++ {
 21446  			*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zOut + uintptr(i)))
 21447  			if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 21448  				if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 21449  					i++
 21450  				} else {
 21451  					*(*int8)(unsafe.Pointer(zOut + uintptr(j-1))) = int8(0)
 21452  					break
 21453  				}
 21454  			}
 21455  		}
 21456  	}
 21457  	return zOut
 21458  }
 21459  
 21460  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21461  	bp := tls.Alloc(60)
 21462  	defer tls.Free(60)
 21463  
 21464  	var pNew uintptr = uintptr(0)
 21465  
 21466  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 21467  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*4))
 21468  	var nDbName int32
 21469  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 21470  	var i int32
 21471  
 21472  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 21473  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(spellfix1_vtab{}))+uint32(nDbName)+uint32(1)))
 21474  	if pNew == uintptr(0) {
 21475  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21476  	} else {
 21477  		libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(spellfix1_vtab{})))
 21478  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*32
 21479  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint32(nDbName+1))
 21480  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 21481  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 21482  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 21483  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21484  		} else {
 21485  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 21486  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 21487  				ts+7226)
 21488  		}
 21489  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 21490  			spellfix1DbExec(tls, bp+56, db,
 21491  				ts+7380,
 21492  				libc.VaList(bp+8, zDbName, zTableName))
 21493  			spellfix1DbExec(tls, bp+56, db,
 21494  				ts+7514,
 21495  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 21496  		}
 21497  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 21498  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), ts+7599, uint32(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21499  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))+16)
 21500  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 21501  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 21502  				}
 21503  				continue
 21504  			}
 21505  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
 21506  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 21507  		}
 21508  	}
 21509  
 21510  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 21511  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 21512  		spellfix1Uninit(tls, 0, pNew)
 21513  	} else {
 21514  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 21515  	}
 21516  	return *(*int32)(unsafe.Pointer(bp + 56))
 21517  }
 21518  
 21519  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21520  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 21521  }
 21522  
 21523  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21524  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21525  }
 21526  
 21527  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21528  	var i int32
 21529  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21530  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*60)).FzWord)
 21531  	}
 21532  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21533  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21534  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21535  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21536  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21537  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21538  	}
 21539  }
 21540  
 21541  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21542  	var aNew uintptr
 21543  
 21544  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(uint32(unsafe.Sizeof(spellfix1_row{}))*uint32(N)))
 21545  	if aNew == uintptr(0) && N > 0 {
 21546  		spellfix1ResetCursor(tls, pCur)
 21547  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 21548  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 21549  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 21550  	} else {
 21551  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 21552  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 21553  	}
 21554  }
 21555  
 21556  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 21557  	var pCur uintptr = cur
 21558  	spellfix1ResetCursor(tls, pCur)
 21559  	spellfix1ResizeCursor(tls, pCur, 0)
 21560  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21561  	sqlite3.Xsqlite3_free(tls, pCur)
 21562  	return SQLITE_OK
 21563  }
 21564  
 21565  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 21566  	var iPlan int32 = 0
 21567  	var iLangTerm int32 = -1
 21568  	var iTopTerm int32 = -1
 21569  	var iScopeTerm int32 = -1
 21570  	var iDistTerm int32 = -1
 21571  	var iRowidTerm int32 = -1
 21572  	var i int32
 21573  	var pConstraint uintptr
 21574  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 21575  	i = 0
 21576  __1:
 21577  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 21578  		goto __3
 21579  	}
 21580  	{
 21581  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 21582  			goto __2
 21583  		}
 21584  
 21585  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 21586  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 21587  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 21588  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 21589  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 21590  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 21591  		}
 21592  
 21593  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 21594  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 21595  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21596  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 21597  			iLangTerm = i
 21598  		}
 21599  
 21600  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 21601  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 21602  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21603  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 21604  			iTopTerm = i
 21605  		}
 21606  
 21607  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 21608  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 21609  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21610  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 21611  			iScopeTerm = i
 21612  		}
 21613  
 21614  		if iPlan&(0x10|0x20) == 0 &&
 21615  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 21616  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 21617  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 21618  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 21619  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 21620  			} else {
 21621  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 21622  			}
 21623  			iDistTerm = i
 21624  		}
 21625  
 21626  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 21627  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 21628  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21629  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 21630  			iRowidTerm = i
 21631  		}
 21632  
 21633  	}
 21634  	goto __2
 21635  __2:
 21636  	i++
 21637  	pConstraint += 12
 21638  	goto __1
 21639  	goto __3
 21640  __3:
 21641  	;
 21642  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 21643  		var idx int32 = 2
 21644  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 21645  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 21646  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 21647  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 21648  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 21649  		}
 21650  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 21651  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21652  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 21653  		}
 21654  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 21655  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21656  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 21657  		}
 21658  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 21659  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21660  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 21661  		}
 21662  		if iPlan&(0x10|0x20) != 0 {
 21663  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21664  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 21665  		}
 21666  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 21667  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 21668  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 21669  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 21670  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 21671  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 21672  	} else {
 21673  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 21674  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 21675  	}
 21676  	return SQLITE_OK
 21677  }
 21678  
 21679  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 21680  	var p uintptr = pVTab
 21681  	var pCur uintptr
 21682  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21683  	if pCur == uintptr(0) {
 21684  		return SQLITE_NOMEM
 21685  	}
 21686  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(spellfix1_cursor{})))
 21687  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 21688  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 21689  	return SQLITE_OK
 21690  }
 21691  
 21692  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 21693  	var iLog2 int32
 21694  	iLog2 = 0
 21695  __1:
 21696  	if !(iRank > 0) {
 21697  		goto __3
 21698  	}
 21699  	{
 21700  	}
 21701  	goto __2
 21702  __2:
 21703  	iLog2++
 21704  	iRank >>= 1
 21705  	goto __1
 21706  	goto __3
 21707  __3:
 21708  	;
 21709  	return iDistance + 32 - iLog2
 21710  }
 21711  
 21712  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 21713  	var a uintptr = A
 21714  	var b uintptr = B
 21715  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 21716  }
 21717  
 21718  type MatchQuery1 = struct {
 21719  	FpCur       uintptr
 21720  	FpStmt      uintptr
 21721  	FzHash      [32]int8
 21722  	FzPattern   uintptr
 21723  	FnPattern   int32
 21724  	FpMatchStr3 uintptr
 21725  	FpConfig3   uintptr
 21726  	FpLang      uintptr
 21727  	FiLang      int32
 21728  	FiScope     int32
 21729  	FiMaxDist   int32
 21730  	Frc         int32
 21731  	FnRun       int32
 21732  	FazPrior    [1][32]int8
 21733  }
 21734  
 21735  type MatchQuery = MatchQuery1
 21736  
 21737  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 21738  	bp := tls.Alloc(76)
 21739  	defer tls.Free(76)
 21740  
 21741  	var zK1 uintptr
 21742  	var zWord uintptr
 21743  	var iDist int32
 21744  	var iRank int32
 21745  	var iScore int32
 21746  	var iWorst int32 = 0
 21747  	var idx int32
 21748  	var idxWorst int32 = -1
 21749  	var i int32
 21750  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 21751  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 21752  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 21753  
 21754  	var zClass uintptr
 21755  	var nClass int32
 21756  	var rc int32
 21757  
 21758  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 21759  		return
 21760  	}
 21761  	zClass = phoneticHash(tls, zQuery, nQuery)
 21762  	if zClass == uintptr(0) {
 21763  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21764  		return
 21765  	}
 21766  	nClass = int32(libc.Xstrlen(tls, zClass))
 21767  	if nClass > SPELLFIX_MX_HASH-2 {
 21768  		nClass = SPELLFIX_MX_HASH - 2
 21769  		*(*int8)(unsafe.Pointer(zClass + uintptr(nClass))) = int8(0)
 21770  	}
 21771  	if nClass <= iScope {
 21772  		if nClass > 2 {
 21773  			iScope = nClass - 1
 21774  		} else {
 21775  			iScope = nClass
 21776  		}
 21777  	}
 21778  	libc.Xmemcpy(tls, bp+8, zClass, uint32(iScope))
 21779  	sqlite3.Xsqlite3_free(tls, zClass)
 21780  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = int8(0)
 21781  	libc.Xmemcpy(tls, bp+40, bp+8, uint32(iScope))
 21782  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = int8('Z')
 21783  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = int8(0)
 21784  
 21785  	libc.Xmemcpy(tls, p+80+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint32(iScope+1))
 21786  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 21787  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 21788  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21789  		return
 21790  	}
 21791  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 21792  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 21793  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 21794  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 21795  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 21796  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 21797  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 21798  		} else {
 21799  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 21800  			if zK1 == uintptr(0) {
 21801  				continue
 21802  			}
 21803  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 21804  		}
 21805  		if iDist < 0 {
 21806  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21807  			break
 21808  		}
 21809  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 21810  
 21811  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 21812  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 21813  				continue
 21814  			}
 21815  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 21816  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 21817  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 21818  					break
 21819  				}
 21820  			}
 21821  		}
 21822  
 21823  		iScore = spellfix1Score(tls, iDist, iRank)
 21824  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21825  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21826  		} else if iScore < iWorst {
 21827  			idx = idxWorst
 21828  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*60)).FzWord)
 21829  		} else {
 21830  			continue
 21831  		}
 21832  
 21833  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FzWord = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pStmt, 1)))
 21834  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*60)).FzWord == uintptr(0) {
 21835  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21836  			break
 21837  		}
 21838  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 21839  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FiRank = iRank
 21840  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FiDistance = iDist
 21841  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FiScore = iScore
 21842  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*60)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 21843  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*60+28, bp+8, uint32(iScope+1))
 21844  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21845  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 21846  		}
 21847  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21848  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 21849  			idxWorst = 0
 21850  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21851  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*60)).FiScore
 21852  				if iWorst < iScore {
 21853  					iWorst = iScore
 21854  					idxWorst = i
 21855  				}
 21856  			}
 21857  		}
 21858  	}
 21859  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 21860  	if rc != 0 {
 21861  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 21862  	}
 21863  }
 21864  
 21865  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21866  	bp := tls.Alloc(140)
 21867  	defer tls.Free(140)
 21868  
 21869  	var idxNum int32
 21870  	var zMatchThis uintptr
 21871  	var pMatchStr3 uintptr
 21872  	var zPattern uintptr
 21873  	var nPattern int32
 21874  	var iLimit int32
 21875  	var iScope int32
 21876  	var iLang int32
 21877  	var zSql uintptr
 21878  
 21879  	var rc int32
 21880  	var idx int32
 21881  	var p uintptr
 21882  
 21883  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21884  	pMatchStr3 = uintptr(0)
 21885  	iLimit = 20
 21886  	iScope = 3
 21887  	iLang = 0
 21888  	*(*uintptr)(unsafe.Pointer(bp + 136)) = uintptr(0)
 21889  	idx = 1
 21890  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21891  
 21892  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21893  		goto __1
 21894  	}
 21895  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 21896  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21897  		goto __2
 21898  	}
 21899  	return SQLITE_NOMEM
 21900  __2:
 21901  	;
 21902  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint32(unsafe.Sizeof(EditDist3Config{})))
 21903  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21904  	if !(rc != 0) {
 21905  		goto __3
 21906  	}
 21907  	return rc
 21908  __3:
 21909  	;
 21910  __1:
 21911  	;
 21912  	libc.Xmemset(tls, bp+24, 0, uint32(unsafe.Sizeof(MatchQuery{})))
 21913  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 21914  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 21915  
 21916  	if !(idxNum&2 != 0) {
 21917  		goto __4
 21918  	}
 21919  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*4)))
 21920  __4:
 21921  	;
 21922  	if !(idxNum&4 != 0) {
 21923  		goto __5
 21924  	}
 21925  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*4)))
 21926  	if !(iLimit < 1) {
 21927  		goto __6
 21928  	}
 21929  	iLimit = 1
 21930  __6:
 21931  	;
 21932  __5:
 21933  	;
 21934  	if !(idxNum&8 != 0) {
 21935  		goto __7
 21936  	}
 21937  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*4)))
 21938  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 21939  		goto __8
 21940  	}
 21941  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 21942  __8:
 21943  	;
 21944  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 21945  		goto __9
 21946  	}
 21947  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 21948  __9:
 21949  	;
 21950  __7:
 21951  	;
 21952  	if !(idxNum&(16|32) != 0) {
 21953  		goto __10
 21954  	}
 21955  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*4)))
 21956  	if !(idxNum&16 != 0) {
 21957  		goto __11
 21958  	}
 21959  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 21960  __11:
 21961  	;
 21962  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 21963  		goto __12
 21964  	}
 21965  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 21966  __12:
 21967  	;
 21968  __10:
 21969  	;
 21970  	spellfix1ResetCursor(tls, pCur)
 21971  	spellfix1ResizeCursor(tls, pCur, iLimit)
 21972  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21973  	if !(zMatchThis == uintptr(0)) {
 21974  		goto __13
 21975  	}
 21976  	return SQLITE_OK
 21977  __13:
 21978  	;
 21979  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 21980  		goto __14
 21981  	}
 21982  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 21983  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 21984  	if !(pMatchStr3 == uintptr(0)) {
 21985  		goto __16
 21986  	}
 21987  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21988  	goto filter_exit
 21989  __16:
 21990  	;
 21991  	goto __15
 21992  __14:
 21993  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 21994  __15:
 21995  	;
 21996  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21997  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21998  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 21999  	if !(zPattern == uintptr(0)) {
 22000  		goto __17
 22001  	}
 22002  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22003  	goto filter_exit
 22004  __17:
 22005  	;
 22006  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 22007  	if !(int32(*(*int8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 22008  		goto __18
 22009  	}
 22010  	nPattern--
 22011  __18:
 22012  	;
 22013  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22014  		ts+7650,
 22015  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 22016  	if !(zSql == uintptr(0)) {
 22017  		goto __19
 22018  	}
 22019  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22020  	*(*uintptr)(unsafe.Pointer(bp + 136)) = uintptr(0)
 22021  	goto filter_exit
 22022  __19:
 22023  	;
 22024  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+136, uintptr(0))
 22025  	sqlite3.Xsqlite3_free(tls, zSql)
 22026  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 22027  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 22028  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 136))
 22029  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 22030  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 22031  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 22032  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 22033  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 22034  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 22035  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 22036  		goto __20
 22037  	}
 22038  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 22039  __20:
 22040  	;
 22041  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 22042  		goto __21
 22043  	}
 22044  	libc.Xqsort(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow), uint32(unsafe.Sizeof(spellfix1_row{})), *(*uintptr)(unsafe.Pointer(&struct {
 22045  		f func(*libc.TLS, uintptr, uintptr) int32
 22046  	}{spellfix1RowCompare})))
 22047  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 22048  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 22049  	goto __22
 22050  __21:
 22051  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 22052  __22:
 22053  	;
 22054  filter_exit:
 22055  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 136)))
 22056  	editDist3FromStringDelete(tls, pMatchStr3)
 22057  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 22058  }
 22059  
 22060  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 22061  	bp := tls.Alloc(24)
 22062  	defer tls.Free(24)
 22063  
 22064  	var rc int32 = SQLITE_OK
 22065  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 22066  	var zSql uintptr
 22067  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 22068  	spellfix1ResetCursor(tls, pCur)
 22069  
 22070  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 22071  		ts+7750,
 22072  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 22073  			func() uintptr {
 22074  				if idxNum&64 != 0 {
 22075  					return ts + 7809
 22076  				}
 22077  				return ts + 584
 22078  			}()))
 22079  	if zSql == uintptr(0) {
 22080  		return SQLITE_NOMEM
 22081  	}
 22082  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+44, uintptr(0))
 22083  	sqlite3.Xsqlite3_free(tls, zSql)
 22084  	if rc == SQLITE_OK && idxNum&64 != 0 {
 22085  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 22086  	}
 22087  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+24, 0)
 22088  	if rc == SQLITE_OK {
 22089  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22090  		if rc == SQLITE_ROW {
 22091  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 22092  			rc = SQLITE_OK
 22093  		}
 22094  		if rc == SQLITE_DONE {
 22095  			rc = SQLITE_OK
 22096  		}
 22097  	} else {
 22098  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 22099  	}
 22100  	return rc
 22101  }
 22102  
 22103  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 22104  	var pCur uintptr = cur
 22105  	var rc int32
 22106  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 22107  	if idxNum&1 != 0 {
 22108  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 22109  	} else {
 22110  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 22111  	}
 22112  	return rc
 22113  }
 22114  
 22115  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 22116  	var pCur uintptr = cur
 22117  	var rc int32 = SQLITE_OK
 22118  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 22119  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22120  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 22121  			if rc != SQLITE_ROW {
 22122  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 22123  			}
 22124  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 22125  				rc = SQLITE_OK
 22126  			}
 22127  		} else {
 22128  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 22129  		}
 22130  	}
 22131  	return rc
 22132  }
 22133  
 22134  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 22135  	var pCur uintptr = cur
 22136  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 22137  }
 22138  
 22139  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 22140  	bp := tls.Alloc(4)
 22141  	defer tls.Free(4)
 22142  
 22143  	var pCur uintptr = cur
 22144  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22145  		if i <= SPELLFIX_COL_LANGID {
 22146  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 22147  		} else {
 22148  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22149  		}
 22150  		return SQLITE_OK
 22151  	}
 22152  	switch i {
 22153  	case SPELLFIX_COL_WORD:
 22154  		{
 22155  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FzWord, -1, uintptr(0))
 22156  			break
 22157  
 22158  		}
 22159  	case SPELLFIX_COL_RANK:
 22160  		{
 22161  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FiRank)
 22162  			break
 22163  
 22164  		}
 22165  	case SPELLFIX_COL_DISTANCE:
 22166  		{
 22167  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FiDistance)
 22168  			break
 22169  
 22170  		}
 22171  	case SPELLFIX_COL_LANGID:
 22172  		{
 22173  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 22174  			break
 22175  
 22176  		}
 22177  	case SPELLFIX_COL_SCORE:
 22178  		{
 22179  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FiScore)
 22180  			break
 22181  
 22182  		}
 22183  	case SPELLFIX_COL_MATCHLEN:
 22184  		{
 22185  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FiMatchlen
 22186  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 22187  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 22188  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FzWord
 22189  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 22190  
 22191  				if nPattern > 0 && int32(*(*int8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 22192  					var zTranslit uintptr
 22193  					var res int32
 22194  					zTranslit = transliterate(tls, zWord, nWord)
 22195  					if !(zTranslit != 0) {
 22196  						return SQLITE_NOMEM
 22197  					}
 22198  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 22199  					sqlite3.Xsqlite3_free(tls, zTranslit)
 22200  					if res < 0 {
 22201  						return SQLITE_NOMEM
 22202  					}
 22203  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 22204  				} else {
 22205  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 22206  				}
 22207  			}
 22208  
 22209  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 22210  			break
 22211  
 22212  		}
 22213  	case SPELLFIX_COL_PHONEHASH:
 22214  		{
 22215  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60+28, -1, uintptr(0))
 22216  			break
 22217  
 22218  		}
 22219  	case SPELLFIX_COL_TOP:
 22220  		{
 22221  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 22222  			break
 22223  
 22224  		}
 22225  	case SPELLFIX_COL_SCOPE:
 22226  		{
 22227  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 22228  			break
 22229  
 22230  		}
 22231  	case SPELLFIX_COL_SRCHCNT:
 22232  		{
 22233  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 22234  			break
 22235  
 22236  		}
 22237  	default:
 22238  		{
 22239  			sqlite3.Xsqlite3_result_null(tls, ctx)
 22240  			break
 22241  
 22242  		}
 22243  	}
 22244  	return SQLITE_OK
 22245  }
 22246  
 22247  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 22248  	var pCur uintptr = cur
 22249  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 22250  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 22251  	} else {
 22252  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*60)).FiRowid
 22253  	}
 22254  	return SQLITE_OK
 22255  }
 22256  
 22257  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 22258  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 22259  
 22260  	return azConflict[eConflict-1]
 22261  }
 22262  
 22263  var azConflict = [5]uintptr{
 22264  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 22265  }
 22266  
 22267  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 22268  	bp := tls.Alloc(284)
 22269  	defer tls.Free(284)
 22270  
 22271  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 22272  	var rowid sqlite3_int64
 22273  	var newRowid sqlite3_int64
 22274  	var p uintptr = pVTab
 22275  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22276  
 22277  	if argc == 1 {
 22278  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22279  		spellfix1DbExec(tls, bp+280, db,
 22280  			ts+7854,
 22281  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 22282  	} else {
 22283  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 22284  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 22285  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*4)))
 22286  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 22287  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*4)))
 22288  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*4)))
 22289  		var zK1 uintptr
 22290  		var zK2 uintptr
 22291  		var i int32
 22292  		var c int8
 22293  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 22294  
 22295  		if zWord == uintptr(0) {
 22296  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*4)))
 22297  			if zCmd == uintptr(0) {
 22298  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 22299  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 22300  				return SQLITE_CONSTRAINT | int32(5)<<8
 22301  			}
 22302  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 22303  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22304  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22305  				return SQLITE_OK
 22306  			}
 22307  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint32(16)) == 0 {
 22308  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 22309  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 22310  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22311  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 22312  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 22313  					return SQLITE_NOMEM
 22314  				}
 22315  				if int32(*(*int8)(unsafe.Pointer((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable))) == 0 || sqlite3.Xsqlite3_stricmp(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable, ts+7939) == 0 {
 22316  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 22317  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 22318  				}
 22319  				return SQLITE_OK
 22320  			}
 22321  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 22322  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 22323  			return SQLITE_ERROR
 22324  		}
 22325  		if iRank < 1 {
 22326  			iRank = 1
 22327  		}
 22328  		if zSoundslike != 0 {
 22329  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 22330  		} else {
 22331  			zK1 = transliterate(tls, zWord, nWord)
 22332  		}
 22333  		if zK1 == uintptr(0) {
 22334  			return SQLITE_NOMEM
 22335  		}
 22336  		for i = 0; int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 22337  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 22338  				*(*int8)(unsafe.Pointer(zK1 + uintptr(i))) += int8('a' - 'A')
 22339  			}
 22340  		}
 22341  		zK2 = phoneticHash(tls, zK1, i)
 22342  		if zK2 == uintptr(0) {
 22343  			sqlite3.Xsqlite3_free(tls, zK1)
 22344  			return SQLITE_NOMEM
 22345  		}
 22346  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 22347  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))) == SQLITE_NULL {
 22348  				spellfix1DbExec(tls, bp+280, db,
 22349  					ts+7979,
 22350  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22351  						iRank, iLang, zWord, zK1, zWord, zK2))
 22352  			} else {
 22353  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 22354  				spellfix1DbExec(tls, bp+280, db,
 22355  					ts+8065,
 22356  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 22357  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 22358  			}
 22359  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 22360  		} else {
 22361  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22362  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 22363  			spellfix1DbExec(tls, bp+280, db,
 22364  				ts+8165,
 22365  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 22366  					zWord, zK1, zWord, zK2, rowid))
 22367  		}
 22368  		sqlite3.Xsqlite3_free(tls, zK1)
 22369  		sqlite3.Xsqlite3_free(tls, zK2)
 22370  	}
 22371  	return *(*int32)(unsafe.Pointer(bp + 280))
 22372  }
 22373  
 22374  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 22375  	bp := tls.Alloc(36)
 22376  	defer tls.Free(36)
 22377  
 22378  	var p uintptr = pVTab
 22379  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 22380  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 22381  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 22382  	if zNewName == uintptr(0) {
 22383  		return SQLITE_NOMEM
 22384  	}
 22385  	spellfix1DbExec(tls, bp+32, db,
 22386  		ts+8274,
 22387  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 22388  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 22389  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 22390  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 22391  	} else {
 22392  		sqlite3.Xsqlite3_free(tls, zNewName)
 22393  	}
 22394  	return *(*int32)(unsafe.Pointer(bp + 32))
 22395  }
 22396  
 22397  var spellfix1Module = sqlite3_module{
 22398  	FxCreate:     0,
 22399  	FxConnect:    0,
 22400  	FxBestIndex:  0,
 22401  	FxDisconnect: 0,
 22402  	FxDestroy:    0,
 22403  	FxOpen:       0,
 22404  	FxClose:      0,
 22405  	FxFilter:     0,
 22406  	FxNext:       0,
 22407  	FxEof:        0,
 22408  	FxColumn:     0,
 22409  	FxRowid:      0,
 22410  	FxUpdate:     0,
 22411  	FxRename:     0,
 22412  }
 22413  
 22414  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 22415  	var rc int32 = SQLITE_OK
 22416  	var i int32
 22417  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 22418  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22419  		*(*uintptr)(unsafe.Pointer(&struct {
 22420  			f func(*libc.TLS, uintptr, int32, uintptr)
 22421  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 22422  	if rc == SQLITE_OK {
 22423  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 22424  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22425  			*(*uintptr)(unsafe.Pointer(&struct {
 22426  				f func(*libc.TLS, uintptr, int32, uintptr)
 22427  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 22428  	}
 22429  	if rc == SQLITE_OK {
 22430  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 22431  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22432  			*(*uintptr)(unsafe.Pointer(&struct {
 22433  				f func(*libc.TLS, uintptr, int32, uintptr)
 22434  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 22435  	}
 22436  	if rc == SQLITE_OK {
 22437  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 22438  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 22439  			*(*uintptr)(unsafe.Pointer(&struct {
 22440  				f func(*libc.TLS, uintptr, int32, uintptr)
 22441  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 22442  	}
 22443  	if rc == SQLITE_OK {
 22444  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 22445  	}
 22446  	if rc == SQLITE_OK {
 22447  		rc = editDist3Install(tls, db)
 22448  	}
 22449  
 22450  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(translit))/uint32(unsafe.Sizeof(Transliteration{}))-uint32(1); i++ {
 22451  	}
 22452  
 22453  	return rc
 22454  }
 22455  
 22456  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22457  	_ = pApi
 22458  
 22459  	return spellfix1Register(tls, db)
 22460  	return SQLITE_OK
 22461  }
 22462  
 22463  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 22464  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 22465  }
 22466  
 22467  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 22468  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 22469  }
 22470  
 22471  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 22472  	var c int32 = 0
 22473  	var i int32
 22474  
 22475  	var pow63 uintptr = ts + 8412
 22476  	for i = 0; c == 0 && i < 18; i++ {
 22477  		c = (int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 22478  	}
 22479  	if c == 0 {
 22480  		c = int32(*(*int8)(unsafe.Pointer(zNum + 18))) - '8'
 22481  	}
 22482  	return c
 22483  }
 22484  
 22485  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 22486  	var u sqlite3_uint64 = uint64(0)
 22487  	var neg int32 = 0
 22488  	var i int32
 22489  	var c int32 = 0
 22490  	var nonNum int32 = 0
 22491  	var zStart uintptr
 22492  	var zEnd uintptr = zNum + uintptr(length)
 22493  
 22494  	for zNum < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(zNum)))) != 0 {
 22495  		zNum++
 22496  	}
 22497  	if zNum < zEnd {
 22498  		if int32(*(*int8)(unsafe.Pointer(zNum))) == '-' {
 22499  			neg = 1
 22500  			zNum++
 22501  		} else if int32(*(*int8)(unsafe.Pointer(zNum))) == '+' {
 22502  			zNum++
 22503  		}
 22504  	}
 22505  	zStart = zNum
 22506  	for zNum < zEnd && int32(*(*int8)(unsafe.Pointer(zNum))) == '0' {
 22507  		zNum++
 22508  	}
 22509  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 22510  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 22511  	}
 22512  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 22513  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 22514  	} else if neg != 0 {
 22515  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 22516  	} else {
 22517  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 22518  	}
 22519  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 22520  		return 1
 22521  	} else if i < 19 {
 22522  		return 0
 22523  	} else {
 22524  		c = totypeCompare2pow63(tls, zNum)
 22525  		if c < 0 {
 22526  			return 0
 22527  		} else if c > 0 {
 22528  			return 1
 22529  		} else {
 22530  			if neg != 0 {
 22531  				return 0
 22532  			}
 22533  			return 2
 22534  		}
 22535  	}
 22536  	return int32(0)
 22537  }
 22538  
 22539  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 22540  	var zEnd uintptr
 22541  
 22542  	var sign int32
 22543  	var s sqlite3_int64
 22544  	var d int32
 22545  	var esign int32
 22546  	var e int32
 22547  	var eValid int32
 22548  	var result float64
 22549  	var nDigits int32
 22550  	var nonNum int32
 22551  	var scale float64
 22552  	zEnd = z + uintptr(length)
 22553  	sign = 1
 22554  	s = int64(0)
 22555  	d = 0
 22556  	esign = 1
 22557  	e = 0
 22558  	eValid = 1
 22559  	nDigits = 0
 22560  	nonNum = 0
 22561  
 22562  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 22563  
 22564  __1:
 22565  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22566  		goto __2
 22567  	}
 22568  	z++
 22569  	goto __1
 22570  __2:
 22571  	;
 22572  	if !(z >= zEnd) {
 22573  		goto __3
 22574  	}
 22575  	return 0
 22576  __3:
 22577  	;
 22578  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22579  		goto __4
 22580  	}
 22581  	sign = -1
 22582  	z++
 22583  	goto __5
 22584  __4:
 22585  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22586  		goto __6
 22587  	}
 22588  	z++
 22589  __6:
 22590  	;
 22591  __5:
 22592  	;
 22593  __7:
 22594  	if !(z < zEnd && int32(*(*int8)(unsafe.Pointer(z))) == '0') {
 22595  		goto __8
 22596  	}
 22597  	z++
 22598  	nDigits++
 22599  	goto __7
 22600  __8:
 22601  	;
 22602  __9:
 22603  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22604  		goto __10
 22605  	}
 22606  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22607  	z++
 22608  	nDigits++
 22609  	goto __9
 22610  __10:
 22611  	;
 22612  __11:
 22613  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22614  		goto __12
 22615  	}
 22616  	z++
 22617  	nDigits++
 22618  	d++
 22619  	goto __11
 22620  __12:
 22621  	;
 22622  	if !(z >= zEnd) {
 22623  		goto __13
 22624  	}
 22625  	goto totype_atof_calc
 22626  __13:
 22627  	;
 22628  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '.') {
 22629  		goto __14
 22630  	}
 22631  	z++
 22632  
 22633  __15:
 22634  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22635  		goto __16
 22636  	}
 22637  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22638  	z++
 22639  	nDigits++
 22640  	d--
 22641  	goto __15
 22642  __16:
 22643  	;
 22644  __17:
 22645  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22646  		goto __18
 22647  	}
 22648  	z++
 22649  	nDigits++
 22650  	goto __17
 22651  __18:
 22652  	;
 22653  __14:
 22654  	;
 22655  	if !(z >= zEnd) {
 22656  		goto __19
 22657  	}
 22658  	goto totype_atof_calc
 22659  __19:
 22660  	;
 22661  	if !(int32(*(*int8)(unsafe.Pointer(z))) == 'e' || int32(*(*int8)(unsafe.Pointer(z))) == 'E') {
 22662  		goto __20
 22663  	}
 22664  	z++
 22665  	eValid = 0
 22666  	if !(z >= zEnd) {
 22667  		goto __21
 22668  	}
 22669  	goto totype_atof_calc
 22670  __21:
 22671  	;
 22672  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22673  		goto __22
 22674  	}
 22675  	esign = -1
 22676  	z++
 22677  	goto __23
 22678  __22:
 22679  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22680  		goto __24
 22681  	}
 22682  	z++
 22683  __24:
 22684  	;
 22685  __23:
 22686  	;
 22687  __25:
 22688  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22689  		goto __26
 22690  	}
 22691  	if e < 10000 {
 22692  		e = e*10 + (int32(*(*int8)(unsafe.Pointer(z))) - '0')
 22693  	} else {
 22694  		e = 10000
 22695  	}
 22696  	z++
 22697  	eValid = 1
 22698  	goto __25
 22699  __26:
 22700  	;
 22701  __20:
 22702  	;
 22703  	if !(nDigits != 0 && eValid != 0) {
 22704  		goto __27
 22705  	}
 22706  __28:
 22707  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22708  		goto __29
 22709  	}
 22710  	z++
 22711  	goto __28
 22712  __29:
 22713  	;
 22714  __27:
 22715  	;
 22716  totype_atof_calc:
 22717  	e = e*esign + d
 22718  	if !(e < 0) {
 22719  		goto __30
 22720  	}
 22721  	esign = -1
 22722  	e = e * -1
 22723  	goto __31
 22724  __30:
 22725  	esign = 1
 22726  __31:
 22727  	;
 22728  	if !!(s != 0) {
 22729  		goto __32
 22730  	}
 22731  
 22732  	if sign < 0 && nDigits != 0 {
 22733  		result = -libc.Float64FromFloat64(float64(0))
 22734  	} else {
 22735  		result = float64(0)
 22736  	}
 22737  	goto __33
 22738  __32:
 22739  	if !(esign > 0) {
 22740  		goto __34
 22741  	}
 22742  __36:
 22743  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 22744  		goto __37
 22745  	}
 22746  	e--
 22747  	s = s * int64(10)
 22748  	goto __36
 22749  __37:
 22750  	;
 22751  	goto __35
 22752  __34:
 22753  __38:
 22754  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 22755  		goto __39
 22756  	}
 22757  	e--
 22758  	s = s / int64(10)
 22759  	goto __38
 22760  __39:
 22761  	;
 22762  __35:
 22763  	;
 22764  	if sign < 0 {
 22765  		s = -s
 22766  	} else {
 22767  		s = s
 22768  	}
 22769  
 22770  	if !(e != 0) {
 22771  		goto __40
 22772  	}
 22773  	scale = 1.0
 22774  
 22775  	if !(e > 307 && e < 342) {
 22776  		goto __42
 22777  	}
 22778  __44:
 22779  	if !(e%308 != 0) {
 22780  		goto __45
 22781  	}
 22782  	scale = scale * 1.0e+1
 22783  	e = e - 1
 22784  	goto __44
 22785  __45:
 22786  	;
 22787  	if !(esign < 0) {
 22788  		goto __46
 22789  	}
 22790  	result = float64(s) / scale
 22791  	result = result / 1.0e+308
 22792  	goto __47
 22793  __46:
 22794  	result = float64(s) * scale
 22795  	result = result * 1.0e+308
 22796  __47:
 22797  	;
 22798  	goto __43
 22799  __42:
 22800  	if !(e >= 342) {
 22801  		goto __48
 22802  	}
 22803  	if !(esign < 0) {
 22804  		goto __50
 22805  	}
 22806  	result = 0.0 * float64(s)
 22807  	goto __51
 22808  __50:
 22809  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 22810  __51:
 22811  	;
 22812  	goto __49
 22813  __48:
 22814  __52:
 22815  	if !(e%22 != 0) {
 22816  		goto __53
 22817  	}
 22818  	scale = scale * 1.0e+1
 22819  	e = e - 1
 22820  	goto __52
 22821  __53:
 22822  	;
 22823  __54:
 22824  	if !(e > 0) {
 22825  		goto __55
 22826  	}
 22827  	scale = scale * 1.0e+22
 22828  	e = e - 22
 22829  	goto __54
 22830  __55:
 22831  	;
 22832  	if !(esign < 0) {
 22833  		goto __56
 22834  	}
 22835  	result = float64(s) / scale
 22836  	goto __57
 22837  __56:
 22838  	result = float64(s) * scale
 22839  __57:
 22840  	;
 22841  __49:
 22842  	;
 22843  __43:
 22844  	;
 22845  	goto __41
 22846  __40:
 22847  	result = float64(s)
 22848  __41:
 22849  	;
 22850  __33:
 22851  	;
 22852  	*(*float64)(unsafe.Pointer(pResult)) = result
 22853  
 22854  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 22855  }
 22856  
 22857  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22858  	bp := tls.Alloc(24)
 22859  	defer tls.Free(24)
 22860  
 22861  	_ = argc
 22862  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22863  	case SQLITE_FLOAT:
 22864  		{
 22865  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22866  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 22867  			if rVal == float64(iVal) {
 22868  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 22869  			}
 22870  			break
 22871  
 22872  		}
 22873  	case SQLITE_INTEGER:
 22874  		{
 22875  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22876  			break
 22877  
 22878  		}
 22879  	case SQLITE_BLOB:
 22880  		{
 22881  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22882  			if zBlob != 0 {
 22883  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22884  				if uint32(nBlob) == uint32(unsafe.Sizeof(sqlite3_int64(0))) {
 22885  					if 0 != 0 {
 22886  						var i int32
 22887  
 22888  						for i = 0; uint32(i) < uint32(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 22889  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint32(unsafe.Sizeof(sqlite3_int64(0)))-uint32(1)-uint32(i))))
 22890  						}
 22891  						libc.Xmemcpy(tls, bp+8, bp, uint32(unsafe.Sizeof(sqlite3_int64(0))))
 22892  					} else {
 22893  						libc.Xmemcpy(tls, bp+8, zBlob, uint32(unsafe.Sizeof(sqlite3_int64(0))))
 22894  					}
 22895  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 22896  				}
 22897  			}
 22898  			break
 22899  
 22900  		}
 22901  	case SQLITE_TEXT:
 22902  		{
 22903  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22904  			if zStr != 0 {
 22905  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22906  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 22907  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 22908  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 22909  					}
 22910  				}
 22911  			}
 22912  			break
 22913  
 22914  		}
 22915  	default:
 22916  		{
 22917  			break
 22918  
 22919  		}
 22920  	}
 22921  }
 22922  
 22923  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22924  	bp := tls.Alloc(24)
 22925  	defer tls.Free(24)
 22926  
 22927  	_ = argc
 22928  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22929  	case SQLITE_FLOAT:
 22930  		{
 22931  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22932  			break
 22933  
 22934  		}
 22935  	case SQLITE_INTEGER:
 22936  		{
 22937  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22938  			var rVal float64 = float64(iVal)
 22939  			if iVal == sqlite3_int64(rVal) {
 22940  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 22941  			}
 22942  			break
 22943  
 22944  		}
 22945  	case SQLITE_BLOB:
 22946  		{
 22947  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22948  			if zBlob != 0 {
 22949  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22950  				if uint32(nBlob) == uint32(unsafe.Sizeof(float64(0))) {
 22951  					if 1 != 0 {
 22952  						var i int32
 22953  
 22954  						for i = 0; uint32(i) < uint32(unsafe.Sizeof(float64(0))); i++ {
 22955  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint32(unsafe.Sizeof(float64(0)))-uint32(1)-uint32(i))))
 22956  						}
 22957  						libc.Xmemcpy(tls, bp+8, bp, uint32(unsafe.Sizeof(float64(0))))
 22958  					} else {
 22959  						libc.Xmemcpy(tls, bp+8, zBlob, uint32(unsafe.Sizeof(float64(0))))
 22960  					}
 22961  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 22962  				}
 22963  			}
 22964  			break
 22965  
 22966  		}
 22967  	case SQLITE_TEXT:
 22968  		{
 22969  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22970  			if zStr != 0 {
 22971  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22972  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 22973  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 22974  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 22975  						return
 22976  					}
 22977  				}
 22978  			}
 22979  			break
 22980  
 22981  		}
 22982  	default:
 22983  		{
 22984  			break
 22985  
 22986  		}
 22987  	}
 22988  }
 22989  
 22990  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22991  	var rc int32 = SQLITE_OK
 22992  	_ = pApi
 22993  
 22994  	_ = pzErrMsg
 22995  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 22996  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22997  		*(*uintptr)(unsafe.Pointer(&struct {
 22998  			f func(*libc.TLS, uintptr, int32, uintptr)
 22999  		}{tointegerFunc})), uintptr(0), uintptr(0))
 23000  	if rc == SQLITE_OK {
 23001  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 23002  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 23003  			*(*uintptr)(unsafe.Pointer(&struct {
 23004  				f func(*libc.TLS, uintptr, int32, uintptr)
 23005  			}{torealFunc})), uintptr(0), uintptr(0))
 23006  	}
 23007  	return rc
 23008  }
 23009  
 23010  type UnionCsr1 = struct {
 23011  	Fbase      sqlite3_vtab_cursor
 23012  	FpStmt     uintptr
 23013  	FiMaxRowid sqlite3_int64
 23014  	FiTab      int32
 23015  }
 23016  
 23017  type UnionCsr = UnionCsr1
 23018  type UnionTab1 = struct {
 23019  	Fbase        sqlite3_vtab
 23020  	Fdb          uintptr
 23021  	FbSwarm      int32
 23022  	FiPK         int32
 23023  	FnSrc        int32
 23024  	FaSrc        uintptr
 23025  	FbHasContext int32
 23026  	FzSourceStr  uintptr
 23027  	FpNotFound   uintptr
 23028  	FpOpenClose  uintptr
 23029  	FpClosable   uintptr
 23030  	FnOpen       int32
 23031  	FnMaxOpen    int32
 23032  }
 23033  
 23034  type UnionTab = UnionTab1
 23035  type UnionSrc1 = struct {
 23036  	FzDb           uintptr
 23037  	FzTab          uintptr
 23038  	FiMin          sqlite3_int64
 23039  	FiMax          sqlite3_int64
 23040  	FzFile         uintptr
 23041  	FzContext      uintptr
 23042  	FnUser         int32
 23043  	Fdb            uintptr
 23044  	FpNextClosable uintptr
 23045  }
 23046  
 23047  type UnionSrc = UnionSrc1
 23048  
 23049  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 23050  	var pRet uintptr
 23051  
 23052  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23053  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 23054  		if pRet != 0 {
 23055  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 23056  		} else {
 23057  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23058  		}
 23059  	} else {
 23060  		pRet = uintptr(0)
 23061  	}
 23062  	return pRet
 23063  }
 23064  
 23065  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 23066  	var zRet uintptr = uintptr(0)
 23067  	if zIn != 0 {
 23068  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + size_t(1))
 23069  		zRet = unionMalloc(tls, pRc, nByte)
 23070  		if zRet != 0 {
 23071  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 23072  		}
 23073  	}
 23074  	return zRet
 23075  }
 23076  
 23077  func unionDequote(tls *libc.TLS, z uintptr) {
 23078  	if z != 0 {
 23079  		var q int8 = *(*int8)(unsafe.Pointer(z))
 23080  
 23081  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 23082  			var iIn int32 = 1
 23083  			var iOut int32 = 0
 23084  			if int32(q) == '[' {
 23085  				q = int8(']')
 23086  			}
 23087  			for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 23088  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 23089  					if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 23090  						iIn++
 23091  						break
 23092  					} else {
 23093  						iIn = iIn + 2
 23094  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 23095  					}
 23096  				} else {
 23097  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 23098  				}
 23099  			}
 23100  			*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 23101  		}
 23102  	}
 23103  }
 23104  
 23105  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 23106  	bp := tls.Alloc(12)
 23107  	defer tls.Free(12)
 23108  
 23109  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 23110  
 23111  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23112  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 23113  		if rc != SQLITE_OK {
 23114  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23115  			*(*int32)(unsafe.Pointer(pRc)) = rc
 23116  		}
 23117  	}
 23118  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 23119  }
 23120  
 23121  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 23122  	var pRet uintptr = uintptr(0)
 23123  	var zSql uintptr
 23124  	var ap va_list
 23125  	_ = ap
 23126  	ap = va
 23127  
 23128  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 23129  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23130  		if zSql == uintptr(0) {
 23131  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 23132  		} else {
 23133  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 23134  		}
 23135  	}
 23136  	sqlite3.Xsqlite3_free(tls, zSql)
 23137  
 23138  	_ = ap
 23139  	return pRet
 23140  }
 23141  
 23142  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 23143  	bp := tls.Alloc(8)
 23144  	defer tls.Free(8)
 23145  
 23146  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 23147  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 23148  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23149  		*(*int32)(unsafe.Pointer(pRc)) = rc
 23150  		if rc != 0 {
 23151  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 23152  		}
 23153  	}
 23154  }
 23155  
 23156  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 23157  	bp := tls.Alloc(8)
 23158  	defer tls.Free(8)
 23159  
 23160  	var rc int32 = SQLITE_OK
 23161  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23162  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23163  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23164  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23165  		}
 23166  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 23167  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23168  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 23169  			if pzErr != 0 {
 23170  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23171  			}
 23172  		}
 23173  	}
 23174  	return rc
 23175  }
 23176  
 23177  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 23178  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 23179  		var p uintptr
 23180  		var pp uintptr
 23181  		for pp = pTab + 48; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 40 {
 23182  		}
 23183  		p = *(*uintptr)(unsafe.Pointer(pp))
 23184  
 23185  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 23186  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 23187  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 23188  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 23189  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 23190  	}
 23191  }
 23192  
 23193  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23194  	if pVtab != 0 {
 23195  		var pTab uintptr = pVtab
 23196  		var i int32
 23197  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23198  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*44
 23199  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 23200  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23201  			if bHaveSrcDb != 0 {
 23202  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23203  			}
 23204  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 23205  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 23206  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 23207  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 23208  		}
 23209  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23210  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 23211  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 23212  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 23213  		sqlite3.Xsqlite3_free(tls, pTab)
 23214  	}
 23215  	return SQLITE_OK
 23216  }
 23217  
 23218  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23219  	bp := tls.Alloc(32)
 23220  	defer tls.Free(32)
 23221  
 23222  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 23223  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 23224  	var rc int32
 23225  
 23226  	sqlite3.Xsqlite3_table_column_metadata(tls,
 23227  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+28, uintptr(0))
 23228  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 23229  	if rc == SQLITE_ERROR ||
 23230  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 28)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 23231  		rc = SQLITE_ERROR
 23232  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 23233  			libc.VaList(bp, func() uintptr {
 23234  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23235  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23236  				}
 23237  				return ts + 584
 23238  			}(),
 23239  				func() uintptr {
 23240  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23241  						return ts + 8506
 23242  					}
 23243  					return ts + 584
 23244  				}(),
 23245  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23246  	}
 23247  	return rc
 23248  }
 23249  
 23250  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 23251  	bp := tls.Alloc(4)
 23252  	defer tls.Free(4)
 23253  
 23254  	var zRet uintptr = uintptr(0)
 23255  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 23256  		var db uintptr = func() uintptr {
 23257  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23258  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23259  			}
 23260  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23261  		}()
 23262  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 23263  		var pStmt uintptr = unionPrepare(tls, bp, db,
 23264  			ts+8508, pzErr)
 23265  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23266  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 23267  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 23268  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23269  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23270  				zRet = unionStrdup(tls, bp, z)
 23271  			}
 23272  			unionFinalize(tls, bp, pStmt, pzErr)
 23273  		}
 23274  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 23275  	}
 23276  
 23277  	return zRet
 23278  }
 23279  
 23280  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 23281  	bp := tls.Alloc(4)
 23282  	defer tls.Free(4)
 23283  
 23284  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23285  	var z0 uintptr = uintptr(0)
 23286  	var i int32
 23287  
 23288  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 23289  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23290  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*44, pzErr)
 23291  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 23292  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23293  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23294  		}
 23295  		sqlite3.Xsqlite3_free(tls, z)
 23296  	}
 23297  	sqlite3.Xsqlite3_free(tls, z0)
 23298  
 23299  	return *(*int32)(unsafe.Pointer(bp))
 23300  }
 23301  
 23302  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 23303  	bp := tls.Alloc(16)
 23304  	defer tls.Free(16)
 23305  
 23306  	var rc int32
 23307  
 23308  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 23309  	if rc != SQLITE_OK {
 23310  		return rc
 23311  	}
 23312  
 23313  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+36, openFlags, uintptr(0))
 23314  	if rc == SQLITE_OK {
 23315  		return rc
 23316  	}
 23317  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23318  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23319  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23320  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 23321  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23322  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 23323  		}
 23324  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 23325  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 23326  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 23327  			return rc
 23328  		}
 23329  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+36, openFlags, uintptr(0))
 23330  	}
 23331  	if rc != SQLITE_OK {
 23332  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 23333  	}
 23334  	return rc
 23335  }
 23336  
 23337  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 23338  
 23339  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 23340  	bp := tls.Alloc(4)
 23341  	defer tls.Free(4)
 23342  
 23343  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23344  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*44
 23345  
 23346  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 23347  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 23348  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 23349  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23350  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 23351  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23352  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 23353  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 23354  				} else {
 23355  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 23356  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 23357  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 23358  					}
 23359  					sqlite3.Xsqlite3_free(tls, z)
 23360  				}
 23361  			}
 23362  		}
 23363  
 23364  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 23365  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23366  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23367  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 23368  		} else {
 23369  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 23370  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 23371  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 23372  		}
 23373  	}
 23374  
 23375  	return *(*int32)(unsafe.Pointer(bp))
 23376  }
 23377  
 23378  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 23379  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23380  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*44
 23381  
 23382  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23383  			var pp uintptr
 23384  			for pp = pTab + 48; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 40 {
 23385  			}
 23386  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 23387  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 23388  		}
 23389  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 23390  	}
 23391  }
 23392  
 23393  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 23394  	var rc int32 = SQLITE_OK
 23395  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23396  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23397  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*44
 23398  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 23399  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 23400  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23401  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 23402  
 23403  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 23404  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 23405  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 23406  			}
 23407  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 23408  		}
 23409  	}
 23410  	return rc
 23411  }
 23412  
 23413  func union_isspace(tls *libc.TLS, c int8) int32 {
 23414  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 23415  }
 23416  
 23417  func union_isidchar(tls *libc.TLS, c int8) int32 {
 23418  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 23419  }
 23420  
 23421  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 23422  	bp := tls.Alloc(68)
 23423  	defer tls.Free(68)
 23424  
 23425  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 23426  	var i int32
 23427  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 23428  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 23429  	}
 23430  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 23431  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*4)))
 23432  		if zArg != 0 {
 23433  			var nOpt int32 = 0
 23434  			var zOpt uintptr
 23435  			var zVal uintptr
 23436  
 23437  			unionDequote(tls, zArg)
 23438  			zOpt = zArg
 23439  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zOpt))) != 0 {
 23440  				zOpt++
 23441  			}
 23442  			zVal = zOpt
 23443  			if int32(*(*int8)(unsafe.Pointer(zVal))) == ':' {
 23444  				zVal++
 23445  			}
 23446  			for union_isidchar(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23447  				zVal++
 23448  			}
 23449  			nOpt = (int32(zVal) - int32(zOpt)) / 1
 23450  
 23451  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23452  				zVal++
 23453  			}
 23454  			if int32(*(*int8)(unsafe.Pointer(zVal))) == '=' {
 23455  				*(*int8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = int8(0)
 23456  				zVal++
 23457  				for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 23458  					zVal++
 23459  				}
 23460  				zVal = unionStrdup(tls, bp+64, zVal)
 23461  				if zVal != 0 {
 23462  					unionDequote(tls, zVal)
 23463  					if int32(*(*int8)(unsafe.Pointer(zOpt))) == ':' {
 23464  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 23465  						if iParam == 0 {
 23466  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23467  								ts+8621, libc.VaList(bp, zOpt))
 23468  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23469  						} else {
 23470  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 23471  						}
 23472  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 23473  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 23474  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 23475  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 23476  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23477  						}
 23478  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 23479  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 23480  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23481  								ts+8707, 0)
 23482  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23483  						} else {
 23484  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23485  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 23486  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23487  										return ts + 8762
 23488  									}
 23489  									return ts + 584
 23490  								}()))
 23491  						}
 23492  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 23493  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 23494  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 23495  								ts+8775, 0)
 23496  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23497  						} else {
 23498  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23499  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 23500  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23501  										return ts + 8762
 23502  									}
 23503  									return ts + 584
 23504  								}()))
 23505  						}
 23506  					} else {
 23507  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 23508  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23509  					}
 23510  					sqlite3.Xsqlite3_free(tls, zVal)
 23511  				}
 23512  			} else {
 23513  				if i == 0 && nArg == 1 {
 23514  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 23515  						ts+8869, libc.VaList(bp+48, zArg))
 23516  				} else {
 23517  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*4))))
 23518  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23519  				}
 23520  			}
 23521  			sqlite3.Xsqlite3_free(tls, zArg)
 23522  		}
 23523  	}
 23524  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23525  }
 23526  
 23527  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23528  	bp := tls.Alloc(44)
 23529  	defer tls.Free(44)
 23530  
 23531  	var pTab uintptr = uintptr(0)
 23532  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23533  	var bSwarm int32 = func() int32 {
 23534  		if pAux == uintptr(0) {
 23535  			return 0
 23536  		}
 23537  		return 1
 23538  	}()
 23539  	var zVtab uintptr = func() uintptr {
 23540  		if bSwarm != 0 {
 23541  			return ts + 8911
 23542  		}
 23543  		return ts + 8921
 23544  	}()
 23545  
 23546  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*4))) != 0 {
 23547  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 23548  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23549  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 23550  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 23551  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23552  	} else {
 23553  		var nAlloc int32 = 0
 23554  		var pStmt uintptr = uintptr(0)
 23555  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 23556  
 23557  		unionDequote(tls, zArg)
 23558  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 23559  			ts+9010, libc.VaList(bp+16, zArg))
 23560  
 23561  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 23562  		if pTab != 0 {
 23563  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 23564  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 23565  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 23566  		}
 23567  
 23568  		if bSwarm != 0 {
 23569  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*4, pzErr)
 23570  		}
 23571  
 23572  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23573  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23574  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 23575  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 23576  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 23577  			var pSrc uintptr
 23578  
 23579  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23580  				var nNew int32
 23581  				if nAlloc != 0 {
 23582  					nNew = nAlloc * 2
 23583  				} else {
 23584  					nNew = 8
 23585  				}
 23586  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 23587  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(uint32(nNew)*uint32(unsafe.Sizeof(UnionSrc{}))))
 23588  				if aNew == uintptr(0) {
 23589  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 23590  					break
 23591  				} else {
 23592  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*44, 0, uint32(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint32(unsafe.Sizeof(UnionSrc{})))
 23593  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 23594  					nAlloc = nNew
 23595  				}
 23596  			}
 23597  
 23598  			if iMax < iMin || (*UnionTab)(unsafe.Pointer(pTab)).FnSrc > 0 && iMin <= (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc-1)*44)).FiMax {
 23599  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 23600  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23601  			}
 23602  
 23603  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23604  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*44
 23605  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 23606  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 23607  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 23608  				if bSwarm != 0 {
 23609  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 23610  				} else {
 23611  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 23612  				}
 23613  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23614  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 23615  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 23616  				}
 23617  			}
 23618  		}
 23619  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23620  		pStmt = uintptr(0)
 23621  
 23622  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 23623  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 23624  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23625  		}
 23626  
 23627  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23628  			if bSwarm != 0 {
 23629  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 23630  			} else {
 23631  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 23632  			}
 23633  		}
 23634  
 23635  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23636  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 23637  			var tdb uintptr = func() uintptr {
 23638  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23639  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23640  				}
 23641  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23642  			}()
 23643  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 23644  				ts+9095,
 23645  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 23646  		}
 23647  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23648  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23649  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 23650  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 23651  		}
 23652  
 23653  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23654  	}
 23655  
 23656  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 23657  		unionDisconnect(tls, pTab)
 23658  		pTab = uintptr(0)
 23659  	}
 23660  
 23661  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 23662  	return *(*int32)(unsafe.Pointer(bp + 40))
 23663  }
 23664  
 23665  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23666  	bp := tls.Alloc(4)
 23667  	defer tls.Free(4)
 23668  
 23669  	var pCsr uintptr
 23670  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23671  	_ = p
 23672  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 23673  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 23674  	return *(*int32)(unsafe.Pointer(bp))
 23675  }
 23676  
 23677  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 23678  	var pCsr uintptr = cur
 23679  	unionFinalizeCsrStmt(tls, pCsr)
 23680  	sqlite3.Xsqlite3_free(tls, pCsr)
 23681  	return SQLITE_OK
 23682  }
 23683  
 23684  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 23685  	bp := tls.Alloc(28)
 23686  	defer tls.Free(28)
 23687  
 23688  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 23689  
 23690  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 23691  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23692  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 23693  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23694  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 23695  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23696  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*44
 23697  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23698  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+8)
 23699  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+8, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 23700  						ts+9273,
 23701  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 23702  							func() uintptr {
 23703  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 23704  									return ts + 9305
 23705  								}
 23706  								return ts + 9322
 23707  							}(),
 23708  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 23709  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 23710  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23711  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 23712  					}
 23713  				}
 23714  			}
 23715  		}
 23716  	}
 23717  
 23718  	return *(*int32)(unsafe.Pointer(bp + 24))
 23719  }
 23720  
 23721  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 23722  	var rc int32
 23723  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 23724  		rc = doUnionNext(tls, cur)
 23725  	}
 23726  	return rc
 23727  }
 23728  
 23729  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23730  	var pCsr uintptr = cur
 23731  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 23732  	return SQLITE_OK
 23733  }
 23734  
 23735  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23736  	var pCsr uintptr = cur
 23737  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 23738  	return SQLITE_OK
 23739  }
 23740  
 23741  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 23742  	var pCsr uintptr = cur
 23743  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 23744  }
 23745  
 23746  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23747  	bp := tls.Alloc(108)
 23748  	defer tls.Free(108)
 23749  
 23750  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 23751  	var pCsr uintptr = pVtabCursor
 23752  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 23753  	var i int32
 23754  	var zSql uintptr = uintptr(0)
 23755  	var bZero int32 = 0
 23756  
 23757  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 23758  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 23759  
 23760  	_ = idxStr
 23761  
 23762  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 23763  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23764  	} else {
 23765  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 23766  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23767  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 23768  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 23769  					bZero = 1
 23770  				} else {
 23771  					iMax--
 23772  				}
 23773  			}
 23774  		}
 23775  
 23776  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 23777  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*4)))
 23778  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 23779  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 23780  					bZero = 1
 23781  				} else {
 23782  					iMin++
 23783  				}
 23784  			}
 23785  		}
 23786  	}
 23787  
 23788  	unionFinalizeCsrStmt(tls, pCsr)
 23789  	if bZero != 0 {
 23790  		return SQLITE_OK
 23791  	}
 23792  
 23793  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23794  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*44
 23795  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23796  			continue
 23797  		}
 23798  
 23799  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 23800  			if zSql != 0 {
 23801  				return ts + 9360
 23802  			}
 23803  			return ts + 584
 23804  		}(), func() uintptr {
 23805  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23806  				return ts + 5624
 23807  			}
 23808  			return ts + 584
 23809  		}(), func() uintptr {
 23810  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23811  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23812  			}
 23813  			return ts + 584
 23814  		}(), func() uintptr {
 23815  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23816  				return ts + 5626
 23817  			}
 23818  			return ts + 584
 23819  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23820  		if zSql == uintptr(0) {
 23821  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 23822  			break
 23823  		}
 23824  
 23825  		if iMin == iMax {
 23826  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 23827  		} else {
 23828  			var zWhere uintptr = ts + 9392
 23829  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23830  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 23831  				zWhere = ts + 9419
 23832  			}
 23833  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 23834  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 23835  			}
 23836  		}
 23837  
 23838  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23839  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 23840  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 23841  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+8)
 23842  			break
 23843  		}
 23844  	}
 23845  
 23846  	if zSql == uintptr(0) {
 23847  		return *(*int32)(unsafe.Pointer(bp + 104))
 23848  	} else {
 23849  		var db uintptr = func() uintptr {
 23850  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23851  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*44)).Fdb
 23852  			}
 23853  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23854  		}()
 23855  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+8)
 23856  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23857  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23858  		}
 23859  		sqlite3.Xsqlite3_free(tls, zSql)
 23860  	}
 23861  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 23862  		return *(*int32)(unsafe.Pointer(bp + 104))
 23863  	}
 23864  	return unionNext(tls, pVtabCursor)
 23865  }
 23866  
 23867  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23868  	var pTab uintptr = tab
 23869  	var iEq int32 = -1
 23870  	var iLt int32 = -1
 23871  	var iGt int32 = -1
 23872  	var i int32
 23873  
 23874  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 23875  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 23876  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && ((*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn < 0 || (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn == (*UnionTab)(unsafe.Pointer(pTab)).FiPK) {
 23877  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 23878  			case SQLITE_INDEX_CONSTRAINT_EQ:
 23879  				iEq = i
 23880  				break
 23881  				fallthrough
 23882  			case SQLITE_INDEX_CONSTRAINT_LE:
 23883  				fallthrough
 23884  			case SQLITE_INDEX_CONSTRAINT_LT:
 23885  				iLt = i
 23886  				break
 23887  				fallthrough
 23888  			case SQLITE_INDEX_CONSTRAINT_GE:
 23889  				fallthrough
 23890  			case SQLITE_INDEX_CONSTRAINT_GT:
 23891  				iGt = i
 23892  				break
 23893  			}
 23894  		}
 23895  	}
 23896  
 23897  	if iEq >= 0 {
 23898  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 23899  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 23900  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 23901  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 23902  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 23903  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 23904  	} else {
 23905  		var iCons int32 = 1
 23906  		var idxNum int32 = 0
 23907  		var nRow sqlite3_int64 = int64(1000000)
 23908  		if iLt >= 0 {
 23909  			nRow = nRow / int64(2)
 23910  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23911  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 23912  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 23913  		}
 23914  		if iGt >= 0 {
 23915  			nRow = nRow / int64(2)
 23916  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23917  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 23918  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 23919  		}
 23920  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 23921  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 23922  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23923  	}
 23924  
 23925  	return SQLITE_OK
 23926  }
 23927  
 23928  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 23929  	var rc int32
 23930  
 23931  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 23932  	if rc == SQLITE_OK {
 23933  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 23934  	}
 23935  	return rc
 23936  }
 23937  
 23938  var unionModule = sqlite3_module{
 23939  	FxCreate:     0,
 23940  	FxConnect:    0,
 23941  	FxBestIndex:  0,
 23942  	FxDisconnect: 0,
 23943  	FxDestroy:    0,
 23944  	FxOpen:       0,
 23945  	FxClose:      0,
 23946  	FxFilter:     0,
 23947  	FxNext:       0,
 23948  	FxEof:        0,
 23949  	FxColumn:     0,
 23950  	FxRowid:      0,
 23951  }
 23952  
 23953  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23954  	var rc int32 = SQLITE_OK
 23955  	_ = pApi
 23956  
 23957  	_ = pzErrMsg
 23958  	rc = createUnionVtab(tls, db)
 23959  	return rc
 23960  }
 23961  
 23962  type wholenumber_cursor1 = struct {
 23963  	Fbase    sqlite3_vtab_cursor
 23964  	FiValue  sqlite3_int64
 23965  	FmxValue sqlite3_int64
 23966  }
 23967  
 23968  type wholenumber_cursor = wholenumber_cursor1
 23969  
 23970  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23971  	var pNew uintptr
 23972  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 23973  	if pNew == uintptr(0) {
 23974  		return SQLITE_NOMEM
 23975  	}
 23976  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 23977  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 23978  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(sqlite3_vtab{})))
 23979  	return SQLITE_OK
 23980  }
 23981  
 23982  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23983  	sqlite3.Xsqlite3_free(tls, pVtab)
 23984  	return SQLITE_OK
 23985  }
 23986  
 23987  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23988  	var pCur uintptr
 23989  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 23990  	if pCur == uintptr(0) {
 23991  		return SQLITE_NOMEM
 23992  	}
 23993  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(wholenumber_cursor{})))
 23994  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 23995  	return SQLITE_OK
 23996  }
 23997  
 23998  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 23999  	sqlite3.Xsqlite3_free(tls, cur)
 24000  	return SQLITE_OK
 24001  }
 24002  
 24003  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 24004  	var pCur uintptr = cur
 24005  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 24006  	return SQLITE_OK
 24007  }
 24008  
 24009  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 24010  	var pCur uintptr = cur
 24011  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 24012  	return SQLITE_OK
 24013  }
 24014  
 24015  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 24016  	var pCur uintptr = cur
 24017  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 24018  	return SQLITE_OK
 24019  }
 24020  
 24021  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 24022  	var pCur uintptr = cur
 24023  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 24024  }
 24025  
 24026  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 24027  	var pCur uintptr = pVtabCursor
 24028  	var v sqlite3_int64
 24029  	var i int32 = 0
 24030  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 24031  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 24032  	if idxNum&3 != 0 {
 24033  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 24034  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24035  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 24036  		}
 24037  		i++
 24038  	}
 24039  	if idxNum&12 != 0 {
 24040  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))) - sqlite3_int64(idxNum>>2&1)
 24041  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 24042  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 24043  		}
 24044  	}
 24045  	return SQLITE_OK
 24046  }
 24047  
 24048  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 24049  	var i int32
 24050  	var idxNum int32 = 0
 24051  	var argvIdx int32 = 1
 24052  	var ltIdx int32 = -1
 24053  	var gtIdx int32 = -1
 24054  	var pConstraint uintptr
 24055  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 24056  	i = 0
 24057  __1:
 24058  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 24059  		goto __3
 24060  	}
 24061  	{
 24062  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 24063  			goto __2
 24064  		}
 24065  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 24066  			idxNum = idxNum | 1
 24067  			ltIdx = i
 24068  		}
 24069  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 24070  			idxNum = idxNum | 2
 24071  			ltIdx = i
 24072  		}
 24073  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 24074  			idxNum = idxNum | 4
 24075  			gtIdx = i
 24076  		}
 24077  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 24078  			idxNum = idxNum | 8
 24079  			gtIdx = i
 24080  		}
 24081  
 24082  	}
 24083  	goto __2
 24084  __2:
 24085  	i++
 24086  	pConstraint += 12
 24087  	goto __1
 24088  	goto __3
 24089  __3:
 24090  	;
 24091  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 24092  	if ltIdx >= 0 {
 24093  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 24094  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 24095  	}
 24096  	if gtIdx >= 0 {
 24097  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 24098  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 24099  	}
 24100  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 24101  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 24102  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 24103  	}
 24104  	if idxNum&12 == 0 {
 24105  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 24106  	} else if idxNum&3 == 0 {
 24107  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 24108  	} else {
 24109  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 24110  	}
 24111  	return SQLITE_OK
 24112  }
 24113  
 24114  var wholenumberModule = sqlite3_module{
 24115  	FxCreate:     0,
 24116  	FxConnect:    0,
 24117  	FxBestIndex:  0,
 24118  	FxDisconnect: 0,
 24119  	FxDestroy:    0,
 24120  	FxOpen:       0,
 24121  	FxClose:      0,
 24122  	FxFilter:     0,
 24123  	FxNext:       0,
 24124  	FxEof:        0,
 24125  	FxColumn:     0,
 24126  	FxRowid:      0,
 24127  }
 24128  
 24129  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 24130  	var rc int32 = SQLITE_OK
 24131  	_ = pApi
 24132  
 24133  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 24134  	return rc
 24135  }
 24136  
 24137  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 24138  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 24139  	var pScript uintptr
 24140  	var i int32
 24141  
 24142  	pScript = tcl.XTcl_NewObj(tls)
 24143  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 24144  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 24145  	for i = 0; i < nArg; i++ {
 24146  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*4))
 24147  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 24148  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 24149  	}
 24150  
 24151  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 24152  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 24153  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 24154  	} else {
 24155  		tcl.XTcl_BackgroundError(tls, interp)
 24156  	}
 24157  
 24158  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 24159  		var _objPtr uintptr = pScript
 24160  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 24161  			tcl.XTclFreeObj(tls, _objPtr)
 24162  		}
 24163  	}
 24164  }
 24165  
 24166  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24167  	bp := tls.Alloc(296)
 24168  	defer tls.Free(296)
 24169  
 24170  	var ret int32 = TCL_OK
 24171  	var pRbu uintptr = clientData
 24172  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 24173  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 24174  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 24175  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 24176  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 24177  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 24178  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 24179  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 24180  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 24181  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 24182  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 24183  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 24184  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 24185  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 24186  		{},
 24187  	}
 24188  
 24189  	if objc < 2 {
 24190  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 24191  		return TCL_ERROR
 24192  	}
 24193  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 24194  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+192)
 24195  	if ret != 0 {
 24196  		return TCL_ERROR
 24197  	}
 24198  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 192)))*12)).FnArg {
 24199  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 192)))*12)).FzUsage)
 24200  		return TCL_ERROR
 24201  	}
 24202  
 24203  	switch *(*int32)(unsafe.Pointer(bp + 192)) {
 24204  	case 0:
 24205  		{
 24206  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 24207  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24208  			break
 24209  
 24210  		}
 24211  
 24212  	case 9:
 24213  		fallthrough
 24214  	case 1:
 24215  		{
 24216  			*(*uintptr)(unsafe.Pointer(bp + 196)) = uintptr(0)
 24217  			var rc int32
 24218  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 24219  			if *(*int32)(unsafe.Pointer(bp + 192)) == 1 {
 24220  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+196)
 24221  			} else {
 24222  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 24223  			}
 24224  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 24225  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24226  
 24227  			} else {
 24228  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24229  				if *(*uintptr)(unsafe.Pointer(bp + 196)) != 0 {
 24230  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 196)), 0))
 24231  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 196)))
 24232  				}
 24233  				ret = TCL_ERROR
 24234  			}
 24235  			break
 24236  
 24237  		}
 24238  
 24239  	case 2:
 24240  		{
 24241  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 24242  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 24243  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 24244  					f func(*libc.TLS, uintptr, int32, uintptr)
 24245  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 24246  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24247  			ret = func() int32 {
 24248  				if rc == SQLITE_OK {
 24249  					return TCL_OK
 24250  				}
 24251  				return TCL_ERROR
 24252  			}()
 24253  			break
 24254  
 24255  		}
 24256  
 24257  	case 3:
 24258  		{
 24259  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 24260  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24261  			ret = func() int32 {
 24262  				if rc == SQLITE_OK {
 24263  					return TCL_OK
 24264  				}
 24265  				return TCL_ERROR
 24266  			}()
 24267  			break
 24268  
 24269  		}
 24270  
 24271  	case 12:
 24272  		fallthrough
 24273  	case 4:
 24274  		{
 24275  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 192)) == 12))
 24276  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), uintptr(0), uintptr(0), uintptr(0))
 24277  			if rc != SQLITE_OK {
 24278  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 24279  				ret = TCL_ERROR
 24280  			}
 24281  			break
 24282  
 24283  		}
 24284  
 24285  	case 5:
 24286  		{
 24287  			var pObj uintptr
 24288  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+200, bp+204)
 24289  
 24290  			pObj = tcl.XTcl_NewObj(tls)
 24291  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 200))))
 24292  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 204))))
 24293  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 24294  			break
 24295  
 24296  		}
 24297  
 24298  	case 6:
 24299  		{
 24300  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+208) != 0 {
 24301  				ret = TCL_ERROR
 24302  			} else {
 24303  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 208)))
 24304  				if sqlite3TestMakePointerStr(tls, interp, bp+212, db) != 0 {
 24305  					ret = TCL_ERROR
 24306  				} else {
 24307  					tcl.XTcl_SetResult(tls, interp, bp+212, uintptr(1))
 24308  				}
 24309  			}
 24310  			break
 24311  
 24312  		}
 24313  	case 7:
 24314  		{
 24315  			*(*[6]uintptr)(unsafe.Pointer(bp + 264)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 24316  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 24317  
 24318  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 264 + uintptr(eState)*4)), uintptr(0))
 24319  			break
 24320  
 24321  		}
 24322  	case 8:
 24323  		{
 24324  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 24325  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 24326  			break
 24327  
 24328  		}
 24329  
 24330  	case 10:
 24331  		{
 24332  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+288) != 0 {
 24333  				ret = TCL_ERROR
 24334  			} else {
 24335  				*(*sqlite3_int64)(unsafe.Pointer(bp + 288)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 288)))
 24336  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 288))))
 24337  			}
 24338  			break
 24339  
 24340  		}
 24341  	case 11:
 24342  		{
 24343  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 24344  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 24345  			break
 24346  
 24347  		}
 24348  
 24349  	default:
 24350  		break
 24351  	}
 24352  
 24353  	return ret
 24354  }
 24355  
 24356  type RbuCmd = struct {
 24357  	FzName  uintptr
 24358  	FnArg   int32
 24359  	FzUsage uintptr
 24360  }
 24361  
 24362  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24363  	var pRbu uintptr = uintptr(0)
 24364  	var zCmd uintptr
 24365  	var zTarget uintptr
 24366  	var zRbu uintptr
 24367  	var zStateDb uintptr = uintptr(0)
 24368  
 24369  	if objc != 4 && objc != 5 {
 24370  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 24371  		return TCL_ERROR
 24372  	}
 24373  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 24374  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 24375  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 24376  	if objc == 5 {
 24377  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 24378  	}
 24379  
 24380  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 24381  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24382  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24383  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24384  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 24385  	return TCL_OK
 24386  }
 24387  
 24388  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24389  	var pRbu uintptr = uintptr(0)
 24390  	var zCmd uintptr
 24391  	var zTarget uintptr
 24392  	var zStateDb uintptr = uintptr(0)
 24393  
 24394  	if objc != 3 && objc != 4 {
 24395  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 24396  		return TCL_ERROR
 24397  	}
 24398  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 24399  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 24400  	if objc == 4 {
 24401  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 24402  	}
 24403  	if zStateDb != 0 && int32(*(*int8)(unsafe.Pointer(zStateDb))) == 0 {
 24404  		zStateDb = uintptr(0)
 24405  	}
 24406  
 24407  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 24408  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 24409  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 24410  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 24411  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 24412  	return TCL_OK
 24413  }
 24414  
 24415  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24416  	var zName uintptr
 24417  	var zParent uintptr
 24418  	var rc int32
 24419  
 24420  	if objc != 3 && objc != 4 {
 24421  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 24422  		return TCL_ERROR
 24423  	}
 24424  
 24425  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4)))
 24426  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4)))
 24427  	if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 24428  		zParent = uintptr(0)
 24429  	}
 24430  
 24431  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 24432  	if rc != SQLITE_OK {
 24433  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 24434  		return TCL_ERROR
 24435  	} else if objc == 4 {
 24436  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 24437  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 24438  	}
 24439  
 24440  	tcl.XTcl_ResetResult(tls, interp)
 24441  	return TCL_OK
 24442  }
 24443  
 24444  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24445  	var zName uintptr
 24446  
 24447  	if objc != 2 {
 24448  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 24449  		return TCL_ERROR
 24450  	}
 24451  
 24452  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 24453  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 24454  	return TCL_OK
 24455  }
 24456  
 24457  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 24458  	bp := tls.Alloc(16)
 24459  	defer tls.Free(16)
 24460  
 24461  	var db uintptr
 24462  
 24463  	if objc != 1 {
 24464  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 24465  		return TCL_ERROR
 24466  	}
 24467  
 24468  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 24469  	if db != uintptr(0) {
 24470  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 24471  		return TCL_ERROR
 24472  	}
 24473  
 24474  	return TCL_OK
 24475  }
 24476  
 24477  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 24478  	var i int32
 24479  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd))/uint32(unsafe.Sizeof(struct {
 24480  		FzName uintptr
 24481  		FxProc uintptr
 24482  	}{})); i++ {
 24483  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 24484  	}
 24485  	return TCL_OK
 24486  }
 24487  
 24488  var aObjCmd = [5]struct {
 24489  	FzName uintptr
 24490  	FxProc uintptr
 24491  }{
 24492  	{FzName: ts + 9790, FxProc: 0},
 24493  	{FzName: ts + 9801, FxProc: 0},
 24494  	{FzName: ts + 9819, FxProc: 0},
 24495  	{FzName: ts + 9841, FxProc: 0},
 24496  	{FzName: ts + 9864, FxProc: 0},
 24497  }
 24498  
 24499  type sqlite31 = sqlite32
 24500  
 24501  type sqlite3_str = sqlite3_str1
 24502  
 24503  type uint8_t = uint8
 24504  type uint16_t = uint16
 24505  type uint32_t = uint32
 24506  type uint64_t = uint64
 24507  
 24508  type int_least8_t = int8
 24509  type int_least16_t = int16
 24510  type int_least32_t = int32
 24511  type int_least64_t = int64
 24512  
 24513  type uint_least8_t = uint8
 24514  type uint_least16_t = uint16
 24515  type uint_least32_t = uint32
 24516  type uint_least64_t = uint64
 24517  
 24518  type int_fast8_t = int8
 24519  type int_fast16_t = int32
 24520  type int_fast32_t = int32
 24521  
 24522  type int_fast64_t = int64
 24523  
 24524  type uint_fast8_t = uint8
 24525  type uint_fast16_t = uint32
 24526  type uint_fast32_t = uint32
 24527  
 24528  type uint_fast64_t = uint64
 24529  type uintptr_t = uint32
 24530  
 24531  type intmax_t = int64
 24532  type uintmax_t = uint64
 24533  
 24534  type imaxdiv_t = struct {
 24535  	Fquot int64
 24536  	Frem  int64
 24537  }
 24538  
 24539  type Hash1 = struct {
 24540  	Fhtsize uint32
 24541  	Fcount  uint32
 24542  	Ffirst  uintptr
 24543  	Fht     uintptr
 24544  }
 24545  
 24546  type Hash = Hash1
 24547  type HashElem1 = struct {
 24548  	Fnext uintptr
 24549  	Fprev uintptr
 24550  	Fdata uintptr
 24551  	FpKey uintptr
 24552  }
 24553  
 24554  type HashElem = HashElem1
 24555  
 24556  type _ht = struct {
 24557  	Fcount uint32
 24558  	Fchain uintptr
 24559  }
 24560  
 24561  type max_align_t = struct {
 24562  	F__max_align_ll   int64
 24563  	F__max_align_ld   float64
 24564  	F__max_align_f128 float64
 24565  }
 24566  type i16 = int16_t
 24567  type i8 = int8_t
 24568  
 24569  type tRowcnt = u32
 24570  
 24571  type LogEst = int16_t
 24572  
 24573  type uptr = uintptr_t
 24574  
 24575  type BusyHandler1 = struct {
 24576  	FxBusyHandler uintptr
 24577  	FpBusyArg     uintptr
 24578  	FnBusy        int32
 24579  }
 24580  
 24581  type BusyHandler = BusyHandler1
 24582  
 24583  type AggInfo1 = struct {
 24584  	FdirectMode     u8
 24585  	FuseSortingIdx  u8
 24586  	F__ccgo_pad1    [2]byte
 24587  	FsortingIdx     int32
 24588  	FsortingIdxPTab int32
 24589  	FnSortingColumn int32
 24590  	FmnReg          int32
 24591  	FmxReg          int32
 24592  	FpGroupBy       uintptr
 24593  	FaCol           uintptr
 24594  	FnColumn        int32
 24595  	FnAccumulator   int32
 24596  	FaFunc          uintptr
 24597  	FnFunc          int32
 24598  	FselId          u32
 24599  }
 24600  
 24601  type AggInfo = AggInfo1
 24602  type AuthContext1 = struct {
 24603  	FzAuthContext uintptr
 24604  	FpParse       uintptr
 24605  }
 24606  
 24607  type AuthContext = AuthContext1
 24608  type AutoincInfo1 = struct {
 24609  	FpNext  uintptr
 24610  	FpTab   uintptr
 24611  	FiDb    int32
 24612  	FregCtr int32
 24613  }
 24614  
 24615  type AutoincInfo = AutoincInfo1
 24616  type CollSeq1 = struct {
 24617  	FzName       uintptr
 24618  	Fenc         u8
 24619  	F__ccgo_pad1 [3]byte
 24620  	FpUser       uintptr
 24621  	FxCmp        uintptr
 24622  	FxDel        uintptr
 24623  }
 24624  
 24625  type CollSeq = CollSeq1
 24626  type Column1 = struct {
 24627  	FzCnName     uintptr
 24628  	FnotNull     uint8
 24629  	F__ccgo_pad1 [1]byte
 24630  	Faffinity    int8
 24631  	FszEst       u8
 24632  	FhName       u8
 24633  	F__ccgo_pad2 [1]byte
 24634  	FiDflt       u16
 24635  	FcolFlags    u16
 24636  	F__ccgo_pad3 [2]byte
 24637  }
 24638  
 24639  type Column = Column1
 24640  type Cte1 = struct {
 24641  	FzName       uintptr
 24642  	FpCols       uintptr
 24643  	FpSelect     uintptr
 24644  	FzCteErr     uintptr
 24645  	FpUse        uintptr
 24646  	FeM10d       u8
 24647  	F__ccgo_pad1 [3]byte
 24648  }
 24649  
 24650  type Cte = Cte1
 24651  type CteUse1 = struct {
 24652  	FnUse        int32
 24653  	FaddrM9e     int32
 24654  	FregRtn      int32
 24655  	FiCur        int32
 24656  	FnRowEst     LogEst
 24657  	FeM10d       u8
 24658  	F__ccgo_pad1 [1]byte
 24659  }
 24660  
 24661  type CteUse = CteUse1
 24662  type Db1 = struct {
 24663  	FzDbSName     uintptr
 24664  	FpBt          uintptr
 24665  	Fsafety_level u8
 24666  	FbSyncSet     u8
 24667  	F__ccgo_pad1  [2]byte
 24668  	FpSchema      uintptr
 24669  }
 24670  
 24671  type Db = Db1
 24672  type DbFixer1 = struct {
 24673  	FpParse      uintptr
 24674  	Fw           Walker
 24675  	FpSchema     uintptr
 24676  	FbTemp       u8
 24677  	F__ccgo_pad1 [3]byte
 24678  	FzDb         uintptr
 24679  	FzType       uintptr
 24680  	FpName       uintptr
 24681  }
 24682  
 24683  type DbFixer = DbFixer1
 24684  type Schema1 = struct {
 24685  	Fschema_cookie int32
 24686  	FiGeneration   int32
 24687  	FtblHash       Hash
 24688  	FidxHash       Hash
 24689  	FtrigHash      Hash
 24690  	FfkeyHash      Hash
 24691  	FpSeqTab       uintptr
 24692  	Ffile_format   u8
 24693  	Fenc           u8
 24694  	FschemaFlags   u16
 24695  	Fcache_size    int32
 24696  }
 24697  
 24698  type Schema = Schema1
 24699  type Expr1 = struct {
 24700  	Fop          u8
 24701  	FaffExpr     int8
 24702  	Fop2         u8
 24703  	F__ccgo_pad1 [1]byte
 24704  	Fflags       u32
 24705  	Fu           struct{ FzToken uintptr }
 24706  	FpLeft       uintptr
 24707  	FpRight      uintptr
 24708  	Fx           struct{ FpList uintptr }
 24709  	FnHeight     int32
 24710  	FiTable      int32
 24711  	FiColumn     ynVar
 24712  	FiAgg        i16
 24713  	Fw           struct{ FiJoin int32 }
 24714  	FpAggInfo    uintptr
 24715  	Fy           struct {
 24716  		FpTab        uintptr
 24717  		F__ccgo_pad1 [4]byte
 24718  	}
 24719  }
 24720  
 24721  type Expr = Expr1
 24722  type ExprList1 = struct {
 24723  	FnExpr  int32
 24724  	FnAlloc int32
 24725  	Fa      [1]struct {
 24726  		FpExpr  uintptr
 24727  		FzEName uintptr
 24728  		Ffg     struct {
 24729  			F__ccgo_pad1 [0]uint32
 24730  			FsortFlags   u8
 24731  			F__ccgo_pad2 [3]byte
 24732  			FeEName      uint16
 24733  			F__ccgo_pad3 [2]byte
 24734  		}
 24735  		Fu struct {
 24736  			F__ccgo_pad1 [0]uint32
 24737  			Fx           struct {
 24738  				FiOrderByCol u16
 24739  				FiAlias      u16
 24740  			}
 24741  		}
 24742  	}
 24743  }
 24744  
 24745  type ExprList = ExprList1
 24746  type FKey1 = struct {
 24747  	FpFrom       uintptr
 24748  	FpNextFrom   uintptr
 24749  	FzTo         uintptr
 24750  	FpNextTo     uintptr
 24751  	FpPrevTo     uintptr
 24752  	FnCol        int32
 24753  	FisDeferred  u8
 24754  	FaAction     [2]u8
 24755  	F__ccgo_pad1 [1]byte
 24756  	FapTrigger   [2]uintptr
 24757  	FaCol        [1]struct {
 24758  		FiFrom int32
 24759  		FzCol  uintptr
 24760  	}
 24761  }
 24762  
 24763  type FKey = FKey1
 24764  type FuncDestructor1 = struct {
 24765  	FnRef      int32
 24766  	FxDestroy  uintptr
 24767  	FpUserData uintptr
 24768  }
 24769  
 24770  type FuncDestructor = FuncDestructor1
 24771  type FuncDef1 = struct {
 24772  	FnArg        i8
 24773  	F__ccgo_pad1 [3]byte
 24774  	FfuncFlags   u32
 24775  	FpUserData   uintptr
 24776  	FpNext       uintptr
 24777  	FxSFunc      uintptr
 24778  	FxFinalize   uintptr
 24779  	FxValue      uintptr
 24780  	FxInverse    uintptr
 24781  	FzName       uintptr
 24782  	Fu           struct{ FpHash uintptr }
 24783  }
 24784  
 24785  type FuncDef = FuncDef1
 24786  type FuncDefHash1 = struct{ Fa [23]uintptr }
 24787  
 24788  type FuncDefHash = FuncDefHash1
 24789  type IdList1 = struct {
 24790  	FnId         int32
 24791  	FeU4         u8
 24792  	F__ccgo_pad1 [3]byte
 24793  	Fa           [1]struct {
 24794  		FzName uintptr
 24795  		Fu4    struct{ Fidx int32 }
 24796  	}
 24797  }
 24798  
 24799  type IdList = IdList1
 24800  type Index1 = struct {
 24801  	FzName         uintptr
 24802  	FaiColumn      uintptr
 24803  	FaiRowLogEst   uintptr
 24804  	FpTable        uintptr
 24805  	FzColAff       uintptr
 24806  	FpNext         uintptr
 24807  	FpSchema       uintptr
 24808  	FaSortOrder    uintptr
 24809  	FazColl        uintptr
 24810  	FpPartIdxWhere uintptr
 24811  	FaColExpr      uintptr
 24812  	Ftnum          Pgno
 24813  	FszIdxRow      LogEst
 24814  	FnKeyCol       u16
 24815  	FnColumn       u16
 24816  	FonError       u8
 24817  	F__ccgo_pad1   [1]byte
 24818  	FidxType       uint16
 24819  	F__ccgo_pad2   [2]byte
 24820  	FnSample       int32
 24821  	FnSampleCol    int32
 24822  	FaAvgEq        uintptr
 24823  	FaSample       uintptr
 24824  	FaiRowEst      uintptr
 24825  	FnRowEst0      tRowcnt
 24826  	FcolNotIdxed   Bitmask
 24827  }
 24828  
 24829  type Index = Index1
 24830  type IndexSample1 = struct {
 24831  	Fp     uintptr
 24832  	Fn     int32
 24833  	FanEq  uintptr
 24834  	FanLt  uintptr
 24835  	FanDLt uintptr
 24836  }
 24837  
 24838  type IndexSample = IndexSample1
 24839  type KeyInfo1 = struct {
 24840  	FnRef        u32
 24841  	Fenc         u8
 24842  	F__ccgo_pad1 [1]byte
 24843  	FnKeyField   u16
 24844  	FnAllField   u16
 24845  	F__ccgo_pad2 [2]byte
 24846  	Fdb          uintptr
 24847  	FaSortFlags  uintptr
 24848  	FaColl       [1]uintptr
 24849  }
 24850  
 24851  type KeyInfo = KeyInfo1
 24852  type Lookaside1 = struct {
 24853  	FbDisable    u32
 24854  	Fsz          u16
 24855  	FszTrue      u16
 24856  	FbMalloced   u8
 24857  	F__ccgo_pad1 [3]byte
 24858  	FnSlot       u32
 24859  	FanStat      [3]u32
 24860  	FpInit       uintptr
 24861  	FpFree       uintptr
 24862  	FpSmallInit  uintptr
 24863  	FpSmallFree  uintptr
 24864  	FpMiddle     uintptr
 24865  	FpStart      uintptr
 24866  	FpEnd        uintptr
 24867  }
 24868  
 24869  type Lookaside = Lookaside1
 24870  type LookasideSlot1 = struct{ FpNext uintptr }
 24871  
 24872  type LookasideSlot = LookasideSlot1
 24873  type Module1 = struct {
 24874  	FpModule    uintptr
 24875  	FzName      uintptr
 24876  	FnRefModule int32
 24877  	FpAux       uintptr
 24878  	FxDestroy   uintptr
 24879  	FpEpoTab    uintptr
 24880  }
 24881  
 24882  type Module = Module1
 24883  type NameContext1 = struct {
 24884  	FpParse     uintptr
 24885  	FpSrcList   uintptr
 24886  	FuNC        struct{ FpEList uintptr }
 24887  	FpNext      uintptr
 24888  	FnRef       int32
 24889  	FnNcErr     int32
 24890  	FncFlags    int32
 24891  	FpWinSelect uintptr
 24892  }
 24893  
 24894  type NameContext = NameContext1
 24895  type OnOrUsing1 = struct {
 24896  	FpOn    uintptr
 24897  	FpUsing uintptr
 24898  }
 24899  
 24900  type OnOrUsing = OnOrUsing1
 24901  type Parse1 = struct {
 24902  	Fdb               uintptr
 24903  	FzErrMsg          uintptr
 24904  	FpVdbe            uintptr
 24905  	Frc               int32
 24906  	FcolNamesSet      u8
 24907  	FcheckSchema      u8
 24908  	Fnested           u8
 24909  	FnTempReg         u8
 24910  	FisMultiWrite     u8
 24911  	FmayAbort         u8
 24912  	FhasCompound      u8
 24913  	FokConstFactor    u8
 24914  	FdisableLookaside u8
 24915  	FdisableVtab      u8
 24916  	FwithinRJSubrtn   u8
 24917  	F__ccgo_pad1      [1]byte
 24918  	FnRangeReg        int32
 24919  	FiRangeReg        int32
 24920  	FnErr             int32
 24921  	FnTab             int32
 24922  	FnMem             int32
 24923  	FszOpAlloc        int32
 24924  	FiSelfTab         int32
 24925  	FnLabel           int32
 24926  	FnLabelAlloc      int32
 24927  	FaLabel           uintptr
 24928  	FpConstExpr       uintptr
 24929  	FconstraintName   Token
 24930  	FwriteMask        yDbMask
 24931  	FcookieMask       yDbMask
 24932  	FregRowid         int32
 24933  	FregRoot          int32
 24934  	FnMaxArg          int32
 24935  	FnSelect          int32
 24936  	FnTableLock       int32
 24937  	FaTableLock       uintptr
 24938  	FpAinc            uintptr
 24939  	FpToplevel        uintptr
 24940  	FpTriggerTab      uintptr
 24941  	FpTriggerPrg      uintptr
 24942  	FpCleanup         uintptr
 24943  	Fu1               struct{ FaddrCrTab int32 }
 24944  	FnQueryLoop       u32
 24945  	Foldmask          u32
 24946  	Fnewmask          u32
 24947  	FeTriggerOp       u8
 24948  	FbReturning       u8
 24949  	FeOrconf          u8
 24950  	FdisableTriggers  u8
 24951  	FaTempReg         [8]int32
 24952  	FpOuterParse      uintptr
 24953  	FsNameToken       Token
 24954  	FsLastToken       Token
 24955  	FnVar             ynVar
 24956  	FiPkSortOrder     u8
 24957  	Fexplain          u8
 24958  	FeParseMode       u8
 24959  	F__ccgo_pad2      [3]byte
 24960  	FnVtabLock        int32
 24961  	FnHeight          int32
 24962  	FaddrExplain      int32
 24963  	FpVList           uintptr
 24964  	FpReprepare       uintptr
 24965  	FzTail            uintptr
 24966  	FpNewTable        uintptr
 24967  	FpNewIndex        uintptr
 24968  	FpNewTrigger      uintptr
 24969  	FzAuthContext     uintptr
 24970  	FsArg             Token
 24971  	FapVtabLock       uintptr
 24972  	FpWith            uintptr
 24973  	FpRename          uintptr
 24974  }
 24975  
 24976  type Parse = Parse1
 24977  type ParseCleanup1 = struct {
 24978  	FpNext    uintptr
 24979  	FpPtr     uintptr
 24980  	FxCleanup uintptr
 24981  }
 24982  
 24983  type ParseCleanup = ParseCleanup1
 24984  type PreUpdate1 = struct {
 24985  	Fv            uintptr
 24986  	FpCsr         uintptr
 24987  	Fop           int32
 24988  	FaRecord      uintptr
 24989  	Fkeyinfo      KeyInfo
 24990  	FpUnpacked    uintptr
 24991  	FpNewUnpacked uintptr
 24992  	FiNewReg      int32
 24993  	FiBlobWrite   int32
 24994  	FiKey1        i64
 24995  	FiKey2        i64
 24996  	FaNew         uintptr
 24997  	FpTab         uintptr
 24998  	FpPk          uintptr
 24999  }
 25000  
 25001  type PrintfArguments1 = struct {
 25002  	FnArg  int32
 25003  	FnUsed int32
 25004  	FapArg uintptr
 25005  }
 25006  
 25007  type PrintfArguments = PrintfArguments1
 25008  type Returning1 = struct {
 25009  	FpParse    uintptr
 25010  	FpReturnEL uintptr
 25011  	FretTrig   Trigger
 25012  	FretTStep  TriggerStep
 25013  	FiRetCur   int32
 25014  	FnRetCol   int32
 25015  	FiRetReg   int32
 25016  }
 25017  
 25018  type Returning = Returning1
 25019  type Savepoint1 = struct {
 25020  	FzName            uintptr
 25021  	FnDeferredCons    i64
 25022  	FnDeferredImmCons i64
 25023  	FpNext            uintptr
 25024  }
 25025  
 25026  type Savepoint = Savepoint1
 25027  type Select1 = struct {
 25028  	Fop           u8
 25029  	F__ccgo_pad1  [1]byte
 25030  	FnSelectRow   LogEst
 25031  	FselFlags     u32
 25032  	FiLimit       int32
 25033  	FiOffset      int32
 25034  	FselId        u32
 25035  	FaddrOpenEphm [2]int32
 25036  	FpEList       uintptr
 25037  	FpSrc         uintptr
 25038  	FpWhere       uintptr
 25039  	FpGroupBy     uintptr
 25040  	FpHaving      uintptr
 25041  	FpOrderBy     uintptr
 25042  	FpPrior       uintptr
 25043  	FpNext        uintptr
 25044  	FpLimit       uintptr
 25045  	FpWith        uintptr
 25046  	FpWin         uintptr
 25047  	FpWinDefn     uintptr
 25048  }
 25049  
 25050  type Select = Select1
 25051  type SelectDest1 = struct {
 25052  	FeDest       u8
 25053  	F__ccgo_pad1 [3]byte
 25054  	FiSDParm     int32
 25055  	FiSDParm2    int32
 25056  	FiSdst       int32
 25057  	FnSdst       int32
 25058  	FzAffSdst    uintptr
 25059  	FpOrderBy    uintptr
 25060  }
 25061  
 25062  type SelectDest = SelectDest1
 25063  type SrcItem1 = struct {
 25064  	FpSchema     uintptr
 25065  	FzDatabase   uintptr
 25066  	FzName       uintptr
 25067  	FzAlias      uintptr
 25068  	FpTab        uintptr
 25069  	FpSelect     uintptr
 25070  	FaddrFillSub int32
 25071  	FregReturn   int32
 25072  	FregResult   int32
 25073  	Ffg          struct {
 25074  		F__ccgo_pad1 [0]uint32
 25075  		Fjointype    u8
 25076  		F__ccgo_pad2 [3]byte
 25077  		FnotIndexed  uint16
 25078  		F__ccgo_pad3 [2]byte
 25079  	}
 25080  	FiCursor int32
 25081  	Fu3      struct{ FpOn uintptr }
 25082  	FcolUsed Bitmask
 25083  	Fu1      struct{ FzIndexedBy uintptr }
 25084  	Fu2      struct{ FpIBIndex uintptr }
 25085  }
 25086  
 25087  type SrcItem = SrcItem1
 25088  type SrcList1 = struct {
 25089  	FnSrc   int32
 25090  	FnAlloc u32
 25091  	Fa      [1]SrcItem
 25092  }
 25093  
 25094  type SrcList = SrcList1
 25095  type StrAccum = sqlite3_str1
 25096  type Table1 = struct {
 25097  	FzName      uintptr
 25098  	FaCol       uintptr
 25099  	FpIndex     uintptr
 25100  	FzColAff    uintptr
 25101  	FpCheck     uintptr
 25102  	Ftnum       Pgno
 25103  	FnTabRef    u32
 25104  	FtabFlags   u32
 25105  	FiPKey      i16
 25106  	FnCol       i16
 25107  	FnNVCol     i16
 25108  	FnRowLogEst LogEst
 25109  	FszTabRow   LogEst
 25110  	FkeyConf    u8
 25111  	FeTabType   u8
 25112  	Fu          struct {
 25113  		Ftab struct {
 25114  			FaddColOffset int32
 25115  			FpFKey        uintptr
 25116  			FpDfltList    uintptr
 25117  		}
 25118  	}
 25119  	FpTrigger uintptr
 25120  	FpSchema  uintptr
 25121  }
 25122  
 25123  type Table = Table1
 25124  type Token1 = struct {
 25125  	Fz uintptr
 25126  	Fn uint32
 25127  }
 25128  
 25129  type Token = Token1
 25130  type Trigger1 = struct {
 25131  	FzName       uintptr
 25132  	Ftable       uintptr
 25133  	Fop          u8
 25134  	Ftr_tm       u8
 25135  	FbReturning  u8
 25136  	F__ccgo_pad1 [1]byte
 25137  	FpWhen       uintptr
 25138  	FpColumns    uintptr
 25139  	FpSchema     uintptr
 25140  	FpTabSchema  uintptr
 25141  	Fstep_list   uintptr
 25142  	FpNext       uintptr
 25143  }
 25144  
 25145  type Trigger = Trigger1
 25146  type TriggerPrg1 = struct {
 25147  	FpTrigger uintptr
 25148  	FpNext    uintptr
 25149  	FpProgram uintptr
 25150  	Forconf   int32
 25151  	FaColmask [2]u32
 25152  }
 25153  
 25154  type TriggerPrg = TriggerPrg1
 25155  type TriggerStep1 = struct {
 25156  	Fop          u8
 25157  	Forconf      u8
 25158  	F__ccgo_pad1 [2]byte
 25159  	FpTrig       uintptr
 25160  	FpSelect     uintptr
 25161  	FzTarget     uintptr
 25162  	FpFrom       uintptr
 25163  	FpWhere      uintptr
 25164  	FpExprList   uintptr
 25165  	FpIdList     uintptr
 25166  	FpUpsert     uintptr
 25167  	FzSpan       uintptr
 25168  	FpNext       uintptr
 25169  	FpLast       uintptr
 25170  }
 25171  
 25172  type TriggerStep = TriggerStep1
 25173  type UnpackedRecord1 = struct {
 25174  	FpKeyInfo uintptr
 25175  	FaMem     uintptr
 25176  	Fu        struct {
 25177  		Fz           uintptr
 25178  		F__ccgo_pad1 [4]byte
 25179  	}
 25180  	Fn           int32
 25181  	FnField      u16
 25182  	Fdefault_rc  i8
 25183  	FerrCode     u8
 25184  	Fr1          i8
 25185  	Fr2          i8
 25186  	FeqSeen      u8
 25187  	F__ccgo_pad1 [1]byte
 25188  }
 25189  
 25190  type UnpackedRecord = UnpackedRecord1
 25191  type Upsert1 = struct {
 25192  	FpUpsertTarget      uintptr
 25193  	FpUpsertTargetWhere uintptr
 25194  	FpUpsertSet         uintptr
 25195  	FpUpsertWhere       uintptr
 25196  	FpNextUpsert        uintptr
 25197  	FisDoUpdate         u8
 25198  	F__ccgo_pad1        [3]byte
 25199  	FpToFree            uintptr
 25200  	FpUpsertIdx         uintptr
 25201  	FpUpsertSrc         uintptr
 25202  	FregData            int32
 25203  	FiDataCur           int32
 25204  	FiIdxCur            int32
 25205  }
 25206  
 25207  type Upsert = Upsert1
 25208  type VTable1 = struct {
 25209  	Fdb          uintptr
 25210  	FpMod        uintptr
 25211  	FpVtab       uintptr
 25212  	FnRef        int32
 25213  	FbConstraint u8
 25214  	FeVtabRisk   u8
 25215  	F__ccgo_pad1 [2]byte
 25216  	FiSavepoint  int32
 25217  	FpNext       uintptr
 25218  }
 25219  
 25220  type VTable = VTable1
 25221  type Walker1 = struct {
 25222  	FpParse           uintptr
 25223  	FxExprCallback    uintptr
 25224  	FxSelectCallback  uintptr
 25225  	FxSelectCallback2 uintptr
 25226  	FwalkerDepth      int32
 25227  	FeCode            u16
 25228  	F__ccgo_pad1      [2]byte
 25229  	Fu                struct{ FpNC uintptr }
 25230  }
 25231  
 25232  type Walker = Walker1
 25233  type Window1 = struct {
 25234  	FzName          uintptr
 25235  	FzBase          uintptr
 25236  	FpPartition     uintptr
 25237  	FpOrderBy       uintptr
 25238  	FeFrmType       u8
 25239  	FeStart         u8
 25240  	FeEnd           u8
 25241  	FbImplicitFrame u8
 25242  	FeExclude       u8
 25243  	F__ccgo_pad1    [3]byte
 25244  	FpStart         uintptr
 25245  	FpEnd           uintptr
 25246  	FppThis         uintptr
 25247  	FpNextWin       uintptr
 25248  	FpFilter        uintptr
 25249  	FpWFunc         uintptr
 25250  	FiEphCsr        int32
 25251  	FregAccum       int32
 25252  	FregResult      int32
 25253  	FcsrApp         int32
 25254  	FregApp         int32
 25255  	FregPart        int32
 25256  	FpOwner         uintptr
 25257  	FnBufferCol     int32
 25258  	FiArgCol        int32
 25259  	FregOne         int32
 25260  	FregStartRowid  int32
 25261  	FregEndRowid    int32
 25262  	FbExprArgs      u8
 25263  	F__ccgo_pad2    [3]byte
 25264  }
 25265  
 25266  type Window = Window1
 25267  type With1 = struct {
 25268  	FnCte   int32
 25269  	FbView  int32
 25270  	FpOuter uintptr
 25271  	Fa      [1]Cte
 25272  }
 25273  
 25274  type With = With1
 25275  
 25276  type Bitmask = u64
 25277  
 25278  type VList = int32
 25279  
 25280  type Pgno = u32
 25281  
 25282  type PgHdr1 = struct {
 25283  	FpPage      uintptr
 25284  	FpData      uintptr
 25285  	FpExtra     uintptr
 25286  	FpCache     uintptr
 25287  	FpDirty     uintptr
 25288  	FpPager     uintptr
 25289  	Fpgno       Pgno
 25290  	Fflags      u16
 25291  	FnRef       i16
 25292  	FpDirtyNext uintptr
 25293  	FpDirtyPrev uintptr
 25294  }
 25295  
 25296  type DbPage = PgHdr1
 25297  
 25298  type Btree1 = struct {
 25299  	Fdb             uintptr
 25300  	FpBt            uintptr
 25301  	FinTrans        u8
 25302  	Fsharable       u8
 25303  	Flocked         u8
 25304  	FhasIncrblobCur u8
 25305  	FwantToLock     int32
 25306  	FnBackup        int32
 25307  	FiBDataVersion  u32
 25308  	FpNext          uintptr
 25309  	FpPrev          uintptr
 25310  	Flock           BtLock
 25311  }
 25312  
 25313  type BtCursor1 = struct {
 25314  	FeState        u8
 25315  	FcurFlags      u8
 25316  	FcurPagerFlags u8
 25317  	Fhints         u8
 25318  	FskipNext      int32
 25319  	FpBtree        uintptr
 25320  	FaOverflow     uintptr
 25321  	FpKey          uintptr
 25322  	FpBt           uintptr
 25323  	FpNext         uintptr
 25324  	Finfo          CellInfo
 25325  	FnKey          i64
 25326  	FpgnoRoot      Pgno
 25327  	FiPage         i8
 25328  	FcurIntKey     u8
 25329  	Fix            u16
 25330  	FaiIdx         [19]u16
 25331  	F__ccgo_pad1   [2]byte
 25332  	FpKeyInfo      uintptr
 25333  	FpPage         uintptr
 25334  	FapPage        [19]uintptr
 25335  }
 25336  
 25337  type BtShared1 = struct {
 25338  	FpPager          uintptr
 25339  	Fdb              uintptr
 25340  	FpCursor         uintptr
 25341  	FpPage1          uintptr
 25342  	FopenFlags       u8
 25343  	FautoVacuum      u8
 25344  	FincrVacuum      u8
 25345  	FbDoTruncate     u8
 25346  	FinTransaction   u8
 25347  	Fmax1bytePayload u8
 25348  	FnReserveWanted  u8
 25349  	F__ccgo_pad1     [1]byte
 25350  	FbtsFlags        u16
 25351  	FmaxLocal        u16
 25352  	FminLocal        u16
 25353  	FmaxLeaf         u16
 25354  	FminLeaf         u16
 25355  	F__ccgo_pad2     [2]byte
 25356  	FpageSize        u32
 25357  	FusableSize      u32
 25358  	FnTransaction    int32
 25359  	FnPage           u32
 25360  	FpSchema         uintptr
 25361  	FxFreeSchema     uintptr
 25362  	Fmutex           uintptr
 25363  	FpHasContent     uintptr
 25364  	FnRef            int32
 25365  	FpNext           uintptr
 25366  	FpLock           uintptr
 25367  	FpWriter         uintptr
 25368  	FpTmpSpace       uintptr
 25369  	FnPreformatSize  int32
 25370  }
 25371  
 25372  type BtreePayload1 = struct {
 25373  	FpKey        uintptr
 25374  	FnKey        sqlite3_int64
 25375  	FpData       uintptr
 25376  	FaMem        uintptr
 25377  	FnMem        u16
 25378  	F__ccgo_pad1 [2]byte
 25379  	FnData       int32
 25380  	FnZero       int32
 25381  }
 25382  
 25383  type BtreePayload = BtreePayload1
 25384  
 25385  type Vdbe1 = struct {
 25386  	Fdb                 uintptr
 25387  	FpPrev              uintptr
 25388  	FpNext              uintptr
 25389  	FpParse             uintptr
 25390  	FnVar               ynVar
 25391  	F__ccgo_pad1        [2]byte
 25392  	FnMem               int32
 25393  	FnCursor            int32
 25394  	FcacheCtr           u32
 25395  	Fpc                 int32
 25396  	Frc                 int32
 25397  	FnChange            i64
 25398  	FiStatement         int32
 25399  	FiCurrentTime       i64
 25400  	FnFkConstraint      i64
 25401  	FnStmtDefCons       i64
 25402  	FnStmtDefImmCons    i64
 25403  	FaMem               uintptr
 25404  	FapArg              uintptr
 25405  	FapCsr              uintptr
 25406  	FaVar               uintptr
 25407  	FaOp                uintptr
 25408  	FnOp                int32
 25409  	FnOpAlloc           int32
 25410  	FaColName           uintptr
 25411  	FpResultSet         uintptr
 25412  	FzErrMsg            uintptr
 25413  	FpVList             uintptr
 25414  	FstartTime          i64
 25415  	FnResColumn         u16
 25416  	FerrorAction        u8
 25417  	FminWriteFileFormat u8
 25418  	FprepFlags          u8
 25419  	FeVdbeState         u8
 25420  	F__ccgo_pad2        [2]byte
 25421  	Fexpired            uint8
 25422  	F__ccgo_pad3        [3]byte
 25423  	FbtreeMask          yDbMask
 25424  	FlockMask           yDbMask
 25425  	FaCounter           [9]u32
 25426  	FzSql               uintptr
 25427  	FpFree              uintptr
 25428  	FpFrame             uintptr
 25429  	FpDelFrame          uintptr
 25430  	FnFrame             int32
 25431  	Fexpmask            u32
 25432  	FpProgram           uintptr
 25433  	FpAuxData           uintptr
 25434  }
 25435  
 25436  type SubProgram1 = struct {
 25437  	FaOp   uintptr
 25438  	FnOp   int32
 25439  	FnMem  int32
 25440  	FnCsr  int32
 25441  	FaOnce uintptr
 25442  	Ftoken uintptr
 25443  	FpNext uintptr
 25444  }
 25445  
 25446  type SubProgram = SubProgram1
 25447  
 25448  type VdbeOp1 = struct {
 25449  	Fopcode   u8
 25450  	Fp4type   int8
 25451  	Fp5       u16
 25452  	Fp1       int32
 25453  	Fp2       int32
 25454  	Fp3       int32
 25455  	Fp4       struct{ Fi int32 }
 25456  	FzComment uintptr
 25457  }
 25458  
 25459  type p4union = struct{ Fi int32 }
 25460  
 25461  type VdbeOp = VdbeOp1
 25462  
 25463  type VdbeOpList1 = struct {
 25464  	Fopcode u8
 25465  	Fp1     int8
 25466  	Fp2     int8
 25467  	Fp3     int8
 25468  }
 25469  
 25470  type VdbeOpList = VdbeOpList1
 25471  
 25472  type RecordCompare = uintptr
 25473  
 25474  type PgHdr = PgHdr1
 25475  
 25476  type sqlite3_xauth = uintptr
 25477  
 25478  type sqlite3InitInfo = struct {
 25479  	FnewTnum       Pgno
 25480  	FiDb           u8
 25481  	Fbusy          u8
 25482  	F__ccgo_pad1   [2]byte
 25483  	ForphanTrigger uint8
 25484  	F__ccgo_pad2   [3]byte
 25485  	FazInit        uintptr
 25486  }
 25487  
 25488  type sColMap = struct {
 25489  	FiFrom int32
 25490  	FzCol  uintptr
 25491  }
 25492  
 25493  type AggInfo_col = struct {
 25494  	FpTab          uintptr
 25495  	FpCExpr        uintptr
 25496  	FiTable        int32
 25497  	FiMem          int32
 25498  	FiColumn       i16
 25499  	FiSorterColumn i16
 25500  }
 25501  
 25502  type AggInfo_func = struct {
 25503  	FpFExpr    uintptr
 25504  	FpFunc     uintptr
 25505  	FiMem      int32
 25506  	FiDistinct int32
 25507  	FiDistAddr int32
 25508  }
 25509  
 25510  type ynVar = i16
 25511  
 25512  type ExprList_item = struct {
 25513  	FpExpr  uintptr
 25514  	FzEName uintptr
 25515  	Ffg     struct {
 25516  		F__ccgo_pad1 [0]uint32
 25517  		FsortFlags   u8
 25518  		F__ccgo_pad2 [3]byte
 25519  		FeEName      uint16
 25520  		F__ccgo_pad3 [2]byte
 25521  	}
 25522  	Fu struct {
 25523  		F__ccgo_pad1 [0]uint32
 25524  		Fx           struct {
 25525  			FiOrderByCol u16
 25526  			FiAlias      u16
 25527  		}
 25528  	}
 25529  }
 25530  
 25531  type IdList_item = struct {
 25532  	FzName uintptr
 25533  	Fu4    struct{ Fidx int32 }
 25534  }
 25535  
 25536  type yDbMask = uint32
 25537  
 25538  type InitData = struct {
 25539  	Fdb         uintptr
 25540  	FpzErrMsg   uintptr
 25541  	FiDb        int32
 25542  	Frc         int32
 25543  	FmInitFlags u32
 25544  	FnInitRow   u32
 25545  	FmxPage     Pgno
 25546  }
 25547  
 25548  type Sqlite3Config = struct {
 25549  	FbMemstat            int32
 25550  	FbCoreMutex          u8
 25551  	FbFullMutex          u8
 25552  	FbOpenUri            u8
 25553  	FbUseCis             u8
 25554  	FbSmallMalloc        u8
 25555  	FbExtraSchemaChecks  u8
 25556  	F__ccgo_pad1         [2]byte
 25557  	FmxStrlen            int32
 25558  	FneverCorrupt        int32
 25559  	FszLookaside         int32
 25560  	FnLookaside          int32
 25561  	FnStmtSpill          int32
 25562  	Fm                   sqlite3_mem_methods
 25563  	Fmutex               sqlite3_mutex_methods
 25564  	Fpcache2             sqlite3_pcache_methods2
 25565  	FpHeap               uintptr
 25566  	FnHeap               int32
 25567  	FmnReq               int32
 25568  	FmxReq               int32
 25569  	FszMmap              sqlite3_int64
 25570  	FmxMmap              sqlite3_int64
 25571  	FpPage               uintptr
 25572  	FszPage              int32
 25573  	FnPage               int32
 25574  	FmxParserStack       int32
 25575  	FsharedCacheEnabled  int32
 25576  	FszPma               u32
 25577  	FisInit              int32
 25578  	FinProgress          int32
 25579  	FisMutexInit         int32
 25580  	FisMallocInit        int32
 25581  	FisPCacheInit        int32
 25582  	FnRefInitMutex       int32
 25583  	FpInitMutex          uintptr
 25584  	FxLog                uintptr
 25585  	FpLogArg             uintptr
 25586  	FmxMemdbSize         sqlite3_int64
 25587  	FxTestCallback       uintptr
 25588  	FbLocaltimeFault     int32
 25589  	FxAltLocaltime       uintptr
 25590  	FiOnceResetThreshold int32
 25591  	FszSorterRef         u32
 25592  	FiPrngSeed           uint32
 25593  }
 25594  
 25595  type BoxGeomCtx1 = struct {
 25596  	Finterp  uintptr
 25597  	FpScript uintptr
 25598  }
 25599  
 25600  type BoxGeomCtx = BoxGeomCtx1
 25601  
 25602  type BoxQueryCtx1 = struct {
 25603  	Finterp  uintptr
 25604  	FpScript uintptr
 25605  }
 25606  
 25607  type BoxQueryCtx = BoxQueryCtx1
 25608  
 25609  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 25610  	var p uintptr = pCtx
 25611  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 25612  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25613  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 25614  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25615  			tcl.XTclFreeObj(tls, _objPtr)
 25616  		}
 25617  	}
 25618  	sqlite3.Xsqlite3_free(tls, p)
 25619  }
 25620  
 25621  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 25622  	bp := tls.Alloc(88)
 25623  	defer tls.Free(88)
 25624  
 25625  	var rc int32 = SQLITE_OK
 25626  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 25627  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 25628  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 25629  		var pScript uintptr = uintptr(0)
 25630  		var pParam uintptr = uintptr(0)
 25631  		var pCoord uintptr = uintptr(0)
 25632  		var ii int32
 25633  		var pRes uintptr
 25634  
 25635  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 25636  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 25637  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 25638  
 25639  		sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof([64]int8{}))-uint32(1)), bp+16, ts+9889, libc.VaList(bp, (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext))
 25640  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25641  
 25642  		pParam = tcl.XTcl_NewObj(tls)
 25643  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 25644  			tcl.XTcl_ListObjAppendElement(tls,
 25645  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 25646  		}
 25647  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 25648  
 25649  		pCoord = tcl.XTcl_NewObj(tls)
 25650  		for ii = 0; ii < nCoord; ii++ {
 25651  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 25652  		}
 25653  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 25654  
 25655  		sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof([64]int8{}))-uint32(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 25656  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25657  
 25658  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 25659  		if rc != TCL_OK {
 25660  			rc = SQLITE_ERROR
 25661  		} else {
 25662  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 25663  			*(*uintptr)(unsafe.Pointer(bp + 84)) = uintptr(0)
 25664  
 25665  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 25666  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+84) != 0 {
 25667  				return TCL_ERROR
 25668  			}
 25669  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 25670  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 84)))))
 25671  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 25672  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 25673  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 25674  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 25675  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25676  						rc = SQLITE_ERROR
 25677  					} else {
 25678  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 25679  						if pBGCtx == uintptr(0) {
 25680  							rc = SQLITE_NOMEM
 25681  						} else {
 25682  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 25683  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 25684  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 25685  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 25686  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 25687  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 25688  						}
 25689  					}
 25690  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 25691  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25692  						rc = SQLITE_ERROR
 25693  					}
 25694  				}
 25695  			}
 25696  		}
 25697  	}
 25698  	return rc
 25699  }
 25700  
 25701  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 25702  	var ii int32
 25703  
 25704  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 25705  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 25706  		return SQLITE_ERROR
 25707  	}
 25708  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 25709  		return SQLITE_ERROR
 25710  	}
 25711  
 25712  	for ii = 0; ii < nCoord; ii = ii + 2 {
 25713  		if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8)) > *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii+1)*8)) || *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii+1)*8)) < *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8)) {
 25714  			*(*int32)(unsafe.Pointer(pRes)) = 0
 25715  			return SQLITE_OK
 25716  		}
 25717  	}
 25718  
 25719  	*(*int32)(unsafe.Pointer(pRes)) = 1
 25720  
 25721  	return SQLITE_OK
 25722  }
 25723  
 25724  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25725  	bp := tls.Alloc(76)
 25726  	defer tls.Free(76)
 25727  
 25728  	var pCtx uintptr
 25729  
 25730  	if objc != 3 {
 25731  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25732  		return TCL_ERROR
 25733  	}
 25734  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+8) != 0 {
 25735  		return TCL_ERROR
 25736  	}
 25737  
 25738  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 25739  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25740  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 25741  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25742  
 25743  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 25744  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 25745  	}{box_geom})), pCtx)
 25746  
 25747  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+12, ts+9889, libc.VaList(bp, pCtx))
 25748  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+12, -1))
 25749  	return TCL_OK
 25750  }
 25751  
 25752  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 25753  	bp := tls.Alloc(36)
 25754  	defer tls.Free(36)
 25755  
 25756  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 25757  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 25758  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 25759  	var pEval uintptr
 25760  	var pArg uintptr
 25761  	var pTmp uintptr = uintptr(0)
 25762  	var rc int32
 25763  	var ii int32
 25764  
 25765  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 25766  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25767  	pArg = tcl.XTcl_NewObj(tls)
 25768  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 25769  
 25770  	pTmp = tcl.XTcl_NewObj(tls)
 25771  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25772  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 25773  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 25774  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25775  	}
 25776  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 25777  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25778  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25779  		var _objPtr uintptr = pTmp
 25780  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25781  			tcl.XTclFreeObj(tls, _objPtr)
 25782  		}
 25783  	}
 25784  
 25785  	pTmp = tcl.XTcl_NewObj(tls)
 25786  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25787  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 25788  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 25789  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25790  	}
 25791  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 25792  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25793  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 25794  		var _objPtr uintptr = pTmp
 25795  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25796  			tcl.XTclFreeObj(tls, _objPtr)
 25797  		}
 25798  	}
 25799  
 25800  	pTmp = tcl.XTcl_NewObj(tls)
 25801  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25802  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 25803  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 25804  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25805  	}
 25806  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 25807  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25808  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 25809  		var _objPtr uintptr = pTmp
 25810  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25811  			tcl.XTclFreeObj(tls, _objPtr)
 25812  		}
 25813  	}
 25814  
 25815  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 25816  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 25817  
 25818  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 25819  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 25820  
 25821  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 25822  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 25823  
 25824  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 25825  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 25826  
 25827  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 25828  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 25829  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*4)), -1))
 25830  
 25831  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 25832  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 25833  		rc = SQLITE_ERROR
 25834  	} else {
 25835  		rc = SQLITE_OK
 25836  	}
 25837  
 25838  	if rc == SQLITE_OK {
 25839  		*(*float64)(unsafe.Pointer(bp + 24)) = 0.0
 25840  		*(*int32)(unsafe.Pointer(bp + 16)) = 0
 25841  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 25842  		*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
 25843  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 25844  
 25845  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+16, bp+20) != 0 ||
 25846  			*(*int32)(unsafe.Pointer(bp + 16)) != 2 ||
 25847  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 20)) + 1*4)), bp+24) != 0 ||
 25848  			tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 20)))), bp, int32(unsafe.Sizeof(uintptr(0))), ts+10013, 0, bp+32) != 0 {
 25849  			rc = SQLITE_ERROR
 25850  		} else {
 25851  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 24))
 25852  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 32))
 25853  		}
 25854  	}
 25855  
 25856  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 25857  		var _objPtr uintptr = pArg
 25858  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25859  			tcl.XTclFreeObj(tls, _objPtr)
 25860  		}
 25861  	}
 25862  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 25863  		var _objPtr uintptr = pEval
 25864  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25865  			tcl.XTclFreeObj(tls, _objPtr)
 25866  		}
 25867  	}
 25868  	return rc
 25869  }
 25870  
 25871  func box_query_destroy(tls *libc.TLS, p uintptr) {
 25872  	var pCtx uintptr = p
 25873  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25874  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 25875  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25876  			tcl.XTclFreeObj(tls, _objPtr)
 25877  		}
 25878  	}
 25879  	tcl.XTcl_Free(tls, pCtx)
 25880  }
 25881  
 25882  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25883  	bp := tls.Alloc(4)
 25884  	defer tls.Free(4)
 25885  
 25886  	var pCtx uintptr
 25887  
 25888  	if objc != 3 {
 25889  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25890  		return TCL_ERROR
 25891  	}
 25892  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 25893  		return TCL_ERROR
 25894  	}
 25895  
 25896  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 25897  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25898  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 25899  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25900  
 25901  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 25902  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 25903  			f func(*libc.TLS, uintptr) int32
 25904  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 25905  
 25906  	tcl.XTcl_ResetResult(tls, interp)
 25907  	return TCL_OK
 25908  }
 25909  
 25910  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 25911  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 25912  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25913  	}{register_box_geom})), uintptr(0), uintptr(0))
 25914  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 25915  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25916  	}{register_box_query})), uintptr(0), uintptr(0))
 25917  	return TCL_OK
 25918  }
 25919  
 25920  type TestSession1 = struct {
 25921  	FpSession      uintptr
 25922  	Finterp        uintptr
 25923  	FpFilterScript uintptr
 25924  }
 25925  
 25926  type TestSession = TestSession1
 25927  
 25928  type TestStreamInput1 = struct {
 25929  	FnStream int32
 25930  	FaData   uintptr
 25931  	FnData   int32
 25932  	FiData   int32
 25933  }
 25934  
 25935  type TestStreamInput = TestStreamInput1
 25936  
 25937  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 25938  	bp := tls.Alloc(56)
 25939  	defer tls.Free(56)
 25940  
 25941  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 25942  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 25943  		return TCL_ERROR
 25944  	}
 25945  
 25946  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25947  	return TCL_OK
 25948  }
 25949  
 25950  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 25951  	bp := tls.Alloc(4)
 25952  	defer tls.Free(4)
 25953  
 25954  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 25955  	var rc int32
 25956  
 25957  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 25958  
 25959  	if rc == SQLITE_OK {
 25960  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 25961  	}
 25962  
 25963  	if rc == SQLITE_OK {
 25964  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 25965  	}
 25966  
 25967  	if rc == SQLITE_OK {
 25968  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 25969  	}
 25970  
 25971  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 25972  
 25973  	return rc
 25974  }
 25975  
 25976  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25977  	bp := tls.Alloc(28)
 25978  	defer tls.Free(28)
 25979  
 25980  	var zSql uintptr
 25981  
 25982  	var rc int32
 25983  
 25984  	if objc != 3 {
 25985  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 25986  		return TCL_ERROR
 25987  	}
 25988  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 25989  		return TCL_ERROR
 25990  	}
 25991  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 25992  
 25993  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+20, bp+24)
 25994  	if rc != SQLITE_OK {
 25995  		tcl.XTcl_ResetResult(tls, interp)
 25996  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 25997  		return TCL_ERROR
 25998  	}
 25999  
 26000  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 20))))
 26001  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26002  	return TCL_OK
 26003  }
 26004  
 26005  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 26006  	bp := tls.Alloc(4)
 26007  	defer tls.Free(4)
 26008  
 26009  	var pObj uintptr
 26010  	*(*int32)(unsafe.Pointer(bp)) = 0
 26011  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 26012  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 26013  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 26014  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26015  		var _objPtr uintptr = pName
 26016  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26017  			tcl.XTclFreeObj(tls, _objPtr)
 26018  		}
 26019  	}
 26020  	if pObj != 0 {
 26021  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 26022  	}
 26023  	return *(*int32)(unsafe.Pointer(bp))
 26024  }
 26025  
 26026  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 26027  	bp := tls.Alloc(24)
 26028  	defer tls.Free(24)
 26029  
 26030  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26031  	if zErr != 0 {
 26032  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 26033  		sqlite3.Xsqlite3_free(tls, zErr)
 26034  	}
 26035  	return TCL_ERROR
 26036  }
 26037  
 26038  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 26039  	bp := tls.Alloc(4)
 26040  	defer tls.Free(4)
 26041  
 26042  	var p uintptr = pCtx
 26043  	var pEval uintptr
 26044  	var rc int32
 26045  	*(*int32)(unsafe.Pointer(bp)) = 0
 26046  
 26047  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 26048  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26049  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 26050  	if rc == TCL_OK {
 26051  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 26052  	}
 26053  	if rc == TCL_OK {
 26054  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 26055  	}
 26056  	if rc != TCL_OK {
 26057  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 26058  	}
 26059  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26060  		var _objPtr uintptr = pEval
 26061  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26062  			tcl.XTclFreeObj(tls, _objPtr)
 26063  		}
 26064  	}
 26065  
 26066  	return *(*int32)(unsafe.Pointer(bp))
 26067  }
 26068  
 26069  type TestSessionsBlob1 = struct {
 26070  	Fp uintptr
 26071  	Fn int32
 26072  }
 26073  
 26074  type TestSessionsBlob = TestSessionsBlob1
 26075  
 26076  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 26077  	var pBlob uintptr = pCtx
 26078  	var pNew uintptr
 26079  
 26080  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 26081  	if pNew == uintptr(0) {
 26082  		return SQLITE_NOMEM
 26083  	}
 26084  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 26085  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint32(nData))
 26086  	*(*int32)(unsafe.Pointer(pBlob + 4)) += nData
 26087  	return SQLITE_OK
 26088  }
 26089  
 26090  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26091  	bp := tls.Alloc(28)
 26092  	defer tls.Free(28)
 26093  
 26094  	var p uintptr = clientData
 26095  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 26096  
 26097  	var rc int32
 26098  
 26099  	if objc < 2 {
 26100  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26101  		return TCL_ERROR
 26102  	}
 26103  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26104  		*(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 26105  	if rc != TCL_OK {
 26106  		return rc
 26107  	}
 26108  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26109  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26110  		return TCL_ERROR
 26111  	}
 26112  
 26113  	switch *(*int32)(unsafe.Pointer(bp)) {
 26114  	case 0:
 26115  		{
 26116  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 26117  			if int32(*(*int8)(unsafe.Pointer(zArg))) == '*' && int32(*(*int8)(unsafe.Pointer(zArg + 1))) == 0 {
 26118  				zArg = uintptr(0)
 26119  			}
 26120  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 26121  			if rc != SQLITE_OK {
 26122  				return test_session_error(tls, interp, rc, uintptr(0))
 26123  			}
 26124  			break
 26125  
 26126  		}
 26127  
 26128  	case 7:
 26129  		fallthrough
 26130  	case 1:
 26131  		{
 26132  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 4)) = TestSessionsBlob{}
 26133  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 26134  				var pCtx uintptr = bp + 4
 26135  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26136  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26137  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26138  					}{testStreamOutput})), pCtx)
 26139  				} else {
 26140  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26141  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26142  					}{testStreamOutput})), pCtx)
 26143  				}
 26144  			} else {
 26145  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 26146  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+4+4, bp+4)
 26147  				} else {
 26148  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+4+4, bp+4)
 26149  				}
 26150  			}
 26151  			if rc == SQLITE_OK {
 26152  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+4)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+4)).Fn))
 26153  			}
 26154  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+4)).Fp)
 26155  			if rc != SQLITE_OK {
 26156  				return test_session_error(tls, interp, rc, uintptr(0))
 26157  			}
 26158  			break
 26159  
 26160  		}
 26161  
 26162  	case 2:
 26163  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26164  		break
 26165  
 26166  	case 3:
 26167  		{
 26168  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+12) != 0 {
 26169  				return TCL_ERROR
 26170  			}
 26171  			*(*int32)(unsafe.Pointer(bp + 12)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 12)))
 26172  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 12)) != 0)))
 26173  			break
 26174  
 26175  		}
 26176  
 26177  	case 4:
 26178  		{
 26179  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16) != 0 {
 26180  				return TCL_ERROR
 26181  			}
 26182  			*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 16)))
 26183  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 16)) != 0)))
 26184  			break
 26185  
 26186  		}
 26187  
 26188  	case 5:
 26189  		{
 26190  			var val int32
 26191  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 26192  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 26193  			break
 26194  
 26195  		}
 26196  
 26197  	case 6:
 26198  		{
 26199  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26200  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26201  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26202  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26203  						tcl.XTclFreeObj(tls, _objPtr)
 26204  					}
 26205  				}
 26206  			}
 26207  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 26208  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 26209  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 26210  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 26211  				f func(*libc.TLS, uintptr, uintptr) int32
 26212  			}{test_table_filter})), clientData)
 26213  			break
 26214  
 26215  		}
 26216  
 26217  	case 8:
 26218  		{
 26219  			*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
 26220  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 26221  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))),
 26222  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4))),
 26223  				bp+20)
 26224  
 26225  			if rc != 0 {
 26226  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 20)))
 26227  			}
 26228  			break
 26229  
 26230  		}
 26231  
 26232  	case 9:
 26233  		{
 26234  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 26235  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 26236  			break
 26237  
 26238  		}
 26239  
 26240  	case 10:
 26241  		{
 26242  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 26243  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 26244  			break
 26245  
 26246  		}
 26247  	case 11:
 26248  		{
 26249  			var rc int32
 26250  
 26251  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+24) != 0 {
 26252  				return TCL_ERROR
 26253  			}
 26254  			rc = sqlite3.Xsqlite3session_object_config(tls,
 26255  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+24)
 26256  			if rc != SQLITE_OK {
 26257  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 26258  			} else {
 26259  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 26260  			}
 26261  			break
 26262  
 26263  		}
 26264  	}
 26265  
 26266  	return TCL_OK
 26267  }
 26268  
 26269  type SessionSubcmd = struct {
 26270  	FzSub uintptr
 26271  	FnArg int32
 26272  	FzMsg uintptr
 26273  	FiSub int32
 26274  }
 26275  
 26276  var aSub = [13]SessionSubcmd{
 26277  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 26278  	{FzSub: ts + 10128, FzMsg: ts + 584},
 26279  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26280  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 26281  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 26282  	{FzSub: ts + 10166, FzMsg: ts + 584},
 26283  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 26284  	{FzSub: ts + 10194, FzMsg: ts + 584},
 26285  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 26286  	{FzSub: ts + 10219, FzMsg: ts + 584},
 26287  	{FzSub: ts + 10231, FzMsg: ts + 584},
 26288  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 26289  	{},
 26290  }
 26291  
 26292  func test_session_del(tls *libc.TLS, clientData uintptr) {
 26293  	var p uintptr = clientData
 26294  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 26295  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26296  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 26297  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26298  				tcl.XTclFreeObj(tls, _objPtr)
 26299  			}
 26300  		}
 26301  	}
 26302  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 26303  	tcl.XTcl_Free(tls, p)
 26304  }
 26305  
 26306  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26307  	bp := tls.Alloc(60)
 26308  	defer tls.Free(60)
 26309  
 26310  	var db uintptr
 26311  
 26312  	var rc int32
 26313  	var p uintptr
 26314  	*(*int32)(unsafe.Pointer(bp + 56)) = -1
 26315  
 26316  	if objc != 4 {
 26317  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 26318  		return TCL_ERROR
 26319  	}
 26320  
 26321  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+24) {
 26322  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 0))
 26323  		return TCL_ERROR
 26324  	}
 26325  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26326  
 26327  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 26328  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(TestSession{})))
 26329  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4))), p)
 26330  	if rc != SQLITE_OK {
 26331  		tcl.XTcl_Free(tls, p)
 26332  		return test_session_error(tls, interp, rc, uintptr(0))
 26333  	}
 26334  
 26335  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+56)
 26336  
 26337  	*(*int32)(unsafe.Pointer(bp + 56)) = 1
 26338  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+56)
 26339  
 26340  	tcl.XTcl_CreateObjCommand(tls,
 26341  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), *(*uintptr)(unsafe.Pointer(&struct {
 26342  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26343  		}{test_session_cmd})), p,
 26344  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 26345  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 26346  	return TCL_OK
 26347  }
 26348  
 26349  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 26350  	if pVal == uintptr(0) {
 26351  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26352  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 26353  	} else {
 26354  		var pObj uintptr
 26355  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 26356  		case SQLITE_NULL:
 26357  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 26358  			pObj = tcl.XTcl_NewObj(tls)
 26359  			break
 26360  			fallthrough
 26361  		case SQLITE_INTEGER:
 26362  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 26363  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 26364  			break
 26365  			fallthrough
 26366  		case SQLITE_FLOAT:
 26367  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 26368  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 26369  			break
 26370  			fallthrough
 26371  		case SQLITE_TEXT:
 26372  			{
 26373  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 26374  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 26375  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 26376  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 26377  				break
 26378  
 26379  			}
 26380  			fallthrough
 26381  		default:
 26382  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 26383  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 26384  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 26385  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 26386  			break
 26387  		}
 26388  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 26389  	}
 26390  }
 26391  
 26392  type TestConflictHandler1 = struct {
 26393  	Finterp          uintptr
 26394  	FpConflictScript uintptr
 26395  	FpFilterScript   uintptr
 26396  }
 26397  
 26398  type TestConflictHandler = TestConflictHandler1
 26399  
 26400  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 26401  	bp := tls.Alloc(4)
 26402  	defer tls.Free(4)
 26403  
 26404  	var n int32
 26405  
 26406  	var zObj uintptr
 26407  
 26408  	n = int32(libc.Xstrlen(tls, z))
 26409  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 26410  
 26411  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint32(n))))
 26412  }
 26413  
 26414  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 26415  	bp := tls.Alloc(4)
 26416  	defer tls.Free(4)
 26417  
 26418  	var p uintptr = pCtx
 26419  	*(*int32)(unsafe.Pointer(bp)) = 1
 26420  	var pEval uintptr
 26421  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26422  
 26423  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 26424  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26425  
 26426  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 26427  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 26428  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 26429  		tcl.XTcl_BackgroundError(tls, interp)
 26430  	}
 26431  
 26432  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26433  		var _objPtr uintptr = pEval
 26434  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26435  			tcl.XTclFreeObj(tls, _objPtr)
 26436  		}
 26437  	}
 26438  	return *(*int32)(unsafe.Pointer(bp))
 26439  }
 26440  
 26441  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26442  	bp := tls.Alloc(60)
 26443  	defer tls.Free(60)
 26444  
 26445  	var p uintptr = pCtx
 26446  	var pEval uintptr
 26447  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 26448  	*(*int32)(unsafe.Pointer(bp + 56)) = 0
 26449  
 26450  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 26451  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 26452  
 26453  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+4, bp+8, uintptr(0))
 26454  
 26455  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 26456  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+12)
 26457  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 26458  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 26459  	} else {
 26460  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 26461  			func() uintptr {
 26462  				if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_INSERT {
 26463  					return ts + 10307
 26464  				}
 26465  				return func() uintptr {
 26466  					if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_UPDATE {
 26467  						return ts + 10314
 26468  					}
 26469  					return ts + 10321
 26470  				}()
 26471  			}(), -1))
 26472  
 26473  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26474  
 26475  		switch eConf {
 26476  		case SQLITE_CHANGESET_DATA:
 26477  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26478  			break
 26479  			fallthrough
 26480  		case SQLITE_CHANGESET_NOTFOUND:
 26481  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26482  			break
 26483  			fallthrough
 26484  		case SQLITE_CHANGESET_CONFLICT:
 26485  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 26486  			break
 26487  			fallthrough
 26488  		case SQLITE_CHANGESET_CONSTRAINT:
 26489  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 26490  			break
 26491  		}
 26492  
 26493  		if *(*int32)(unsafe.Pointer(bp + 8)) != SQLITE_INSERT {
 26494  			var i int32
 26495  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 26496  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 4)); i++ {
 26497  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 26498  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26499  			}
 26500  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 26501  		}
 26502  
 26503  		if *(*int32)(unsafe.Pointer(bp + 8)) != SQLITE_DELETE {
 26504  			var i int32
 26505  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 26506  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 4)); i++ {
 26507  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+20)
 26508  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 20)))
 26509  			}
 26510  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 26511  		}
 26512  
 26513  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 26514  			var i int32
 26515  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 26516  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 4)); i++ {
 26517  				var rc int32
 26518  				_ = rc
 26519  
 26520  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+24)
 26521  
 26522  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26523  			}
 26524  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 26525  		}
 26526  
 26527  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 26528  			eConf == SQLITE_CHANGESET_NOTFOUND {
 26529  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+28)
 26530  			_ = rc
 26531  
 26532  		} else {
 26533  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+32)
 26534  			_ = rc
 26535  
 26536  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 4)), bp+32)
 26537  
 26538  		}
 26539  		if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_DELETE {
 26540  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+36)
 26541  			_ = rc
 26542  
 26543  		} else {
 26544  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+40)
 26545  			_ = rc
 26546  
 26547  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 4)), bp+40)
 26548  
 26549  		}
 26550  		if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_INSERT {
 26551  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+44)
 26552  			_ = rc
 26553  
 26554  		} else {
 26555  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+48)
 26556  			_ = rc
 26557  
 26558  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 4)), bp+48)
 26559  
 26560  		}
 26561  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 26562  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+52)
 26563  			_ = rc
 26564  
 26565  		}
 26566  
 26567  	}
 26568  
 26569  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 26570  		tcl.XTcl_BackgroundError(tls, interp)
 26571  	} else {
 26572  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26573  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 26574  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_CHANGESET_OMIT
 26575  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 26576  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_CHANGESET_REPLACE
 26577  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 26578  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_CHANGESET_ABORT
 26579  		} else {
 26580  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+56)
 26581  		}
 26582  	}
 26583  
 26584  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26585  		var _objPtr uintptr = pEval
 26586  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26587  			tcl.XTclFreeObj(tls, _objPtr)
 26588  		}
 26589  	}
 26590  	return *(*int32)(unsafe.Pointer(bp + 56))
 26591  }
 26592  
 26593  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26594  	bp := tls.Alloc(20)
 26595  	defer tls.Free(20)
 26596  
 26597  	var i int32
 26598  	var x int32 = 0
 26599  
 26600  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+4, bp+8, uintptr(0))
 26601  
 26602  	if *(*int32)(unsafe.Pointer(bp + 8)) != SQLITE_INSERT {
 26603  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 4)); i++ {
 26604  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+12)
 26605  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 12)))
 26606  			x++
 26607  		}
 26608  	}
 26609  
 26610  	if *(*int32)(unsafe.Pointer(bp + 8)) != SQLITE_DELETE {
 26611  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 4)); i++ {
 26612  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+16)
 26613  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26614  			x++
 26615  		}
 26616  	}
 26617  
 26618  	if eConf == SQLITE_CHANGESET_DATA {
 26619  		return SQLITE_CHANGESET_REPLACE
 26620  	}
 26621  	return SQLITE_CHANGESET_OMIT
 26622  }
 26623  
 26624  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 26625  	var p uintptr = pCtx
 26626  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 26627  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 26628  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 26629  
 26630  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 26631  	if pAlloc == uintptr(0) {
 26632  		return SQLITE_NOMEM
 26633  	}
 26634  	sqlite3.Xsqlite3_free(tls, pAlloc)
 26635  
 26636  	if nRet > nReq {
 26637  		nRet = nReq
 26638  	}
 26639  	if nRet > nRem {
 26640  		nRet = nRem
 26641  	}
 26642  
 26643  	if nRet > 0 {
 26644  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint32(nRet))
 26645  		*(*int32)(unsafe.Pointer(p + 12)) += nRet
 26646  	}
 26647  
 26648  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 26649  	return SQLITE_OK
 26650  }
 26651  
 26652  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26653  	bp := tls.Alloc(96)
 26654  	defer tls.Free(96)
 26655  
 26656  	var db uintptr
 26657  
 26658  	var rc int32
 26659  	var pChangeset uintptr
 26660  
 26661  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 26662  	*(*int32)(unsafe.Pointer(bp + 92)) = 0
 26663  	var flags int32 = 0
 26664  
 26665  	libc.Xmemset(tls, bp+24, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 26666  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26667  
 26668  	if bV2 != 0 {
 26669  		if objc > 1 {
 26670  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 26671  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26672  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 26673  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 26674  				objc--
 26675  				objv += 4
 26676  			}
 26677  		}
 26678  		if objc > 1 {
 26679  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 26680  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26681  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 26682  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 26683  				objc--
 26684  				objv += 4
 26685  			}
 26686  		}
 26687  	}
 26688  
 26689  	if objc != 4 && objc != 5 {
 26690  		var zMsg uintptr
 26691  		if bV2 != 0 {
 26692  			zMsg = ts + 10388
 26693  		} else {
 26694  			zMsg = ts + 10459
 26695  		}
 26696  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 26697  		return TCL_ERROR
 26698  	}
 26699  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+40) {
 26700  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), 0))
 26701  		return TCL_ERROR
 26702  	}
 26703  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 26704  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+72)
 26705  	(*TestConflictHandler)(unsafe.Pointer(bp + 76)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
 26706  	(*TestConflictHandler)(unsafe.Pointer(bp + 76)).FpFilterScript = func() uintptr {
 26707  		if objc == 5 {
 26708  			return *(*uintptr)(unsafe.Pointer(objv + 4*4))
 26709  		}
 26710  		return uintptr(0)
 26711  	}()
 26712  	(*TestConflictHandler)(unsafe.Pointer(bp + 76)).Finterp = interp
 26713  
 26714  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 26715  		if bV2 == 0 {
 26716  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 72)), pChangeset,
 26717  				func() uintptr {
 26718  					if objc == 5 {
 26719  						return *(*uintptr)(unsafe.Pointer(&struct {
 26720  							f func(*libc.TLS, uintptr, uintptr) int32
 26721  						}{test_filter_handler}))
 26722  					}
 26723  					return uintptr(0)
 26724  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26725  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26726  				}{test_conflict_handler})), bp+76)
 26727  		} else {
 26728  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 72)), pChangeset,
 26729  				func() uintptr {
 26730  					if objc == 5 {
 26731  						return *(*uintptr)(unsafe.Pointer(&struct {
 26732  							f func(*libc.TLS, uintptr, uintptr) int32
 26733  						}{test_filter_handler}))
 26734  					}
 26735  					return uintptr(0)
 26736  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26737  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26738  				}{test_conflict_handler})), bp+76,
 26739  				bp+88, bp+92, flags)
 26740  		}
 26741  	} else {
 26742  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 26743  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 72))
 26744  		if bV2 == 0 {
 26745  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26746  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26747  			}{testStreamInput})), bp+24,
 26748  				func() uintptr {
 26749  					if objc == 5 {
 26750  						return *(*uintptr)(unsafe.Pointer(&struct {
 26751  							f func(*libc.TLS, uintptr, uintptr) int32
 26752  						}{test_filter_handler}))
 26753  					}
 26754  					return uintptr(0)
 26755  				}(),
 26756  				*(*uintptr)(unsafe.Pointer(&struct {
 26757  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26758  				}{test_conflict_handler})), bp+76)
 26759  		} else {
 26760  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26761  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26762  			}{testStreamInput})), bp+24,
 26763  				func() uintptr {
 26764  					if objc == 5 {
 26765  						return *(*uintptr)(unsafe.Pointer(&struct {
 26766  							f func(*libc.TLS, uintptr, uintptr) int32
 26767  						}{test_filter_handler}))
 26768  					}
 26769  					return uintptr(0)
 26770  				}(),
 26771  				*(*uintptr)(unsafe.Pointer(&struct {
 26772  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26773  				}{test_conflict_handler})), bp+76,
 26774  				bp+88, bp+92, flags)
 26775  		}
 26776  	}
 26777  
 26778  	if rc != SQLITE_OK {
 26779  		return test_session_error(tls, interp, rc, uintptr(0))
 26780  	} else {
 26781  		tcl.XTcl_ResetResult(tls, interp)
 26782  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 26783  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), *(*int32)(unsafe.Pointer(bp + 92))))
 26784  		}
 26785  	}
 26786  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 26787  	return TCL_OK
 26788  }
 26789  
 26790  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26791  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 26792  }
 26793  
 26794  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26795  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 26796  }
 26797  
 26798  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26799  	bp := tls.Alloc(60)
 26800  	defer tls.Free(60)
 26801  
 26802  	var db uintptr
 26803  
 26804  	var rc int32
 26805  	var pChangeset uintptr
 26806  
 26807  	if objc != 3 {
 26808  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 26809  		return TCL_ERROR
 26810  	}
 26811  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+24) {
 26812  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 0))
 26813  		return TCL_ERROR
 26814  	}
 26815  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26816  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+56)
 26817  
 26818  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 56)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 26819  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 26820  	}{replace_handler})), uintptr(0))
 26821  	if rc != SQLITE_OK {
 26822  		return test_session_error(tls, interp, rc, uintptr(0))
 26823  	}
 26824  	tcl.XTcl_ResetResult(tls, interp)
 26825  	return TCL_OK
 26826  }
 26827  
 26828  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26829  	bp := tls.Alloc(24)
 26830  	defer tls.Free(24)
 26831  
 26832  	var rc int32
 26833  
 26834  	if objc != 2 {
 26835  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 26836  		return TCL_ERROR
 26837  	}
 26838  
 26839  	libc.Xmemset(tls, bp, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 26840  	libc.Xmemset(tls, bp+16, 0, uint32(unsafe.Sizeof(TestSessionsBlob{})))
 26841  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26842  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8)
 26843  
 26844  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 26845  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 26846  			*(*uintptr)(unsafe.Pointer(&struct {
 26847  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26848  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 26849  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26850  			}{testStreamOutput})), bp+16)
 26851  	} else {
 26852  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+16+4, bp+16)
 26853  	}
 26854  	if rc != SQLITE_OK {
 26855  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26856  	} else {
 26857  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+16)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+16)).Fn))
 26858  	}
 26859  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+16)).Fp)
 26860  	return rc
 26861  }
 26862  
 26863  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26864  	bp := tls.Alloc(40)
 26865  	defer tls.Free(40)
 26866  
 26867  	var rc int32
 26868  
 26869  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 32)) = TestSessionsBlob{}
 26870  
 26871  	if objc != 3 {
 26872  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 26873  		return TCL_ERROR
 26874  	}
 26875  
 26876  	libc.Xmemset(tls, bp, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 26877  	libc.Xmemset(tls, bp+16, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 26878  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8)
 26879  	(*TestStreamInput)(unsafe.Pointer(bp + 16)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16+8)
 26880  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26881  	(*TestStreamInput)(unsafe.Pointer(bp + 16)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 26882  
 26883  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 26884  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 26885  			*(*uintptr)(unsafe.Pointer(&struct {
 26886  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26887  			}{testStreamInput})), bp,
 26888  			*(*uintptr)(unsafe.Pointer(&struct {
 26889  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26890  			}{testStreamInput})), bp+16,
 26891  			*(*uintptr)(unsafe.Pointer(&struct {
 26892  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26893  			}{testStreamOutput})), bp+32)
 26894  	} else {
 26895  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 26896  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, (*TestStreamInput)(unsafe.Pointer(bp+16)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+16)).FaData, bp+32+4, bp+32)
 26897  	}
 26898  
 26899  	if rc != SQLITE_OK {
 26900  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26901  	} else {
 26902  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 26903  	}
 26904  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 26905  	return rc
 26906  }
 26907  
 26908  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26909  	bp := tls.Alloc(60)
 26910  	defer tls.Free(60)
 26911  
 26912  	var pChangeset uintptr
 26913  
 26914  	var rc int32
 26915  	var pVarname uintptr
 26916  	var pCS uintptr
 26917  	var pScript uintptr
 26918  	var isCheckNext int32 = 0
 26919  	var isInvert int32 = 0
 26920  
 26921  	libc.Xmemset(tls, bp, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 26922  
 26923  	for objc > 1 {
 26924  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 26925  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 26926  		if int32(*(*int8)(unsafe.Pointer(zOpt))) != '-' {
 26927  			break
 26928  		}
 26929  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 26930  			isInvert = 1
 26931  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 26932  			isCheckNext = 1
 26933  		} else {
 26934  			break
 26935  		}
 26936  		objv += 4
 26937  		objc--
 26938  	}
 26939  	if objc != 4 {
 26940  		tcl.XTcl_WrongNumArgs(tls,
 26941  			interp, 1, objv, ts+10544)
 26942  		return TCL_ERROR
 26943  	}
 26944  
 26945  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*4))
 26946  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*4))
 26947  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
 26948  
 26949  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+16)
 26950  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26951  	if isInvert != 0 {
 26952  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 26953  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26954  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+20, *(*int32)(unsafe.Pointer(bp + 16)), pChangeset, f)
 26955  		} else {
 26956  			var pCtx uintptr = bp
 26957  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26958  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 16))
 26959  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+20, *(*uintptr)(unsafe.Pointer(&struct {
 26960  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26961  			}{testStreamInput})), pCtx, f)
 26962  		}
 26963  	} else {
 26964  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26965  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+20, *(*int32)(unsafe.Pointer(bp + 16)), pChangeset)
 26966  		} else {
 26967  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26968  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 16))
 26969  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+20, *(*uintptr)(unsafe.Pointer(&struct {
 26970  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26971  			}{testStreamInput})), bp)
 26972  		}
 26973  	}
 26974  	if rc != SQLITE_OK {
 26975  		return test_session_error(tls, interp, rc, uintptr(0))
 26976  	}
 26977  
 26978  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 20))) {
 26979  		var pVar uintptr
 26980  		var pOld uintptr
 26981  		var pNew uintptr
 26982  
 26983  		var zPK uintptr
 26984  
 26985  		var i int32
 26986  
 26987  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), bp+24) {
 26988  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 26989  			return TCL_ERROR
 26990  		}
 26991  
 26992  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), bp+28, bp+32, bp+36, bp+40)
 26993  		pVar = tcl.XTcl_NewObj(tls)
 26994  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 26995  			func() uintptr {
 26996  				if *(*int32)(unsafe.Pointer(bp + 36)) == SQLITE_INSERT {
 26997  					return ts + 10307
 26998  				}
 26999  				return func() uintptr {
 27000  					if *(*int32)(unsafe.Pointer(bp + 36)) == SQLITE_UPDATE {
 27001  						return ts + 10314
 27002  					}
 27003  					return ts + 10321
 27004  				}()
 27005  			}(), -1))
 27006  
 27007  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 28)), -1))
 27008  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 40)) != 0)))
 27009  
 27010  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 32))+1))
 27011  		libc.Xmemset(tls, zPK, 0, uint32(*(*int32)(unsafe.Pointer(bp + 32))+1))
 27012  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), bp+44, bp+48)
 27013  
 27014  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 27015  			*(*int8)(unsafe.Pointer(zPK + uintptr(i))) = func() int8 {
 27016  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)) + uintptr(i))) != 0 {
 27017  					return int8('X')
 27018  				}
 27019  				return int8('.')
 27020  			}()
 27021  		}
 27022  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 27023  		tcl.XTcl_Free(tls, zPK)
 27024  
 27025  		pOld = tcl.XTcl_NewObj(tls)
 27026  		if *(*int32)(unsafe.Pointer(bp + 36)) != SQLITE_INSERT {
 27027  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 27028  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), i, bp+52)
 27029  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 52)))
 27030  			}
 27031  		}
 27032  		pNew = tcl.XTcl_NewObj(tls)
 27033  		if *(*int32)(unsafe.Pointer(bp + 36)) != SQLITE_DELETE {
 27034  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 27035  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), i, bp+56)
 27036  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 56)))
 27037  			}
 27038  		}
 27039  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 27040  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 27041  
 27042  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 27043  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 27044  		if rc != TCL_OK && rc != TCL_CONTINUE {
 27045  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 27046  			if rc == TCL_BREAK {
 27047  				return TCL_OK
 27048  			}
 27049  			return rc
 27050  		}
 27051  	}
 27052  
 27053  	if isCheckNext != 0 {
 27054  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 27055  		_ = rc2
 27056  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 27057  
 27058  	} else {
 27059  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 27060  	}
 27061  	if rc != SQLITE_OK {
 27062  		return test_session_error(tls, interp, rc, uintptr(0))
 27063  	}
 27064  
 27065  	return TCL_OK
 27066  }
 27067  
 27068  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27069  	bp := tls.Alloc(32)
 27070  	defer tls.Free(32)
 27071  
 27072  	var p uintptr = clientData
 27073  
 27074  	var rc int32
 27075  
 27076  	if objc < 2 {
 27077  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 27078  		return TCL_ERROR
 27079  	}
 27080  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27081  		*(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 27082  	if rc != TCL_OK {
 27083  		return rc
 27084  	}
 27085  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 27086  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 27087  		return TCL_ERROR
 27088  	}
 27089  
 27090  	switch *(*int32)(unsafe.Pointer(bp)) {
 27091  	case 0:
 27092  		{
 27093  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 27094  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4)
 27095  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 27096  			break
 27097  
 27098  		}
 27099  
 27100  	case 1:
 27101  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 27102  		break
 27103  
 27104  	default:
 27105  		{
 27106  			libc.Xmemset(tls, bp+8, 0, uint32(unsafe.Sizeof(TestStreamInput{})))
 27107  			libc.Xmemset(tls, bp+24, 0, uint32(unsafe.Sizeof(TestSessionsBlob{})))
 27108  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+8+8)
 27109  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 27110  
 27111  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 27112  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 27113  					*(*uintptr)(unsafe.Pointer(&struct {
 27114  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 27115  					}{testStreamInput})), bp+8,
 27116  					*(*uintptr)(unsafe.Pointer(&struct {
 27117  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 27118  					}{testStreamOutput})), bp+24)
 27119  			} else {
 27120  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+24+4, bp+24)
 27121  			}
 27122  
 27123  			if rc == SQLITE_OK {
 27124  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 27125  			}
 27126  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 27127  			break
 27128  
 27129  		}
 27130  	}
 27131  
 27132  	if rc != SQLITE_OK {
 27133  		return test_session_error(tls, interp, rc, uintptr(0))
 27134  	}
 27135  	return TCL_OK
 27136  }
 27137  
 27138  type RebaseSubcmd = struct {
 27139  	FzSub uintptr
 27140  	FnArg int32
 27141  	FzMsg uintptr
 27142  	FiSub int32
 27143  }
 27144  
 27145  var aSub1 = [4]RebaseSubcmd{
 27146  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 27147  	{FzSub: ts + 10138, FzMsg: ts + 584},
 27148  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 27149  	{},
 27150  }
 27151  
 27152  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 27153  	var p uintptr = clientData
 27154  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 27155  }
 27156  
 27157  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27158  	bp := tls.Alloc(4)
 27159  	defer tls.Free(4)
 27160  
 27161  	var rc int32
 27162  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 27163  	if objc != 2 {
 27164  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 27165  		return SQLITE_ERROR
 27166  	}
 27167  
 27168  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 27169  	if rc != SQLITE_OK {
 27170  		return test_session_error(tls, interp, rc, uintptr(0))
 27171  	}
 27172  
 27173  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), *(*uintptr)(unsafe.Pointer(&struct {
 27174  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27175  	}{test_rebaser_cmd})),
 27176  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 27177  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 27178  	return TCL_OK
 27179  }
 27180  
 27181  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 27182  	bp := tls.Alloc(8)
 27183  	defer tls.Free(8)
 27184  
 27185  	var rc int32
 27186  
 27187  	if objc != 3 {
 27188  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 27189  		return SQLITE_ERROR
 27190  	}
 27191  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 27192  		*(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 27193  	if rc != TCL_OK {
 27194  		return rc
 27195  	}
 27196  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 27197  		return TCL_ERROR
 27198  	}
 27199  
 27200  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 27201  	if rc != SQLITE_OK {
 27202  		return test_session_error(tls, interp, rc, uintptr(0))
 27203  	}
 27204  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 27205  	return TCL_OK
 27206  }
 27207  
 27208  type ConfigOpt = struct {
 27209  	FzSub uintptr
 27210  	Fop   int32
 27211  }
 27212  
 27213  var aSub2 = [3]ConfigOpt{
 27214  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 27215  	{FzSub: ts + 2758},
 27216  	{},
 27217  }
 27218  
 27219  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 27220  	bp := tls.Alloc(80)
 27221  	defer tls.Free(80)
 27222  
 27223  	*(*[10]struct {
 27224  		FzCmd  uintptr
 27225  		FxProc uintptr
 27226  	})(unsafe.Pointer(bp)) = [10]struct {
 27227  		FzCmd  uintptr
 27228  		FxProc uintptr
 27229  	}{
 27230  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27231  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27232  		}{test_sqlite3session}))},
 27233  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27234  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27235  		}{test_sqlite3session_foreach}))},
 27236  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27237  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27238  		}{test_sqlite3changeset_invert}))},
 27239  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27240  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27241  		}{test_sqlite3changeset_concat}))},
 27242  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27243  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27244  		}{test_sqlite3changeset_apply}))},
 27245  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27246  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27247  		}{test_sqlite3changeset_apply_v2}))},
 27248  		{FzCmd: ts + 10770,
 27249  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27250  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27251  			}{test_sqlite3changeset_apply_replace_all}))},
 27252  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27253  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27254  		}{test_sql_exec_changeset}))},
 27255  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27256  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27257  		}{test_sqlite3rebaser_create}))},
 27258  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 27259  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 27260  		}{test_sqlite3session_config}))},
 27261  	}
 27262  	var i int32
 27263  
 27264  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([10]struct {
 27265  		FzCmd  uintptr
 27266  		FxProc uintptr
 27267  	}{}))/uint32(unsafe.Sizeof(struct {
 27268  		FzCmd  uintptr
 27269  		FxProc uintptr
 27270  	}{})); i++ {
 27271  		var p uintptr = bp + uintptr(i)*8
 27272  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 27273  			FzCmd  uintptr
 27274  			FxProc uintptr
 27275  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 27276  			FzCmd  uintptr
 27277  			FxProc uintptr
 27278  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 27279  	}
 27280  
 27281  	return TCL_OK
 27282  }
 27283  
 27284  type sig_atomic_t = int32
 27285  
 27286  type sigval = struct{ Fsival_int int32 }
 27287  
 27288  type siginfo_t = struct {
 27289  	Fsi_signo  int32
 27290  	Fsi_errno  int32
 27291  	Fsi_code   int32
 27292  	F_sifields struct{ F_pad [29]int32 }
 27293  }
 27294  
 27295  type sigval_t = sigval
 27296  
 27297  type sigevent_t = sigevent
 27298  
 27299  type sig_t = uintptr
 27300  
 27301  type sigaction = struct {
 27302  	F__sigaction_handler struct{ Fsa_handler uintptr }
 27303  	Fsa_mask             struct{ F__val [32]uint32 }
 27304  	Fsa_flags            int32
 27305  	Fsa_restorer         uintptr
 27306  }
 27307  
 27308  type _fpx_sw_bytes = struct {
 27309  	Fmagic1            uint32
 27310  	Fextended_size     uint32
 27311  	Fxstate_bv         uint64
 27312  	Fxstate_size       uint32
 27313  	F__glibc_reserved1 [7]uint32
 27314  }
 27315  
 27316  type _fpreg = struct {
 27317  	Fsignificand [4]uint16
 27318  	Fexponent    uint16
 27319  }
 27320  
 27321  type _fpxreg = struct {
 27322  	Fsignificand       [4]uint16
 27323  	Fexponent          uint16
 27324  	F__glibc_reserved1 [3]uint16
 27325  }
 27326  
 27327  type _xmmreg = struct{ Felement [4]uint32 }
 27328  
 27329  type _fpstate = struct {
 27330  	Fcw      uint32
 27331  	Fsw      uint32
 27332  	Ftag     uint32
 27333  	Fipoff   uint32
 27334  	Fcssel   uint32
 27335  	Fdataoff uint32
 27336  	Fdatasel uint32
 27337  	F_st     [8]struct {
 27338  		Fsignificand [4]uint16
 27339  		Fexponent    uint16
 27340  	}
 27341  	Fstatus            uint16
 27342  	Fmagic             uint16
 27343  	F_fxsr_env         [6]uint32
 27344  	Fmxcsr             uint32
 27345  	F__glibc_reserved1 uint32
 27346  	F_fxsr_st          [8]struct {
 27347  		Fsignificand       [4]uint16
 27348  		Fexponent          uint16
 27349  		F__glibc_reserved1 [3]uint16
 27350  	}
 27351  	F_xmm              [8]struct{ Felement [4]uint32 }
 27352  	F__glibc_reserved2 [56]uint32
 27353  }
 27354  
 27355  type sigcontext = struct {
 27356  	Fgs            uint16
 27357  	F__gsh         uint16
 27358  	Ffs            uint16
 27359  	F__fsh         uint16
 27360  	Fes            uint16
 27361  	F__esh         uint16
 27362  	Fds            uint16
 27363  	F__dsh         uint16
 27364  	Fedi           uint32
 27365  	Fesi           uint32
 27366  	Febp           uint32
 27367  	Fesp           uint32
 27368  	Febx           uint32
 27369  	Fedx           uint32
 27370  	Fecx           uint32
 27371  	Feax           uint32
 27372  	Ftrapno        uint32
 27373  	Ferr           uint32
 27374  	Feip           uint32
 27375  	Fcs            uint16
 27376  	F__csh         uint16
 27377  	Feflags        uint32
 27378  	Fesp_at_signal uint32
 27379  	Fss            uint16
 27380  	F__ssh         uint16
 27381  	Ffpstate       uintptr
 27382  	Foldmask       uint32
 27383  	Fcr2           uint32
 27384  }
 27385  
 27386  type _xsave_hdr = struct {
 27387  	Fxstate_bv         uint64
 27388  	F__glibc_reserved1 [2]uint64
 27389  	F__glibc_reserved2 [5]uint64
 27390  }
 27391  
 27392  type _ymmh_state = struct{ Fymmh_space [64]uint32 }
 27393  
 27394  type _xstate = struct {
 27395  	Ffpstate struct {
 27396  		Fcw      uint32
 27397  		Fsw      uint32
 27398  		Ftag     uint32
 27399  		Fipoff   uint32
 27400  		Fcssel   uint32
 27401  		Fdataoff uint32
 27402  		Fdatasel uint32
 27403  		F_st     [8]struct {
 27404  			Fsignificand [4]uint16
 27405  			Fexponent    uint16
 27406  		}
 27407  		Fstatus            uint16
 27408  		Fmagic             uint16
 27409  		F_fxsr_env         [6]uint32
 27410  		Fmxcsr             uint32
 27411  		F__glibc_reserved1 uint32
 27412  		F_fxsr_st          [8]struct {
 27413  			Fsignificand       [4]uint16
 27414  			Fexponent          uint16
 27415  			F__glibc_reserved1 [3]uint16
 27416  		}
 27417  		F_xmm              [8]struct{ Felement [4]uint32 }
 27418  		F__glibc_reserved2 [56]uint32
 27419  	}
 27420  	Fxstate_hdr struct {
 27421  		Fxstate_bv         uint64
 27422  		F__glibc_reserved1 [2]uint64
 27423  		F__glibc_reserved2 [5]uint64
 27424  	}
 27425  	Fymmh struct{ Fymmh_space [64]uint32 }
 27426  }
 27427  
 27428  type stack_t = struct {
 27429  	Fss_sp    uintptr
 27430  	Fss_flags int32
 27431  	Fss_size  size_t
 27432  }
 27433  
 27434  type greg_t = int32
 27435  
 27436  type gregset_t = [19]greg_t
 27437  
 27438  type _libc_fpreg = struct {
 27439  	Fsignificand [4]uint16
 27440  	Fexponent    uint16
 27441  }
 27442  
 27443  type _libc_fpstate = struct {
 27444  	Fcw      uint32
 27445  	Fsw      uint32
 27446  	Ftag     uint32
 27447  	Fipoff   uint32
 27448  	Fcssel   uint32
 27449  	Fdataoff uint32
 27450  	Fdatasel uint32
 27451  	F_st     [8]struct {
 27452  		Fsignificand [4]uint16
 27453  		Fexponent    uint16
 27454  	}
 27455  	Fstatus uint32
 27456  }
 27457  
 27458  type fpregset_t = uintptr
 27459  
 27460  type mcontext_t = struct {
 27461  	Fgregs   gregset_t
 27462  	Ffpregs  fpregset_t
 27463  	Foldmask uint32
 27464  	Fcr2     uint32
 27465  }
 27466  
 27467  type ucontext_t1 = struct {
 27468  	Fuc_flags     uint32
 27469  	Fuc_link      uintptr
 27470  	Fuc_stack     stack_t
 27471  	Fuc_mcontext  mcontext_t
 27472  	Fuc_sigmask   sigset_t
 27473  	F__fpregs_mem struct {
 27474  		Fcw      uint32
 27475  		Fsw      uint32
 27476  		Ftag     uint32
 27477  		Fipoff   uint32
 27478  		Fcssel   uint32
 27479  		Fdataoff uint32
 27480  		Fdatasel uint32
 27481  		F_st     [8]struct {
 27482  			Fsignificand [4]uint16
 27483  			Fexponent    uint16
 27484  		}
 27485  		Fstatus uint32
 27486  	}
 27487  	F__ssp [4]uint32
 27488  }
 27489  
 27490  type ucontext_t = ucontext_t1
 27491  
 27492  type sigstack = struct {
 27493  	Fss_sp      uintptr
 27494  	Fss_onstack int32
 27495  }
 27496  
 27497  type SqliteDb = struct {
 27498  	Fdb             uintptr
 27499  	Finterp         uintptr
 27500  	FzBusy          uintptr
 27501  	FzCommit        uintptr
 27502  	FzTrace         uintptr
 27503  	FzTraceV2       uintptr
 27504  	FzProfile       uintptr
 27505  	FzProgress      uintptr
 27506  	FzBindFallback  uintptr
 27507  	FzAuth          uintptr
 27508  	FdisableAuth    int32
 27509  	FzNull          uintptr
 27510  	FpFunc          uintptr
 27511  	FpUpdateHook    uintptr
 27512  	FpPreUpdateHook uintptr
 27513  	FpRollbackHook  uintptr
 27514  	FpWalHook       uintptr
 27515  	FpUnlockNotify  uintptr
 27516  	FpCollate       uintptr
 27517  	Frc             int32
 27518  	FpCollateNeeded uintptr
 27519  	FstmtList       uintptr
 27520  	FstmtLast       uintptr
 27521  	FmaxStmt        int32
 27522  	FnStmt          int32
 27523  	FpIncrblob      uintptr
 27524  	FnStep          int32
 27525  	FnSort          int32
 27526  	FnIndex         int32
 27527  	FnVMStep        int32
 27528  	FnTransaction   int32
 27529  	FopenFlags      int32
 27530  	FnRef           int32
 27531  	FbLegacyPrepare int32
 27532  }
 27533  
 27534  type SqlFunc1 = struct {
 27535  	Finterp      uintptr
 27536  	FpScript     uintptr
 27537  	FpDb         uintptr
 27538  	FuseEvalObjv int32
 27539  	FeType       int32
 27540  	FzName       uintptr
 27541  	FpNext       uintptr
 27542  }
 27543  
 27544  type SqlFunc = SqlFunc1
 27545  
 27546  type SqlCollate1 = struct {
 27547  	Finterp  uintptr
 27548  	FzScript uintptr
 27549  	FpNext   uintptr
 27550  }
 27551  
 27552  type SqlCollate = SqlCollate1
 27553  
 27554  type SqlPreparedStmt1 = struct {
 27555  	FpNext  uintptr
 27556  	FpPrev  uintptr
 27557  	FpStmt  uintptr
 27558  	FnSql   int32
 27559  	FzSql   uintptr
 27560  	FnParm  int32
 27561  	FapParm uintptr
 27562  }
 27563  
 27564  type SqlPreparedStmt = SqlPreparedStmt1
 27565  
 27566  type IncrblobChannel1 = struct {
 27567  	FpBlob   uintptr
 27568  	FpDb     uintptr
 27569  	FiSeek   int32
 27570  	Fchannel Tcl_Channel
 27571  	FpNext   uintptr
 27572  	FpPrev   uintptr
 27573  }
 27574  
 27575  type IncrblobChannel = IncrblobChannel1
 27576  
 27577  func strlen30(tls *libc.TLS, z uintptr) int32 {
 27578  	var z2 uintptr = z
 27579  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 27580  		z2++
 27581  	}
 27582  	return 0x3fffffff & ((int32(z2) - int32(z)) / 1)
 27583  }
 27584  
 27585  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 27586  	var p uintptr
 27587  	var pNext uintptr
 27588  
 27589  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 27590  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27591  
 27592  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27593  	}
 27594  }
 27595  
 27596  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 27597  	var p uintptr = instanceData
 27598  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27599  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 27600  
 27601  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27602  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 27603  	}
 27604  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 27605  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27606  	}
 27607  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 27608  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27609  	}
 27610  
 27611  	tcl.XTcl_Free(tls, p)
 27612  
 27613  	if rc != SQLITE_OK {
 27614  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 27615  		return TCL_ERROR
 27616  	}
 27617  	return TCL_OK
 27618  }
 27619  
 27620  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 27621  	var p uintptr = instanceData
 27622  	var nRead int32 = bufSize
 27623  	var nBlob int32
 27624  	var rc int32
 27625  
 27626  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27627  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 27628  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27629  	}
 27630  	if nRead <= 0 {
 27631  		return 0
 27632  	}
 27633  
 27634  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27635  	if rc != SQLITE_OK {
 27636  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 27637  		return -1
 27638  	}
 27639  
 27640  	*(*int32)(unsafe.Pointer(p + 8)) += nRead
 27641  	return nRead
 27642  }
 27643  
 27644  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 27645  	var p uintptr = instanceData
 27646  	var nWrite int32 = toWrite
 27647  	var nBlob int32
 27648  	var rc int32
 27649  
 27650  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27651  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 27652  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 27653  		return -1
 27654  	}
 27655  	if nWrite <= 0 {
 27656  		return 0
 27657  	}
 27658  
 27659  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27660  	if rc != SQLITE_OK {
 27661  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 27662  		return -1
 27663  	}
 27664  
 27665  	*(*int32)(unsafe.Pointer(p + 8)) += nWrite
 27666  	return nWrite
 27667  }
 27668  
 27669  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int32, seekMode int32, errorCodePtr uintptr) int32 {
 27670  	var p uintptr = instanceData
 27671  
 27672  	switch seekMode {
 27673  	case SEEK_SET:
 27674  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = offset
 27675  		break
 27676  	case SEEK_CUR:
 27677  		*(*int32)(unsafe.Pointer(p + 8)) += offset
 27678  		break
 27679  	case SEEK_END:
 27680  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob) + offset
 27681  		break
 27682  
 27683  	default:
 27684  	}
 27685  
 27686  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27687  }
 27688  
 27689  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 27690  }
 27691  
 27692  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 27693  	return TCL_ERROR
 27694  }
 27695  
 27696  var IncrblobChannelType = Tcl_ChannelType{
 27697  	FtypeName:      ts + 10868,
 27698  	Fversion:       uintptr(0x2),
 27699  	FcloseProc:     0,
 27700  	FinputProc:     0,
 27701  	FoutputProc:    0,
 27702  	FseekProc:      0,
 27703  	FwatchProc:     0,
 27704  	FgetHandleProc: 0,
 27705  }
 27706  
 27707  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 27708  	bp := tls.Alloc(76)
 27709  	defer tls.Free(76)
 27710  
 27711  	var p uintptr
 27712  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 27713  
 27714  	var rc int32
 27715  	var flags int32 = int32(1)<<1 | func() int32 {
 27716  		if isReadonly != 0 {
 27717  			return 0
 27718  		}
 27719  		return int32(1) << 2
 27720  	}()
 27721  
 27722  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 27723  	if rc != SQLITE_OK {
 27724  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 27725  		return TCL_ERROR
 27726  	}
 27727  
 27728  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 27729  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 27730  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 27731  
 27732  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+12, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 27733  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+12, p, flags)
 27734  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27735  
 27736  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 27737  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 27738  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27739  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 27740  	}
 27741  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 27742  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 27743  
 27744  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 27745  	return TCL_OK
 27746  }
 27747  
 27748  var count int32 = 0
 27749  
 27750  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 27751  	bp := tls.Alloc(4)
 27752  	defer tls.Free(4)
 27753  
 27754  	var z uintptr
 27755  
 27756  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 27757  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 27758  		var c int32 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 27759  		if c == '$' || c == '[' || c == ';' {
 27760  			return 0
 27761  		}
 27762  	}
 27763  	return 1
 27764  }
 27765  
 27766  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 27767  	var p uintptr
 27768  	var pNew uintptr
 27769  	var nName int32 = strlen30(tls, zName)
 27770  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqlFunc{}))+uint32(nName)+uint32(1))
 27771  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*28
 27772  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint32(nName+1))
 27773  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 27774  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 27775  			tcl.XTcl_Free(tls, pNew)
 27776  			return p
 27777  		}
 27778  	}
 27779  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27780  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 27781  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 27782  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27783  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 27784  	return pNew
 27785  }
 27786  
 27787  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 27788  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 27789  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 27790  	}
 27791  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 27792  	tcl.XTcl_Free(tls, pStmt)
 27793  }
 27794  
 27795  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 27796  	var pPreStmt uintptr
 27797  	var pNext uintptr
 27798  
 27799  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 27800  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 27801  		dbFreeStmt(tls, pPreStmt)
 27802  	}
 27803  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 27804  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 27805  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 27806  }
 27807  
 27808  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27809  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 27810  }
 27811  
 27812  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27813  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 27814  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 27815  		flushStmtCache(tls, pDb)
 27816  		closeIncrblobChannels(tls, pDb)
 27817  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 27818  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 27819  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27820  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 27821  
 27822  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27823  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 27824  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27825  					tcl.XTclFreeObj(tls, _objPtr)
 27826  				}
 27827  			}
 27828  			tcl.XTcl_Free(tls, pFunc)
 27829  		}
 27830  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 27831  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 27832  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 27833  			tcl.XTcl_Free(tls, pCollate)
 27834  		}
 27835  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 27836  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 27837  		}
 27838  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 27839  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 27840  		}
 27841  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 27842  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 27843  		}
 27844  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 27845  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 27846  		}
 27847  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 27848  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 27849  		}
 27850  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 27851  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 27852  		}
 27853  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 27854  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 27855  		}
 27856  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 27857  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27858  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 27859  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27860  					tcl.XTclFreeObj(tls, _objPtr)
 27861  				}
 27862  			}
 27863  		}
 27864  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 27865  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27866  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 27867  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27868  					tcl.XTclFreeObj(tls, _objPtr)
 27869  				}
 27870  			}
 27871  		}
 27872  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 27873  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27874  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 27875  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27876  					tcl.XTclFreeObj(tls, _objPtr)
 27877  				}
 27878  			}
 27879  		}
 27880  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 27881  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 27882  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 27883  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27884  					tcl.XTclFreeObj(tls, _objPtr)
 27885  				}
 27886  			}
 27887  		}
 27888  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 27889  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 27890  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 27891  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27892  					tcl.XTclFreeObj(tls, _objPtr)
 27893  				}
 27894  			}
 27895  		}
 27896  		tcl.XTcl_Free(tls, pDb)
 27897  	}
 27898  }
 27899  
 27900  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 27901  	var pDb uintptr = db
 27902  	delDatabaseRef(tls, pDb)
 27903  }
 27904  
 27905  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 27906  	bp := tls.Alloc(70)
 27907  	defer tls.Free(70)
 27908  
 27909  	var pDb uintptr = cd
 27910  	var rc int32
 27911  
 27912  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 27913  	rc = tcl.XTcl_VarEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, libc.VaList(bp+8, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, ts+4894, bp+40, uintptr(0)))
 27914  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27915  		return 0
 27916  	}
 27917  	return 1
 27918  }
 27919  
 27920  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 27921  	var pDb uintptr = cd
 27922  	var rc int32
 27923  
 27924  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 27925  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27926  		return 1
 27927  	}
 27928  	return 0
 27929  }
 27930  
 27931  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 27932  	bp := tls.Alloc(212)
 27933  	defer tls.Free(212)
 27934  
 27935  	var pDb uintptr = cd
 27936  
 27937  	tcl.XTcl_DStringInit(tls, bp)
 27938  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 27939  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 27940  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27941  	tcl.XTcl_DStringFree(tls, bp)
 27942  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27943  }
 27944  
 27945  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 27946  	var pDb uintptr = cd
 27947  	var pCmd uintptr
 27948  
 27949  	switch type1 {
 27950  	case uint32(SQLITE_TRACE_STMT):
 27951  		{
 27952  			var pStmt uintptr = pd
 27953  			var zSql uintptr = xd
 27954  
 27955  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27956  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27957  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27958  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27959  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27960  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 27961  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27962  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27963  				var _objPtr uintptr = pCmd
 27964  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27965  					tcl.XTclFreeObj(tls, _objPtr)
 27966  				}
 27967  			}
 27968  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27969  			break
 27970  
 27971  		}
 27972  	case uint32(SQLITE_TRACE_PROFILE):
 27973  		{
 27974  			var pStmt uintptr = pd
 27975  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 27976  
 27977  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27978  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27979  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27980  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27981  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27982  				tcl.XTcl_NewWideIntObj(tls, ns))
 27983  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27984  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27985  				var _objPtr uintptr = pCmd
 27986  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27987  					tcl.XTclFreeObj(tls, _objPtr)
 27988  				}
 27989  			}
 27990  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27991  			break
 27992  
 27993  		}
 27994  	case uint32(SQLITE_TRACE_ROW):
 27995  		{
 27996  			var pStmt uintptr = pd
 27997  
 27998  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27999  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28000  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28001  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 28002  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28003  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28004  				var _objPtr uintptr = pCmd
 28005  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28006  					tcl.XTclFreeObj(tls, _objPtr)
 28007  				}
 28008  			}
 28009  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28010  			break
 28011  
 28012  		}
 28013  	case uint32(SQLITE_TRACE_CLOSE):
 28014  		{
 28015  			var db uintptr = pd
 28016  
 28017  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 28018  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28019  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 28020  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 28021  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28022  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 28023  				var _objPtr uintptr = pCmd
 28024  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28025  					tcl.XTclFreeObj(tls, _objPtr)
 28026  				}
 28027  			}
 28028  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28029  			break
 28030  
 28031  		}
 28032  	}
 28033  	return SQLITE_OK
 28034  }
 28035  
 28036  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 28037  	bp := tls.Alloc(320)
 28038  	defer tls.Free(320)
 28039  
 28040  	var pDb uintptr = cd
 28041  
 28042  	sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof([100]int8{}))-uint32(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 28043  	tcl.XTcl_DStringInit(tls, bp+108)
 28044  	tcl.XTcl_DStringAppend(tls, bp+108, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 28045  	tcl.XTcl_DStringAppendElement(tls, bp+108, zSql)
 28046  	tcl.XTcl_DStringAppendElement(tls, bp+108, bp+8)
 28047  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+108)).Fstring)
 28048  	tcl.XTcl_DStringFree(tls, bp+108)
 28049  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28050  }
 28051  
 28052  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 28053  	var pDb uintptr = cd
 28054  	var rc int32
 28055  
 28056  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 28057  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 28058  		return 1
 28059  	}
 28060  	return 0
 28061  }
 28062  
 28063  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 28064  	var pDb uintptr = clientData
 28065  
 28066  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 28067  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28068  	}
 28069  }
 28070  
 28071  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 28072  	bp := tls.Alloc(4)
 28073  	defer tls.Free(4)
 28074  
 28075  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 28076  	var p uintptr
 28077  	var pDb uintptr = clientData
 28078  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28079  
 28080  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 28081  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 28082  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28083  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 28084  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 28085  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 28086  		tcl.XTcl_BackgroundError(tls, interp)
 28087  	}
 28088  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28089  		var _objPtr uintptr = p
 28090  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28091  			tcl.XTclFreeObj(tls, _objPtr)
 28092  		}
 28093  	}
 28094  
 28095  	return *(*int32)(unsafe.Pointer(bp))
 28096  }
 28097  
 28098  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 28099  	bp := tls.Alloc(80)
 28100  	defer tls.Free(80)
 28101  
 28102  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 28103  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28104  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 28105  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 28106  }
 28107  
 28108  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 28109  	var i int32
 28110  	for i = 0; i < nArg; i++ {
 28111  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 28112  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*4))
 28113  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 28114  
 28115  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 28116  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28117  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 28118  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28119  				tcl.XTclFreeObj(tls, _objPtr)
 28120  			}
 28121  		}
 28122  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 28123  	}
 28124  }
 28125  
 28126  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 28127  	var pDb uintptr = p
 28128  	var pCmd uintptr
 28129  
 28130  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 28131  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28132  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 28133  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28134  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28135  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 28136  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 28137  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28138  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28139  		var _objPtr uintptr = pCmd
 28140  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28141  			tcl.XTclFreeObj(tls, _objPtr)
 28142  		}
 28143  	}
 28144  }
 28145  
 28146  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28147  
 28148  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 28149  	var pDb uintptr = p
 28150  	var pCmd uintptr
 28151  
 28152  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 28153  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28154  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 28155  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 28156  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 28157  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 28158  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28159  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28160  		var _objPtr uintptr = pCmd
 28161  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28162  			tcl.XTclFreeObj(tls, _objPtr)
 28163  		}
 28164  	}
 28165  }
 28166  
 28167  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 28168  
 28169  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 28170  	var pDb uintptr = pCtx
 28171  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 28172  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 28173  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 28174  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 28175  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28176  		var _objPtr uintptr = pScript
 28177  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28178  			tcl.XTclFreeObj(tls, _objPtr)
 28179  		}
 28180  	}
 28181  }
 28182  
 28183  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 28184  	var p uintptr = pCtx
 28185  	var pCmd uintptr
 28186  
 28187  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 28188  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28189  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 28190  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 28191  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28192  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28193  		var _objPtr uintptr = pCmd
 28194  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28195  			tcl.XTclFreeObj(tls, _objPtr)
 28196  		}
 28197  	}
 28198  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 28199  }
 28200  
 28201  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 28202  	bp := tls.Alloc(28)
 28203  	defer tls.Free(28)
 28204  
 28205  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 28206  	var pCmd uintptr
 28207  	var i int32
 28208  	var rc int32
 28209  
 28210  	if argc == 0 {
 28211  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 28212  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28213  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 28214  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28215  			var _objPtr uintptr = pCmd
 28216  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28217  				tcl.XTclFreeObj(tls, _objPtr)
 28218  			}
 28219  		}
 28220  	} else {
 28221  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+4) != 0 {
 28222  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28223  			return
 28224  		}
 28225  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 4)))
 28226  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28227  		for i = 0; i < argc; i++ {
 28228  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))
 28229  			var pVal uintptr
 28230  
 28231  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 28232  			case SQLITE_BLOB:
 28233  				{
 28234  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28235  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 28236  					break
 28237  
 28238  				}
 28239  				fallthrough
 28240  			case SQLITE_INTEGER:
 28241  				{
 28242  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 28243  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 28244  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 28245  					} else {
 28246  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 28247  					}
 28248  					break
 28249  
 28250  				}
 28251  				fallthrough
 28252  			case SQLITE_FLOAT:
 28253  				{
 28254  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 28255  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 28256  					break
 28257  
 28258  				}
 28259  				fallthrough
 28260  			case SQLITE_NULL:
 28261  				{
 28262  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28263  					break
 28264  
 28265  				}
 28266  				fallthrough
 28267  			default:
 28268  				{
 28269  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 28270  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 28271  					break
 28272  
 28273  				}
 28274  			}
 28275  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 28276  			if rc != 0 {
 28277  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28278  					var _objPtr uintptr = pCmd
 28279  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28280  						tcl.XTclFreeObj(tls, _objPtr)
 28281  					}
 28282  				}
 28283  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28284  				return
 28285  			}
 28286  		}
 28287  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 28288  			tcl.XTcl_GetString(tls, pCmd)
 28289  		}
 28290  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 28291  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 28292  			var _objPtr uintptr = pCmd
 28293  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28294  				tcl.XTclFreeObj(tls, _objPtr)
 28295  			}
 28296  		}
 28297  	}
 28298  
 28299  	if rc != 0 && rc != TCL_RETURN {
 28300  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 28301  	} else {
 28302  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 28303  
 28304  		var data uintptr
 28305  		var zType uintptr = func() uintptr {
 28306  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28307  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28308  			}
 28309  			return ts + 584
 28310  		}()
 28311  		var c int8 = *(*int8)(unsafe.Pointer(zType))
 28312  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 28313  
 28314  		if eType == SQLITE_NULL {
 28315  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28316  				eType = SQLITE_BLOB
 28317  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 28318  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 28319  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28320  				eType = SQLITE_INTEGER
 28321  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28322  				eType = SQLITE_FLOAT
 28323  			} else {
 28324  				eType = SQLITE_TEXT
 28325  			}
 28326  		}
 28327  
 28328  		switch eType {
 28329  		case SQLITE_BLOB:
 28330  			{
 28331  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 28332  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 8)), libc.UintptrFromInt32(-1))
 28333  				break
 28334  
 28335  			}
 28336  			fallthrough
 28337  		case SQLITE_INTEGER:
 28338  			{
 28339  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+12) {
 28340  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 12)))
 28341  					break
 28342  				}
 28343  
 28344  			}
 28345  			fallthrough
 28346  		case SQLITE_FLOAT:
 28347  			{
 28348  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+20) {
 28349  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 20)))
 28350  					break
 28351  				}
 28352  
 28353  			}
 28354  			fallthrough
 28355  		default:
 28356  			{
 28357  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 28358  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 8)), libc.UintptrFromInt32(-1))
 28359  				break
 28360  
 28361  			}
 28362  		}
 28363  
 28364  	}
 28365  }
 28366  
 28367  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 28368  	bp := tls.Alloc(212)
 28369  	defer tls.Free(212)
 28370  
 28371  	var zCode uintptr
 28372  
 28373  	var rc int32
 28374  	var zReply uintptr
 28375  
 28376  	var pDb uintptr = pArg
 28377  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 28378  		return SQLITE_OK
 28379  	}
 28380  
 28381  	switch code {
 28382  	case SQLITE_COPY:
 28383  		zCode = ts + 10944
 28384  		break
 28385  	case SQLITE_CREATE_INDEX:
 28386  		zCode = ts + 10956
 28387  		break
 28388  	case SQLITE_CREATE_TABLE:
 28389  		zCode = ts + 10976
 28390  		break
 28391  	case SQLITE_CREATE_TEMP_INDEX:
 28392  		zCode = ts + 10996
 28393  		break
 28394  	case SQLITE_CREATE_TEMP_TABLE:
 28395  		zCode = ts + 11021
 28396  		break
 28397  	case SQLITE_CREATE_TEMP_TRIGGER:
 28398  		zCode = ts + 11046
 28399  		break
 28400  	case SQLITE_CREATE_TEMP_VIEW:
 28401  		zCode = ts + 11073
 28402  		break
 28403  	case SQLITE_CREATE_TRIGGER:
 28404  		zCode = ts + 11097
 28405  		break
 28406  	case SQLITE_CREATE_VIEW:
 28407  		zCode = ts + 11119
 28408  		break
 28409  	case SQLITE_DELETE:
 28410  		zCode = ts + 11138
 28411  		break
 28412  	case SQLITE_DROP_INDEX:
 28413  		zCode = ts + 11152
 28414  		break
 28415  	case SQLITE_DROP_TABLE:
 28416  		zCode = ts + 11170
 28417  		break
 28418  	case SQLITE_DROP_TEMP_INDEX:
 28419  		zCode = ts + 11188
 28420  		break
 28421  	case SQLITE_DROP_TEMP_TABLE:
 28422  		zCode = ts + 11211
 28423  		break
 28424  	case SQLITE_DROP_TEMP_TRIGGER:
 28425  		zCode = ts + 11234
 28426  		break
 28427  	case SQLITE_DROP_TEMP_VIEW:
 28428  		zCode = ts + 11259
 28429  		break
 28430  	case SQLITE_DROP_TRIGGER:
 28431  		zCode = ts + 11281
 28432  		break
 28433  	case SQLITE_DROP_VIEW:
 28434  		zCode = ts + 11301
 28435  		break
 28436  	case SQLITE_INSERT:
 28437  		zCode = ts + 11318
 28438  		break
 28439  	case SQLITE_PRAGMA:
 28440  		zCode = ts + 11332
 28441  		break
 28442  	case SQLITE_READ:
 28443  		zCode = ts + 11346
 28444  		break
 28445  	case SQLITE_SELECT:
 28446  		zCode = ts + 11358
 28447  		break
 28448  	case SQLITE_TRANSACTION:
 28449  		zCode = ts + 11372
 28450  		break
 28451  	case SQLITE_UPDATE:
 28452  		zCode = ts + 11391
 28453  		break
 28454  	case SQLITE_ATTACH:
 28455  		zCode = ts + 11405
 28456  		break
 28457  	case SQLITE_DETACH:
 28458  		zCode = ts + 11419
 28459  		break
 28460  	case SQLITE_ALTER_TABLE:
 28461  		zCode = ts + 11433
 28462  		break
 28463  	case SQLITE_REINDEX:
 28464  		zCode = ts + 11452
 28465  		break
 28466  	case SQLITE_ANALYZE:
 28467  		zCode = ts + 11467
 28468  		break
 28469  	case SQLITE_CREATE_VTABLE:
 28470  		zCode = ts + 11482
 28471  		break
 28472  	case SQLITE_DROP_VTABLE:
 28473  		zCode = ts + 11503
 28474  		break
 28475  	case SQLITE_FUNCTION:
 28476  		zCode = ts + 11522
 28477  		break
 28478  	case SQLITE_SAVEPOINT:
 28479  		zCode = ts + 11538
 28480  		break
 28481  	case SQLITE_RECURSIVE:
 28482  		zCode = ts + 11555
 28483  		break
 28484  	default:
 28485  		zCode = ts + 11572
 28486  		break
 28487  	}
 28488  	tcl.XTcl_DStringInit(tls, bp)
 28489  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 28490  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 28491  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28492  		if zArg1 != 0 {
 28493  			return zArg1
 28494  		}
 28495  		return ts + 584
 28496  	}())
 28497  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28498  		if zArg2 != 0 {
 28499  			return zArg2
 28500  		}
 28501  		return ts + 584
 28502  	}())
 28503  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28504  		if zArg3 != 0 {
 28505  			return zArg3
 28506  		}
 28507  		return ts + 584
 28508  	}())
 28509  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 28510  		if zArg4 != 0 {
 28511  			return zArg4
 28512  		}
 28513  		return ts + 584
 28514  	}())
 28515  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 28516  	tcl.XTcl_DStringFree(tls, bp)
 28517  	if rc == TCL_OK {
 28518  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28519  	} else {
 28520  		zReply = ts + 11577
 28521  	}
 28522  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 28523  		rc = SQLITE_OK
 28524  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 28525  		rc = SQLITE_DENY
 28526  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 28527  		rc = SQLITE_IGNORE
 28528  	} else {
 28529  		rc = 999
 28530  	}
 28531  	return rc
 28532  }
 28533  
 28534  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 28535  	var zLine uintptr
 28536  	var nLine int32
 28537  	var n int32
 28538  
 28539  	nLine = 100
 28540  	zLine = libc.Xmalloc(tls, uint32(nLine))
 28541  	if zLine == uintptr(0) {
 28542  		return uintptr(0)
 28543  	}
 28544  	n = 0
 28545  	for 1 != 0 {
 28546  		if n+100 > nLine {
 28547  			nLine = nLine*2 + 100
 28548  			zLine = libc.Xrealloc(tls, zLine, uint32(nLine))
 28549  			if zLine == uintptr(0) {
 28550  				return uintptr(0)
 28551  			}
 28552  		}
 28553  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 28554  			if n == 0 {
 28555  				libc.Xfree(tls, zLine)
 28556  				return uintptr(0)
 28557  			}
 28558  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 28559  			break
 28560  		}
 28561  		for *(*int8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 28562  			n++
 28563  		}
 28564  		if n > 0 && int32(*(*int8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 28565  			n--
 28566  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 28567  			break
 28568  		}
 28569  	}
 28570  	zLine = libc.Xrealloc(tls, zLine, uint32(n+1))
 28571  	return zLine
 28572  }
 28573  
 28574  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28575  	bp := tls.Alloc(16)
 28576  	defer tls.Free(16)
 28577  
 28578  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 28579  	var rc int32 = result
 28580  	var zEnd uintptr
 28581  
 28582  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 28583  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 28584  
 28585  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 28586  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 28587  		if rc != TCL_ERROR {
 28588  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 28589  			rc = TCL_ERROR
 28590  		}
 28591  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 28592  	}
 28593  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 28594  
 28595  	delDatabaseRef(tls, pDb)
 28596  	return rc
 28597  }
 28598  
 28599  var azEnd = [4]uintptr{
 28600  	ts + 11603,
 28601  	ts + 11628,
 28602  	ts + 11635,
 28603  	ts + 7824,
 28604  }
 28605  
 28606  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 28607  	var prepFlags uint32 = uint32(0)
 28608  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 28609  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 28610  	}
 28611  
 28612  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 28613  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 28614  	}
 28615  
 28616  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 28617  }
 28618  
 28619  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 28620  	bp := tls.Alloc(24)
 28621  	defer tls.Free(24)
 28622  
 28623  	var zSql uintptr = zIn
 28624  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28625  	var pPreStmt uintptr
 28626  	var nSql int32
 28627  	var nVar int32 = 0
 28628  	var iParm int32 = 0
 28629  	var c int8
 28630  	var i int32
 28631  	var needResultReset int32 = 0
 28632  	var rc int32 = SQLITE_OK
 28633  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28634  
 28635  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 28636  
 28637  	for int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 28638  		zSql++
 28639  	}
 28640  	nSql = strlen30(tls, zSql)
 28641  
 28642  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 28643  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 28644  		if nSql >= n &&
 28645  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint32(n)) == 0 &&
 28646  			(int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 28647  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28648  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 28649  
 28650  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 28651  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28652  			} else {
 28653  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28654  			}
 28655  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 28656  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28657  			} else {
 28658  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28659  			}
 28660  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28661  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28662  			break
 28663  		}
 28664  	}
 28665  
 28666  	if pPreStmt == uintptr(0) {
 28667  		var nByte int32
 28668  
 28669  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 28670  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28671  			return TCL_ERROR
 28672  		}
 28673  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 28674  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 28675  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28676  				return TCL_ERROR
 28677  			} else {
 28678  				return TCL_OK
 28679  			}
 28680  		}
 28681  
 28682  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28683  		nByte = int32(uint32(unsafe.Sizeof(SqlPreparedStmt{})) + uint32(nVar)*uint32(unsafe.Sizeof(uintptr(0))))
 28684  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 28685  		libc.Xmemset(tls, pPreStmt, 0, uint32(nByte))
 28686  
 28687  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 28688  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = (int32(*(*uintptr)(unsafe.Pointer(pzOut))) - int32(zSql)) / 1
 28689  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28690  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*28
 28691  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 28692  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 28693  			libc.Xmemcpy(tls, zCopy, zSql, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 28694  			*(*int8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = int8(0)
 28695  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 28696  		}
 28697  	}
 28698  
 28699  	for i = 1; i <= nVar; i++ {
 28700  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28701  		if zVar != uintptr(0) && (int32(*(*int8)(unsafe.Pointer(zVar))) == '$' || int32(*(*int8)(unsafe.Pointer(zVar))) == ':' || int32(*(*int8)(unsafe.Pointer(zVar))) == '@') {
 28702  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 28703  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 28704  				var pCmd uintptr
 28705  				var rx int32
 28706  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 28707  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28708  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 28709  				if needResultReset != 0 {
 28710  					tcl.XTcl_ResetResult(tls, interp)
 28711  				}
 28712  				needResultReset = 1
 28713  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 28714  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28715  					var _objPtr uintptr = pCmd
 28716  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28717  						tcl.XTclFreeObj(tls, _objPtr)
 28718  					}
 28719  				}
 28720  				if rx == TCL_OK {
 28721  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 28722  				} else if rx == TCL_ERROR {
 28723  					rc = TCL_ERROR
 28724  					break
 28725  				} else {
 28726  					pVar = uintptr(0)
 28727  				}
 28728  			}
 28729  			if pVar != 0 {
 28730  				var data uintptr
 28731  				var zType uintptr = func() uintptr {
 28732  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28733  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28734  					}
 28735  					return ts + 584
 28736  				}()
 28737  				c = *(*int8)(unsafe.Pointer(zType))
 28738  				if int32(*(*int8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28739  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+4)
 28740  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 4)), uintptr(0))
 28741  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28742  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*4)) = pVar
 28743  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 28744  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+4)
 28745  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 4)))
 28746  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28747  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+8)
 28748  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 8)))
 28749  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28750  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+16)
 28751  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 16)))
 28752  				} else {
 28753  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+4)
 28754  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 4)), uintptr(0))
 28755  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28756  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*4)) = pVar
 28757  				}
 28758  			} else {
 28759  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28760  			}
 28761  			if needResultReset != 0 {
 28762  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28763  			}
 28764  		}
 28765  	}
 28766  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 28767  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 28768  	if needResultReset != 0 && rc == TCL_OK {
 28769  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28770  	}
 28771  
 28772  	return rc
 28773  }
 28774  
 28775  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 28776  	var i int32
 28777  
 28778  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 28779  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28780  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*4))
 28781  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28782  				tcl.XTclFreeObj(tls, _objPtr)
 28783  			}
 28784  		}
 28785  	}
 28786  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 28787  
 28788  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 28789  		dbFreeStmt(tls, pPreStmt)
 28790  	} else {
 28791  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 28792  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 28793  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 28794  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 28795  		}
 28796  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 28797  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 28798  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 28799  		} else {
 28800  		}
 28801  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 28802  
 28803  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 28804  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 28805  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 28806  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 28807  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28808  			dbFreeStmt(tls, pLast)
 28809  		}
 28810  	}
 28811  }
 28812  
 28813  type DbEvalContext1 = struct {
 28814  	FpDb       uintptr
 28815  	FpSql      uintptr
 28816  	FzSql      uintptr
 28817  	FpPreStmt  uintptr
 28818  	FnCol      int32
 28819  	FevalFlags int32
 28820  	FpArray    uintptr
 28821  	FapColName uintptr
 28822  }
 28823  
 28824  type DbEvalContext = DbEvalContext1
 28825  
 28826  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 28827  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 28828  		var i int32
 28829  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 28830  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28831  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*4))
 28832  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28833  					tcl.XTclFreeObj(tls, _objPtr)
 28834  				}
 28835  			}
 28836  		}
 28837  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 28838  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 28839  	}
 28840  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 28841  }
 28842  
 28843  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 28844  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(DbEvalContext{})))
 28845  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 28846  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 28847  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 28848  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 28849  	if pArray != 0 {
 28850  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 28851  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 28852  	}
 28853  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 28854  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28855  }
 28856  
 28857  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 28858  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 28859  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28860  		var i int32
 28861  		var nCol int32
 28862  		var apColName uintptr = uintptr(0)
 28863  
 28864  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 28865  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 28866  			apColName = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0)))*uint32(nCol))
 28867  			for i = 0; i < nCol; i++ {
 28868  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*4)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 28869  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*4)))).FrefCount++
 28870  			}
 28871  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 28872  		}
 28873  
 28874  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28875  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 28876  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 28877  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 28878  
 28879  			for i = 0; i < nCol; i++ {
 28880  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*4)))
 28881  			}
 28882  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 28883  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 28884  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28885  				var _objPtr uintptr = pStar
 28886  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28887  					tcl.XTclFreeObj(tls, _objPtr)
 28888  				}
 28889  			}
 28890  		}
 28891  	}
 28892  
 28893  	if papColName != 0 {
 28894  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 28895  	}
 28896  	if pnCol != 0 {
 28897  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 28898  	}
 28899  }
 28900  
 28901  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 28902  	var zPrevSql uintptr = uintptr(0)
 28903  
 28904  	for *(*int8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28905  		var rc int32
 28906  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 28907  			zPrevSql = func() uintptr {
 28908  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 28909  					return uintptr(0)
 28910  				}
 28911  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 28912  			}()
 28913  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+8, p+12)
 28914  			if rc != TCL_OK {
 28915  				return rc
 28916  			}
 28917  		} else {
 28918  			var rcs int32
 28919  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 28920  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 28921  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28922  
 28923  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 28924  			if rcs == SQLITE_ROW {
 28925  				return TCL_OK
 28926  			}
 28927  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28928  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 28929  			}
 28930  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 28931  
 28932  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 28933  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 28934  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 28935  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 28936  			dbReleaseColumnNames(tls, p)
 28937  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28938  
 28939  			if rcs != SQLITE_OK {
 28940  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 28941  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 28942  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 28943  					continue
 28944  				}
 28945  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 28946  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28947  				return TCL_ERROR
 28948  			} else {
 28949  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 28950  			}
 28951  		}
 28952  	}
 28953  
 28954  	return TCL_BREAK
 28955  }
 28956  
 28957  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 28958  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28959  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 28960  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 28961  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28962  	}
 28963  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28964  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28965  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28966  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28967  				tcl.XTclFreeObj(tls, _objPtr)
 28968  			}
 28969  		}
 28970  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 28971  	}
 28972  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28973  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 28974  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28975  			tcl.XTclFreeObj(tls, _objPtr)
 28976  		}
 28977  	}
 28978  	dbReleaseColumnNames(tls, p)
 28979  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28980  }
 28981  
 28982  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 28983  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28984  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 28985  	case SQLITE_BLOB:
 28986  		{
 28987  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 28988  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 28989  			if !(zBlob != 0) {
 28990  				bytes = 0
 28991  			}
 28992  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 28993  
 28994  		}
 28995  	case SQLITE_INTEGER:
 28996  		{
 28997  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 28998  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 28999  				return tcl.XTcl_NewIntObj(tls, int32(v))
 29000  			} else {
 29001  				return tcl.XTcl_NewWideIntObj(tls, v)
 29002  			}
 29003  
 29004  		}
 29005  		fallthrough
 29006  	case SQLITE_FLOAT:
 29007  		{
 29008  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 29009  
 29010  		}
 29011  	case SQLITE_NULL:
 29012  		{
 29013  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 29014  
 29015  		}
 29016  	}
 29017  
 29018  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 29019  }
 29020  
 29021  func DbUseNre(tls *libc.TLS) int32 {
 29022  	bp := tls.Alloc(8)
 29023  	defer tls.Free(8)
 29024  
 29025  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 29026  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 29027  }
 29028  
 29029  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 29030  	bp := tls.Alloc(8)
 29031  	defer tls.Free(8)
 29032  
 29033  	var rc int32 = result
 29034  
 29035  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 29036  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*4))
 29037  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 29038  
 29039  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 29040  		var i int32
 29041  
 29042  		dbEvalRowInfo(tls, p, bp, bp+4)
 29043  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 29044  			if pArray == uintptr(0) {
 29045  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 29046  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 29047  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 29048  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 29049  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4))), 0)
 29050  			} else {
 29051  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4)), dbEvalColumnValue(tls, p, i), 0)
 29052  			}
 29053  		}
 29054  
 29055  		if DbUseNre(tls) != 0 {
 29056  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 29057  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 29058  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 29059  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 29060  		} else {
 29061  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 29062  		}
 29063  	}
 29064  
 29065  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29066  		var _objPtr uintptr = pScript
 29067  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29068  			tcl.XTclFreeObj(tls, _objPtr)
 29069  		}
 29070  	}
 29071  	dbEvalFinalize(tls, p)
 29072  	tcl.XTcl_Free(tls, p)
 29073  
 29074  	if rc == TCL_OK || rc == TCL_BREAK {
 29075  		tcl.XTcl_ResetResult(tls, interp)
 29076  		rc = TCL_OK
 29077  	}
 29078  	return rc
 29079  }
 29080  
 29081  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 29082  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 29083  
 29084  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 29085  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 29086  		if pArg != 0 {
 29087  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 29088  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 29089  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 29090  					tcl.XTclFreeObj(tls, _objPtr)
 29091  				}
 29092  			}
 29093  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 29094  		}
 29095  	}
 29096  	if pArg != 0 {
 29097  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 29098  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 29099  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 29100  		}
 29101  	}
 29102  
 29103  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 29104  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 29105  			return *(*uintptr)(unsafe.Pointer(&struct {
 29106  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 29107  			}{DbPreUpdateHandler}))
 29108  		}
 29109  		return uintptr(0)
 29110  	}(), pDb)
 29111  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 29112  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 29113  			return *(*uintptr)(unsafe.Pointer(&struct {
 29114  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 29115  			}{DbUpdateHandler}))
 29116  		}
 29117  		return uintptr(0)
 29118  	}(), pDb)
 29119  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 29120  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 29121  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 29122  		}
 29123  		return uintptr(0)
 29124  	}(), pDb)
 29125  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 29126  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 29127  			return *(*uintptr)(unsafe.Pointer(&struct {
 29128  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 29129  			}{DbWalHandler}))
 29130  		}
 29131  		return uintptr(0)
 29132  	}(), pDb)
 29133  }
 29134  
 29135  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 29136  	bp := tls.Alloc(1460)
 29137  	defer tls.Free(1460)
 29138  	*(*uintptr)(unsafe.Pointer(bp + 1344)) = cd
 29139  
 29140  	var pDb uintptr
 29141  
 29142  	var rc int32
 29143  	var zAuth uintptr
 29144  
 29145  	var zDestFile uintptr
 29146  	var zSrcDb uintptr
 29147  
 29148  	var pBackup uintptr
 29149  	var zCallback uintptr
 29150  
 29151  	var zBusy uintptr
 29152  
 29153  	var subCmd uintptr
 29154  
 29155  	var pResult uintptr
 29156  	var pCollate uintptr
 29157  	var zName uintptr
 29158  	var zScript uintptr
 29159  
 29160  	var _objPtr uintptr
 29161  	var zCommit uintptr
 29162  
 29163  	var pResult1 uintptr
 29164  	var isComplete int32
 29165  
 29166  	var zOpt uintptr
 29167  
 29168  	var pResult2 uintptr
 29169  	var ii int32
 29170  	var zErr uintptr
 29171  	var nErr int32
 29172  	var z uintptr
 29173  	var zTable uintptr
 29174  	var zFile uintptr
 29175  	var zConflict uintptr
 29176  
 29177  	var nCol int32
 29178  	var nByte int32
 29179  	var i int32
 29180  	var j int32
 29181  	var nSep int32
 29182  	var nNull int32
 29183  	var zSql uintptr
 29184  	var zLine uintptr
 29185  	var azCol uintptr
 29186  	var zCommit1 uintptr
 29187  	var in uintptr
 29188  	var lineno int32
 29189  
 29190  	var pResult3 uintptr
 29191  
 29192  	var zSep uintptr
 29193  	var zNull uintptr
 29194  
 29195  	var z1 uintptr
 29196  	var flags int32
 29197  	var zSchema uintptr
 29198  	var pValue uintptr
 29199  	var pBA uintptr
 29200  	var pData uintptr
 29201  
 29202  	var xrc int32
 29203  
 29204  	var i1 int32
 29205  
 29206  	var pResult4 uintptr
 29207  
 29208  	var i2 int32
 29209  
 29210  	var _objPtr1 uintptr
 29211  
 29212  	var pRet uintptr
 29213  
 29214  	var p uintptr
 29215  	var pArray uintptr
 29216  	var pScript uintptr
 29217  	var evalFlags int32
 29218  	var zOpt1 uintptr
 29219  
 29220  	var z2 uintptr
 29221  	var n1 int32
 29222  	var _objPtr2 uintptr
 29223  	var flags1 int32
 29224  	var pFunc uintptr
 29225  	var pScript1 uintptr
 29226  	var zName1 uintptr
 29227  
 29228  	var i3 int32
 29229  
 29230  	var isReadonly1 int32
 29231  	var zDb uintptr
 29232  	var zTable1 uintptr
 29233  	var zColumn uintptr
 29234  
 29235  	var zNull1 uintptr
 29236  	var pResult5 uintptr
 29237  	var rowid Tcl_WideInt
 29238  	var zProgress uintptr
 29239  
 29240  	var zProfile uintptr
 29241  
 29242  	var zSrcFile uintptr
 29243  	var zDestDb uintptr
 29244  
 29245  	var pBackup1 uintptr
 29246  	var nTimeout int32
 29247  	var needFree int32
 29248  	var zSchema1 uintptr
 29249  
 29250  	var pData1 uintptr
 29251  	var v2 int32
 29252  	var zOp uintptr
 29253  
 29254  	var pResult6 uintptr
 29255  	var zTrace uintptr
 29256  
 29257  	var _objPtr3 uintptr
 29258  	var _objPtr4 uintptr
 29259  
 29260  	var pError uintptr
 29261  
 29262  	var i4 int32
 29263  	var zTraceV2 uintptr
 29264  
 29265  	var wMask Tcl_WideInt
 29266  
 29267  	var pScript2 uintptr
 29268  	var zBegin uintptr
 29269  	var _objPtr5 uintptr
 29270  	var xNotify uintptr
 29271  	var pNotifyArg uintptr
 29272  	var nCol2 int32
 29273  	var pRet1 uintptr
 29274  	var pObj1 uintptr
 29275  
 29276  	var ppHook uintptr
 29277  
 29278  	var zArg uintptr
 29279  	var i5 int32
 29280  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1344))
 29281  	rc = TCL_OK
 29282  
 29283  	if !(objc < 2) {
 29284  		goto __1
 29285  	}
 29286  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 29287  	return TCL_ERROR
 29288  __1:
 29289  	;
 29290  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&DB_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+11691, 0, bp+1016) != 0) {
 29291  		goto __2
 29292  	}
 29293  	return TCL_ERROR
 29294  __2:
 29295  	;
 29296  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 29297  	case uint32(0):
 29298  		goto __4
 29299  
 29300  	case uint32(1):
 29301  		goto __5
 29302  
 29303  	case uint32(2):
 29304  		goto __6
 29305  
 29306  	case uint32(3):
 29307  		goto __7
 29308  
 29309  	case uint32(4):
 29310  		goto __8
 29311  
 29312  	case uint32(5):
 29313  		goto __9
 29314  
 29315  	case uint32(6):
 29316  		goto __10
 29317  
 29318  	case uint32(7):
 29319  		goto __11
 29320  
 29321  	case uint32(8):
 29322  		goto __12
 29323  
 29324  	case uint32(9):
 29325  		goto __13
 29326  
 29327  	case uint32(10):
 29328  		goto __14
 29329  
 29330  	case uint32(11):
 29331  		goto __15
 29332  
 29333  	case uint32(12):
 29334  		goto __16
 29335  
 29336  	case uint32(13):
 29337  		goto __17
 29338  
 29339  	case uint32(14):
 29340  		goto __18
 29341  
 29342  	case uint32(15):
 29343  		goto __19
 29344  
 29345  	case uint32(16):
 29346  		goto __20
 29347  
 29348  	case uint32(18):
 29349  		goto __21
 29350  	case uint32(24):
 29351  		goto __22
 29352  
 29353  	case uint32(17):
 29354  		goto __23
 29355  
 29356  	case uint32(19):
 29357  		goto __24
 29358  
 29359  	case uint32(20):
 29360  		goto __25
 29361  
 29362  	case uint32(21):
 29363  		goto __26
 29364  
 29365  	case uint32(23):
 29366  		goto __27
 29367  
 29368  	case uint32(22):
 29369  		goto __28
 29370  
 29371  	case uint32(27):
 29372  		goto __29
 29373  
 29374  	case uint32(26):
 29375  		goto __30
 29376  
 29377  	case uint32(28):
 29378  		goto __31
 29379  
 29380  	case uint32(29):
 29381  		goto __32
 29382  
 29383  	case uint32(31):
 29384  		goto __33
 29385  
 29386  	case uint32(32):
 29387  		goto __34
 29388  
 29389  	case uint32(33):
 29390  		goto __35
 29391  
 29392  	case uint32(34):
 29393  		goto __36
 29394  
 29395  	case uint32(35):
 29396  		goto __37
 29397  
 29398  	case uint32(36):
 29399  		goto __38
 29400  
 29401  	case uint32(37):
 29402  		goto __39
 29403  
 29404  	case uint32(38):
 29405  		goto __40
 29406  
 29407  	case uint32(25):
 29408  		goto __41
 29409  
 29410  	case uint32(41):
 29411  		goto __42
 29412  	case uint32(39):
 29413  		goto __43
 29414  	case uint32(30):
 29415  		goto __44
 29416  
 29417  	case uint32(40):
 29418  		goto __45
 29419  	}
 29420  	goto __3
 29421  
 29422  __4:
 29423  	if !(objc > 3) {
 29424  		goto __46
 29425  	}
 29426  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29427  	return TCL_ERROR
 29428  	goto __47
 29429  __46:
 29430  	if !(objc == 2) {
 29431  		goto __48
 29432  	}
 29433  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29434  		goto __50
 29435  	}
 29436  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 29437  __50:
 29438  	;
 29439  	goto __49
 29440  __48:
 29441  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29442  		goto __51
 29443  	}
 29444  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 29445  __51:
 29446  	;
 29447  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1020)
 29448  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 29449  		goto __52
 29450  	}
 29451  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29452  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 29453  	goto __53
 29454  __52:
 29455  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 29456  __53:
 29457  	;
 29458  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 29459  		goto __54
 29460  	}
 29461  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29462  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29463  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 29464  	}{auth_callback})), pDb)
 29465  	goto __55
 29466  __54:
 29467  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29468  __55:
 29469  	;
 29470  __49:
 29471  	;
 29472  __47:
 29473  	;
 29474  	goto __3
 29475  
 29476  __5:
 29477  	if !(objc == 3) {
 29478  		goto __56
 29479  	}
 29480  	zSrcDb = ts + 85
 29481  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 29482  	goto __57
 29483  __56:
 29484  	if !(objc == 4) {
 29485  		goto __58
 29486  	}
 29487  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 29488  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 29489  	goto __59
 29490  __58:
 29491  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 29492  	return TCL_ERROR
 29493  __59:
 29494  	;
 29495  __57:
 29496  	;
 29497  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 29498  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 29499  	if !(rc != SQLITE_OK) {
 29500  		goto __60
 29501  	}
 29502  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 29503  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29504  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29505  	return TCL_ERROR
 29506  __60:
 29507  	;
 29508  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 29509  	if !(pBackup == uintptr(0)) {
 29510  		goto __61
 29511  	}
 29512  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 29513  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29514  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29515  	return TCL_ERROR
 29516  __61:
 29517  	;
 29518  __62:
 29519  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 29520  		goto __63
 29521  	}
 29522  	goto __62
 29523  __63:
 29524  	;
 29525  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 29526  	if !(rc == SQLITE_DONE) {
 29527  		goto __64
 29528  	}
 29529  	rc = TCL_OK
 29530  	goto __65
 29531  __64:
 29532  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 29533  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 29534  	rc = TCL_ERROR
 29535  __65:
 29536  	;
 29537  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 29538  	goto __3
 29539  
 29540  __6:
 29541  	if !(objc > 3) {
 29542  		goto __66
 29543  	}
 29544  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29545  	return TCL_ERROR
 29546  	goto __67
 29547  __66:
 29548  	if !(objc == 2) {
 29549  		goto __68
 29550  	}
 29551  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29552  		goto __70
 29553  	}
 29554  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 29555  __70:
 29556  	;
 29557  	goto __69
 29558  __68:
 29559  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 29560  		goto __71
 29561  	}
 29562  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 29563  __71:
 29564  	;
 29565  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1028)
 29566  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1028)) > 0) {
 29567  		goto __72
 29568  	}
 29569  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1028))+1))
 29570  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint32(*(*int32)(unsafe.Pointer(bp + 1028))+1))
 29571  	goto __73
 29572  __72:
 29573  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 29574  __73:
 29575  	;
 29576  __69:
 29577  	;
 29578  __67:
 29579  	;
 29580  	goto __3
 29581  
 29582  __7:
 29583  	if !(objc > 3) {
 29584  		goto __74
 29585  	}
 29586  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 29587  	return TCL_ERROR
 29588  	goto __75
 29589  __74:
 29590  	if !(objc == 2) {
 29591  		goto __76
 29592  	}
 29593  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29594  		goto __78
 29595  	}
 29596  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 29597  __78:
 29598  	;
 29599  	goto __77
 29600  __76:
 29601  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29602  		goto __79
 29603  	}
 29604  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 29605  __79:
 29606  	;
 29607  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1032)
 29608  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 29609  		goto __80
 29610  	}
 29611  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29612  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 29613  	goto __81
 29614  __80:
 29615  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 29616  __81:
 29617  	;
 29618  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29619  		goto __82
 29620  	}
 29621  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29622  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29623  		f func(*libc.TLS, uintptr, int32) int32
 29624  	}{DbBusyHandler})), pDb)
 29625  	goto __83
 29626  __82:
 29627  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29628  __83:
 29629  	;
 29630  __77:
 29631  	;
 29632  __75:
 29633  	;
 29634  	goto __3
 29635  
 29636  __8:
 29637  	if !(objc <= 2) {
 29638  		goto __84
 29639  	}
 29640  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 29641  	return TCL_ERROR
 29642  __84:
 29643  	;
 29644  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0))
 29645  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 29646  		goto __85
 29647  	}
 29648  	if !(objc != 3) {
 29649  		goto __87
 29650  	}
 29651  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 29652  	return TCL_ERROR
 29653  	goto __88
 29654  __87:
 29655  	flushStmtCache(tls, pDb)
 29656  __88:
 29657  	;
 29658  	goto __86
 29659  __85:
 29660  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 29661  		goto __89
 29662  	}
 29663  	if !(objc != 4) {
 29664  		goto __91
 29665  	}
 29666  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 29667  	return TCL_ERROR
 29668  	goto __92
 29669  __91:
 29670  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1036)) {
 29671  		goto __93
 29672  	}
 29673  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 29674  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), uintptr(0)), ts+11838, uintptr(0)))
 29675  	return TCL_ERROR
 29676  	goto __94
 29677  __93:
 29678  	if !(*(*int32)(unsafe.Pointer(bp + 1036)) < 0) {
 29679  		goto __95
 29680  	}
 29681  	flushStmtCache(tls, pDb)
 29682  	*(*int32)(unsafe.Pointer(bp + 1036)) = 0
 29683  	goto __96
 29684  __95:
 29685  	if !(*(*int32)(unsafe.Pointer(bp + 1036)) > MAX_PREPARED_STMTS) {
 29686  		goto __97
 29687  	}
 29688  	*(*int32)(unsafe.Pointer(bp + 1036)) = MAX_PREPARED_STMTS
 29689  __97:
 29690  	;
 29691  __96:
 29692  	;
 29693  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1036))
 29694  __94:
 29695  	;
 29696  __92:
 29697  	;
 29698  	goto __90
 29699  __89:
 29700  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 29701  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0)), ts+11864,
 29702  		uintptr(0)))
 29703  	return TCL_ERROR
 29704  __90:
 29705  	;
 29706  __86:
 29707  	;
 29708  	goto __3
 29709  
 29710  __9:
 29711  	if !(objc != 2) {
 29712  		goto __98
 29713  	}
 29714  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 29715  	return TCL_ERROR
 29716  __98:
 29717  	;
 29718  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 29719  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 29720  	goto __3
 29721  
 29722  __10:
 29723  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 29724  	goto __3
 29725  
 29726  __11:
 29727  	if !(objc != 4) {
 29728  		goto __99
 29729  	}
 29730  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 29731  	return TCL_ERROR
 29732  __99:
 29733  	;
 29734  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0))
 29735  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1040)
 29736  	pCollate = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqlCollate{}))+uint32(*(*int32)(unsafe.Pointer(bp + 1040)))+uint32(1))
 29737  	if !(pCollate == uintptr(0)) {
 29738  		goto __100
 29739  	}
 29740  	return TCL_ERROR
 29741  __100:
 29742  	;
 29743  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 29744  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 29745  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*12
 29746  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 29747  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint32(*(*int32)(unsafe.Pointer(bp + 1040))+1))
 29748  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 29749  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 29750  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 29751  		}{tclSqlCollate}))) != 0) {
 29752  		goto __101
 29753  	}
 29754  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 29755  	return TCL_ERROR
 29756  __101:
 29757  	;
 29758  	goto __3
 29759  
 29760  __12:
 29761  	if !(objc != 3) {
 29762  		goto __102
 29763  	}
 29764  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 29765  	return TCL_ERROR
 29766  __102:
 29767  	;
 29768  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 29769  		goto __103
 29770  	}
 29771  __104:
 29772  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 29773  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 29774  		goto __107
 29775  	}
 29776  	tcl.XTclFreeObj(tls, _objPtr)
 29777  __107:
 29778  	;
 29779  	goto __105
 29780  __105:
 29781  	if 0 != 0 {
 29782  		goto __104
 29783  	}
 29784  	goto __106
 29785  __106:
 29786  	;
 29787  __103:
 29788  	;
 29789  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 29790  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 29791  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 29792  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 29793  	}{tclCollateNeeded})))
 29794  	goto __3
 29795  
 29796  __13:
 29797  	if !(objc > 3) {
 29798  		goto __108
 29799  	}
 29800  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29801  	return TCL_ERROR
 29802  	goto __109
 29803  __108:
 29804  	if !(objc == 2) {
 29805  		goto __110
 29806  	}
 29807  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29808  		goto __112
 29809  	}
 29810  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 29811  __112:
 29812  	;
 29813  	goto __111
 29814  __110:
 29815  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29816  		goto __113
 29817  	}
 29818  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 29819  __113:
 29820  	;
 29821  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1044)
 29822  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1044)) > 0) {
 29823  		goto __114
 29824  	}
 29825  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29826  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint32(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29827  	goto __115
 29828  __114:
 29829  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 29830  __115:
 29831  	;
 29832  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29833  		goto __116
 29834  	}
 29835  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29836  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29837  		f func(*libc.TLS, uintptr) int32
 29838  	}{DbCommitHandler})), pDb)
 29839  	goto __117
 29840  __116:
 29841  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29842  __117:
 29843  	;
 29844  __111:
 29845  	;
 29846  __109:
 29847  	;
 29848  	goto __3
 29849  
 29850  __14:
 29851  	if !(objc != 3) {
 29852  		goto __118
 29853  	}
 29854  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29855  	return TCL_ERROR
 29856  __118:
 29857  	;
 29858  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0)))
 29859  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 29860  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 29861  	goto __3
 29862  
 29863  __15:
 29864  	if !(objc > 4) {
 29865  		goto __119
 29866  	}
 29867  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 29868  	return TCL_ERROR
 29869  __119:
 29870  	;
 29871  	if !(objc == 2) {
 29872  		goto __120
 29873  	}
 29874  
 29875  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 29876  	ii = 0
 29877  __122:
 29878  	if !(uint32(ii) < uint32(unsafe.Sizeof(aDbConfig))/uint32(unsafe.Sizeof(DbConfigChoices{}))) {
 29879  		goto __124
 29880  	}
 29881  	*(*int32)(unsafe.Pointer(bp + 1048)) = 0
 29882  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1048))
 29883  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29884  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 29885  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29886  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1048))))
 29887  	goto __123
 29888  __123:
 29889  	ii++
 29890  	goto __122
 29891  	goto __124
 29892  __124:
 29893  	;
 29894  	goto __121
 29895  __120:
 29896  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 29897  	*(*int32)(unsafe.Pointer(bp + 1052)) = -1
 29898  	*(*int32)(unsafe.Pointer(bp + 1056)) = 0
 29899  	if !(int32(*(*int8)(unsafe.Pointer(zOpt))) == '-') {
 29900  		goto __125
 29901  	}
 29902  	zOpt++
 29903  __125:
 29904  	;
 29905  	ii = 0
 29906  __126:
 29907  	if !(uint32(ii) < uint32(unsafe.Sizeof(aDbConfig))/uint32(unsafe.Sizeof(DbConfigChoices{}))) {
 29908  		goto __128
 29909  	}
 29910  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 29911  		goto __129
 29912  	}
 29913  	goto __128
 29914  __129:
 29915  	;
 29916  	goto __127
 29917  __127:
 29918  	ii++
 29919  	goto __126
 29920  	goto __128
 29921  __128:
 29922  	;
 29923  	if !(uint32(ii) >= uint32(unsafe.Sizeof(aDbConfig))/uint32(unsafe.Sizeof(DbConfigChoices{}))) {
 29924  		goto __130
 29925  	}
 29926  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 29927  		ts+11945, uintptr(0)))
 29928  	return TCL_ERROR
 29929  __130:
 29930  	;
 29931  	if !(objc == 4) {
 29932  		goto __131
 29933  	}
 29934  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1052) != 0) {
 29935  		goto __132
 29936  	}
 29937  	return TCL_ERROR
 29938  __132:
 29939  	;
 29940  __131:
 29941  	;
 29942  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1052)), bp+1056))
 29943  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1056)))
 29944  __121:
 29945  	;
 29946  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 29947  	goto __3
 29948  
 29949  __16:
 29950  	lineno = 0
 29951  	if !(objc < 5 || objc > 7) {
 29952  		goto __133
 29953  	}
 29954  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29955  		ts+11947)
 29956  	return TCL_ERROR
 29957  __133:
 29958  	;
 29959  	if !(objc >= 6) {
 29960  		goto __134
 29961  	}
 29962  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*4)), uintptr(0))
 29963  	goto __135
 29964  __134:
 29965  	zSep = ts + 12009
 29966  __135:
 29967  	;
 29968  	if !(objc >= 7) {
 29969  		goto __136
 29970  	}
 29971  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*4)), uintptr(0))
 29972  	goto __137
 29973  __136:
 29974  	zNull = ts + 584
 29975  __137:
 29976  	;
 29977  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0))
 29978  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), uintptr(0))
 29979  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0))
 29980  	nSep = strlen30(tls, zSep)
 29981  	nNull = strlen30(tls, zNull)
 29982  	if !(nSep == 0) {
 29983  		goto __138
 29984  	}
 29985  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 29986  		uintptr(0)))
 29987  	return TCL_ERROR
 29988  __138:
 29989  	;
 29990  	if !(libc.Xstrcmp(tls, zConflict, ts+12055) != 0 && libc.Xstrcmp(tls, zConflict, ts+12064) != 0 && libc.Xstrcmp(tls, zConflict, ts+12070) != 0 && libc.Xstrcmp(tls, zConflict, ts+12075) != 0 && libc.Xstrcmp(tls, zConflict, ts+12082) != 0) {
 29991  		goto __139
 29992  	}
 29993  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 29994  		ts+12099, uintptr(0)))
 29995  	return TCL_ERROR
 29996  __139:
 29997  	;
 29998  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 29999  	if !(zSql == uintptr(0)) {
 30000  		goto __140
 30001  	}
 30002  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 30003  	return TCL_ERROR
 30004  __140:
 30005  	;
 30006  	nByte = strlen30(tls, zSql)
 30007  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1060, uintptr(0))
 30008  	sqlite3.Xsqlite3_free(tls, zSql)
 30009  	if !(rc != 0) {
 30010  		goto __141
 30011  	}
 30012  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30013  	nCol = 0
 30014  	goto __142
 30015  __141:
 30016  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30017  __142:
 30018  	;
 30019  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30020  	if !(nCol == 0) {
 30021  		goto __143
 30022  	}
 30023  	return TCL_ERROR
 30024  __143:
 30025  	;
 30026  	zSql = libc.Xmalloc(tls, uint32(nByte+50+nCol*2))
 30027  	if !(zSql == uintptr(0)) {
 30028  		goto __144
 30029  	}
 30030  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 30031  	return TCL_ERROR
 30032  __144:
 30033  	;
 30034  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 30035  		libc.VaList(bp+384, zConflict, zTable))
 30036  	j = strlen30(tls, zSql)
 30037  	i = 1
 30038  __145:
 30039  	if !(i < nCol) {
 30040  		goto __147
 30041  	}
 30042  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(',')
 30043  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 30044  	goto __146
 30045  __146:
 30046  	i++
 30047  	goto __145
 30048  	goto __147
 30049  __147:
 30050  	;
 30051  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(')')
 30052  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 30053  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1060, uintptr(0))
 30054  	libc.Xfree(tls, zSql)
 30055  	if !(rc != 0) {
 30056  		goto __148
 30057  	}
 30058  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30059  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30060  	return TCL_ERROR
 30061  __148:
 30062  	;
 30063  	in = libc.Xfopen(tls, zFile, ts+4402)
 30064  	if !(in == uintptr(0)) {
 30065  		goto __149
 30066  	}
 30067  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 30068  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30069  	return TCL_ERROR
 30070  __149:
 30071  	;
 30072  	azCol = libc.Xmalloc(tls, uint32(unsafe.Sizeof(uintptr(0)))*uint32(nCol+1))
 30073  	if !(azCol == uintptr(0)) {
 30074  		goto __150
 30075  	}
 30076  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 30077  	libc.Xfclose(tls, in)
 30078  	return TCL_ERROR
 30079  __150:
 30080  	;
 30081  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 30082  	zCommit1 = ts + 11628
 30083  __151:
 30084  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 30085  		goto __152
 30086  	}
 30087  	lineno++
 30088  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 30089  	i = 0
 30090  	z = zLine
 30091  __153:
 30092  	if !(*(*int8)(unsafe.Pointer(z)) != 0) {
 30093  		goto __155
 30094  	}
 30095  	if !(int32(*(*int8)(unsafe.Pointer(z))) == int32(*(*int8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint32(nSep)) == 0) {
 30096  		goto __156
 30097  	}
 30098  	*(*int8)(unsafe.Pointer(z)) = int8(0)
 30099  	i++
 30100  	if !(i < nCol) {
 30101  		goto __157
 30102  	}
 30103  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*4)) = z + uintptr(nSep)
 30104  	z += uintptr(nSep - 1)
 30105  __157:
 30106  	;
 30107  __156:
 30108  	;
 30109  	goto __154
 30110  __154:
 30111  	z++
 30112  	goto __153
 30113  	goto __155
 30114  __155:
 30115  	;
 30116  	if !(i+1 != nCol) {
 30117  		goto __158
 30118  	}
 30119  	nErr = strlen30(tls, zFile) + 200
 30120  	zErr = libc.Xmalloc(tls, uint32(nErr))
 30121  	if !(zErr != 0) {
 30122  		goto __159
 30123  	}
 30124  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 30125  		ts+12315,
 30126  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 30127  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 30128  	libc.Xfree(tls, zErr)
 30129  __159:
 30130  	;
 30131  	zCommit1 = ts + 7824
 30132  	goto __152
 30133  __158:
 30134  	;
 30135  	i = 0
 30136  __160:
 30137  	if !(i < nCol) {
 30138  		goto __162
 30139  	}
 30140  
 30141  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*4)), zNull) == 0 ||
 30142  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*4))) == 0) {
 30143  		goto __163
 30144  	}
 30145  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)), i+1)
 30146  	goto __164
 30147  __163:
 30148  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*4)), -1, uintptr(0))
 30149  __164:
 30150  	;
 30151  	goto __161
 30152  __161:
 30153  	i++
 30154  	goto __160
 30155  	goto __162
 30156  __162:
 30157  	;
 30158  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30159  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30160  	libc.Xfree(tls, zLine)
 30161  	if !(rc != SQLITE_OK) {
 30162  		goto __165
 30163  	}
 30164  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30165  	zCommit1 = ts + 7824
 30166  	goto __152
 30167  __165:
 30168  	;
 30169  	goto __151
 30170  __152:
 30171  	;
 30172  	libc.Xfree(tls, azCol)
 30173  	libc.Xfclose(tls, in)
 30174  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1060)))
 30175  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 30176  
 30177  	if !(int32(*(*int8)(unsafe.Pointer(zCommit1))) == 'C') {
 30178  		goto __166
 30179  	}
 30180  
 30181  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 30182  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 30183  	rc = TCL_OK
 30184  	goto __167
 30185  __166:
 30186  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+1064, ts+1333, libc.VaList(bp+536, lineno))
 30187  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1064,
 30188  		uintptr(0)))
 30189  	rc = TCL_ERROR
 30190  __167:
 30191  	;
 30192  	goto __3
 30193  
 30194  __17:
 30195  	zSchema = uintptr(0)
 30196  	pValue = uintptr(0)
 30197  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1160)) = int64(0)
 30198  	*(*int32)(unsafe.Pointer(bp + 1152)) = 0
 30199  
 30200  	if !(objc < 3) {
 30201  		goto __168
 30202  	}
 30203  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 30204  	rc = TCL_ERROR
 30205  	goto __3
 30206  __168:
 30207  	;
 30208  	i1 = 2
 30209  __169:
 30210  	if !(i1 < objc-1) {
 30211  		goto __171
 30212  	}
 30213  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*4)))
 30214  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 30215  		goto __172
 30216  	}
 30217  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*4)), bp+1144)
 30218  	if !(rc != 0) {
 30219  		goto __173
 30220  	}
 30221  	goto deserialize_error
 30222  __173:
 30223  	;
 30224  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1160)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1144))
 30225  	goto __170
 30226  __172:
 30227  	;
 30228  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 30229  		goto __174
 30230  	}
 30231  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*4)), bp+1152)
 30232  	if !(rc != 0) {
 30233  		goto __175
 30234  	}
 30235  	goto deserialize_error
 30236  __175:
 30237  	;
 30238  	goto __170
 30239  __174:
 30240  	;
 30241  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*int8)(unsafe.Pointer(z1))) != '-') {
 30242  		goto __176
 30243  	}
 30244  	zSchema = z1
 30245  	goto __170
 30246  __176:
 30247  	;
 30248  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 30249  	rc = TCL_ERROR
 30250  	goto deserialize_error
 30251  	goto __170
 30252  __170:
 30253  	i1++
 30254  	goto __169
 30255  	goto __171
 30256  __171:
 30257  	;
 30258  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4))
 30259  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1156)
 30260  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1156))))
 30261  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1156)) > 0) {
 30262  		goto __177
 30263  	}
 30264  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 30265  	rc = TCL_ERROR
 30266  	goto __178
 30267  __177:
 30268  	if !(*(*int32)(unsafe.Pointer(bp + 1156)) > 0) {
 30269  		goto __179
 30270  	}
 30271  	libc.Xmemcpy(tls, pData, pBA, uint32(*(*int32)(unsafe.Pointer(bp + 1156))))
 30272  __179:
 30273  	;
 30274  	if !(*(*int32)(unsafe.Pointer(bp + 1152)) != 0) {
 30275  		goto __180
 30276  	}
 30277  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 30278  	goto __181
 30279  __180:
 30280  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 30281  __181:
 30282  	;
 30283  	xrc = sqlite3.Xsqlite3_deserialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, pData, int64(*(*int32)(unsafe.Pointer(bp + 1156))), int64(*(*int32)(unsafe.Pointer(bp + 1156))), uint32(flags))
 30284  	if !(xrc != 0) {
 30285  		goto __182
 30286  	}
 30287  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 30288  	rc = TCL_ERROR
 30289  __182:
 30290  	;
 30291  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1160)) > int64(0)) {
 30292  		goto __183
 30293  	}
 30294  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1160)
 30295  __183:
 30296  	;
 30297  __178:
 30298  	;
 30299  deserialize_error:
 30300  	goto __3
 30301  
 30302  __18:
 30303  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 30304  		uintptr(0)))
 30305  	return TCL_ERROR
 30306  
 30307  __19:
 30308  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30309  	goto __3
 30310  
 30311  __20:
 30312  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 30313  	goto __3
 30314  
 30315  __21:
 30316  __22:
 30317  	pResult4 = uintptr(0)
 30318  	if !(objc != 3) {
 30319  		goto __184
 30320  	}
 30321  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 30322  	return TCL_ERROR
 30323  __184:
 30324  	;
 30325  	dbEvalInit(tls, bp+1168, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0), 0)
 30326  	rc = dbEvalStep(tls, bp+1168)
 30327  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 30328  		goto __185
 30329  	}
 30330  	if !(rc == TCL_OK) {
 30331  		goto __187
 30332  	}
 30333  	pResult4 = dbEvalColumnValue(tls, bp+1168, 0)
 30334  	goto __188
 30335  __187:
 30336  	if !(rc == TCL_BREAK) {
 30337  		goto __189
 30338  	}
 30339  	tcl.XTcl_ResetResult(tls, interp)
 30340  __189:
 30341  	;
 30342  __188:
 30343  	;
 30344  	goto __186
 30345  __185:
 30346  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 30347  		goto __190
 30348  	}
 30349  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 30350  __190:
 30351  	;
 30352  __186:
 30353  	;
 30354  	dbEvalFinalize(tls, bp+1168)
 30355  	if !(pResult4 != 0) {
 30356  		goto __191
 30357  	}
 30358  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 30359  __191:
 30360  	;
 30361  	if !(rc == TCL_BREAK) {
 30362  		goto __192
 30363  	}
 30364  	rc = TCL_OK
 30365  __192:
 30366  	;
 30367  	goto __3
 30368  
 30369  __23:
 30370  	evalFlags = 0
 30371  __193:
 30372  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))) != uintptr(0) && int32(*(*int8)(unsafe.Pointer(zOpt1))) == '-') {
 30373  		goto __194
 30374  	}
 30375  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 30376  		goto __195
 30377  	}
 30378  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 30379  	goto __196
 30380  __195:
 30381  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 30382  	return TCL_ERROR
 30383  __196:
 30384  	;
 30385  	objc--
 30386  	objv += 4
 30387  	goto __193
 30388  __194:
 30389  	;
 30390  	if !(objc < 3 || objc > 5) {
 30391  		goto __197
 30392  	}
 30393  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 30394  		ts+12569)
 30395  	return TCL_ERROR
 30396  __197:
 30397  	;
 30398  	if !(objc == 3) {
 30399  		goto __198
 30400  	}
 30401  	pRet = tcl.XTcl_NewObj(tls)
 30402  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 30403  	dbEvalInit(tls, bp+1200, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0), 0)
 30404  __200:
 30405  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1200))) {
 30406  		goto __201
 30407  	}
 30408  	dbEvalRowInfo(tls, bp+1200, bp+1232, uintptr(0))
 30409  	i2 = 0
 30410  __202:
 30411  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1232))) {
 30412  		goto __204
 30413  	}
 30414  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1200, i2))
 30415  	goto __203
 30416  __203:
 30417  	i2++
 30418  	goto __202
 30419  	goto __204
 30420  __204:
 30421  	;
 30422  	goto __200
 30423  __201:
 30424  	;
 30425  	dbEvalFinalize(tls, bp+1200)
 30426  	if !(rc == TCL_BREAK) {
 30427  		goto __205
 30428  	}
 30429  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 30430  	rc = TCL_OK
 30431  __205:
 30432  	;
 30433  __206:
 30434  	_objPtr1 = pRet
 30435  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 30436  		goto __209
 30437  	}
 30438  	tcl.XTclFreeObj(tls, _objPtr1)
 30439  __209:
 30440  	;
 30441  	goto __207
 30442  __207:
 30443  	if 0 != 0 {
 30444  		goto __206
 30445  	}
 30446  	goto __208
 30447  __208:
 30448  	;
 30449  	goto __199
 30450  __198:
 30451  	pArray = uintptr(0)
 30452  
 30453  	if !(objc >= 5 && *(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4))))) != 0) {
 30454  		goto __210
 30455  	}
 30456  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*4))
 30457  __210:
 30458  	;
 30459  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4))
 30460  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 30461  
 30462  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 30463  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*4)), pArray, evalFlags)
 30464  
 30465  	*(*ClientData)(unsafe.Pointer(bp + 1236)) = p
 30466  	*(*ClientData)(unsafe.Pointer(bp + 1236 + 1*4)) = pScript
 30467  	rc = DbEvalNextCmd(tls, bp+1236, interp, TCL_OK)
 30468  __199:
 30469  	;
 30470  	goto __3
 30471  
 30472  __24:
 30473  	flags1 = SQLITE_UTF8
 30474  	*(*int32)(unsafe.Pointer(bp + 1244)) = -1
 30475  	*(*int32)(unsafe.Pointer(bp + 1272)) = SQLITE_NULL
 30476  	if !(objc < 4) {
 30477  		goto __211
 30478  	}
 30479  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 30480  	return TCL_ERROR
 30481  __211:
 30482  	;
 30483  	i3 = 3
 30484  __212:
 30485  	if !(i3 < objc-1) {
 30486  		goto __214
 30487  	}
 30488  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*4)))
 30489  	n1 = strlen30(tls, z2)
 30490  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint32(n1)) == 0) {
 30491  		goto __215
 30492  	}
 30493  	if !(i3 == objc-2) {
 30494  		goto __217
 30495  	}
 30496  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 30497  	return TCL_ERROR
 30498  __217:
 30499  	;
 30500  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*4)), bp+1244) != 0) {
 30501  		goto __218
 30502  	}
 30503  	return TCL_ERROR
 30504  __218:
 30505  	;
 30506  	if !(*(*int32)(unsafe.Pointer(bp + 1244)) < 0) {
 30507  		goto __219
 30508  	}
 30509  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 30510  		uintptr(0)))
 30511  	return TCL_ERROR
 30512  __219:
 30513  	;
 30514  	i3++
 30515  	goto __216
 30516  __215:
 30517  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint32(n1)) == 0) {
 30518  		goto __220
 30519  	}
 30520  	flags1 = flags1 | SQLITE_DETERMINISTIC
 30521  	goto __221
 30522  __220:
 30523  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint32(n1)) == 0) {
 30524  		goto __222
 30525  	}
 30526  	flags1 = flags1 | SQLITE_DIRECTONLY
 30527  	goto __223
 30528  __222:
 30529  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint32(n1)) == 0) {
 30530  		goto __224
 30531  	}
 30532  	flags1 = flags1 | SQLITE_INNOCUOUS
 30533  	goto __225
 30534  __224:
 30535  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint32(n1)) == 0) {
 30536  		goto __226
 30537  	}
 30538  	*(*[6]uintptr)(unsafe.Pointer(bp + 1248)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 30539  
 30540  	if !(i3 == objc-2) {
 30541  		goto __228
 30542  	}
 30543  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 30544  	return TCL_ERROR
 30545  __228:
 30546  	;
 30547  	i3++
 30548  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*4)), bp+1248, int32(unsafe.Sizeof(uintptr(0))), ts+12778, 0, bp+1272) != 0) {
 30549  		goto __229
 30550  	}
 30551  	return TCL_ERROR
 30552  __229:
 30553  	;
 30554  	*(*int32)(unsafe.Pointer(bp + 1272))++
 30555  	goto __227
 30556  __226:
 30557  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 30558  		ts+12783, uintptr(0)))
 30559  	return TCL_ERROR
 30560  __227:
 30561  	;
 30562  __225:
 30563  	;
 30564  __223:
 30565  	;
 30566  __221:
 30567  	;
 30568  __216:
 30569  	;
 30570  	goto __213
 30571  __213:
 30572  	i3++
 30573  	goto __212
 30574  	goto __214
 30575  __214:
 30576  	;
 30577  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4))
 30578  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0))
 30579  	pFunc = findSqlFunc(tls, pDb, zName1)
 30580  	if !(pFunc == uintptr(0)) {
 30581  		goto __230
 30582  	}
 30583  	return TCL_ERROR
 30584  __230:
 30585  	;
 30586  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 30587  		goto __231
 30588  	}
 30589  __232:
 30590  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 30591  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 30592  		goto __235
 30593  	}
 30594  	tcl.XTclFreeObj(tls, _objPtr2)
 30595  __235:
 30596  	;
 30597  	goto __233
 30598  __233:
 30599  	if 0 != 0 {
 30600  		goto __232
 30601  	}
 30602  	goto __234
 30603  __234:
 30604  	;
 30605  __231:
 30606  	;
 30607  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 30608  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 30609  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 30610  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1272))
 30611  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1244)), flags1,
 30612  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 30613  			f func(*libc.TLS, uintptr, int32, uintptr)
 30614  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 30615  	if !(rc != SQLITE_OK) {
 30616  		goto __236
 30617  	}
 30618  	rc = TCL_ERROR
 30619  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30620  __236:
 30621  	;
 30622  	goto __3
 30623  
 30624  __25:
 30625  	isReadonly1 = 0
 30626  	zDb = ts + 85
 30627  
 30628  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), ts+12434) == 0) {
 30629  		goto __237
 30630  	}
 30631  	isReadonly1 = 1
 30632  __237:
 30633  	;
 30634  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 30635  		goto __238
 30636  	}
 30637  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 30638  	return TCL_ERROR
 30639  __238:
 30640  	;
 30641  	if !(objc == 6+isReadonly1) {
 30642  		goto __239
 30643  	}
 30644  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*4)))
 30645  __239:
 30646  	;
 30647  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*4)))
 30648  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4)))
 30649  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4)), bp+1276)
 30650  
 30651  	if !(rc == TCL_OK) {
 30652  		goto __240
 30653  	}
 30654  	rc = createIncrblobChannel(tls,
 30655  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1276)), isReadonly1)
 30656  __240:
 30657  	;
 30658  	goto __3
 30659  
 30660  __26:
 30661  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30662  	goto __3
 30663  
 30664  __27:
 30665  	if !(objc != 2 && objc != 3) {
 30666  		goto __241
 30667  	}
 30668  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 30669  	return TCL_ERROR
 30670  __241:
 30671  	;
 30672  	if !(objc == 3) {
 30673  		goto __242
 30674  	}
 30675  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1284)
 30676  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 30677  		goto __243
 30678  	}
 30679  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30680  __243:
 30681  	;
 30682  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1284)) > 0) {
 30683  		goto __244
 30684  	}
 30685  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1284))+1))
 30686  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint32(*(*int32)(unsafe.Pointer(bp + 1284))))
 30687  	*(*int8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1284))))) = int8(0)
 30688  	goto __245
 30689  __244:
 30690  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 30691  __245:
 30692  	;
 30693  __242:
 30694  	;
 30695  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 30696  	goto __3
 30697  
 30698  __28:
 30699  	if !(objc != 2) {
 30700  		goto __246
 30701  	}
 30702  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30703  	return TCL_ERROR
 30704  __246:
 30705  	;
 30706  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30707  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 30708  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 30709  	goto __3
 30710  
 30711  __29:
 30712  	if !(objc == 2) {
 30713  		goto __247
 30714  	}
 30715  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30716  		goto __249
 30717  	}
 30718  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 30719  __249:
 30720  	;
 30721  	goto __248
 30722  __247:
 30723  	if !(objc == 4) {
 30724  		goto __250
 30725  	}
 30726  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1288)) {
 30727  		goto __252
 30728  	}
 30729  	return TCL_ERROR
 30730  __252:
 30731  	;
 30732  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30733  		goto __253
 30734  	}
 30735  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30736  __253:
 30737  	;
 30738  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1292)
 30739  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1292)) > 0) {
 30740  		goto __254
 30741  	}
 30742  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1292))+1))
 30743  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint32(*(*int32)(unsafe.Pointer(bp + 1292))+1))
 30744  	goto __255
 30745  __254:
 30746  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 30747  __255:
 30748  	;
 30749  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30750  		goto __256
 30751  	}
 30752  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30753  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1288)), *(*uintptr)(unsafe.Pointer(&struct {
 30754  		f func(*libc.TLS, uintptr) int32
 30755  	}{DbProgressHandler})), pDb)
 30756  	goto __257
 30757  __256:
 30758  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 30759  __257:
 30760  	;
 30761  	goto __251
 30762  __250:
 30763  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 30764  	return TCL_ERROR
 30765  __251:
 30766  	;
 30767  __248:
 30768  	;
 30769  	goto __3
 30770  
 30771  __30:
 30772  	if !(objc > 3) {
 30773  		goto __258
 30774  	}
 30775  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30776  	return TCL_ERROR
 30777  	goto __259
 30778  __258:
 30779  	if !(objc == 2) {
 30780  		goto __260
 30781  	}
 30782  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30783  		goto __262
 30784  	}
 30785  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 30786  __262:
 30787  	;
 30788  	goto __261
 30789  __260:
 30790  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30791  		goto __263
 30792  	}
 30793  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30794  __263:
 30795  	;
 30796  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1296)
 30797  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1296)) > 0) {
 30798  		goto __264
 30799  	}
 30800  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1296))+1))
 30801  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint32(*(*int32)(unsafe.Pointer(bp + 1296))+1))
 30802  	goto __265
 30803  __264:
 30804  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 30805  __265:
 30806  	;
 30807  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30808  		goto __266
 30809  	}
 30810  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30811  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30812  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 30813  	}{DbProfileHandler})), pDb)
 30814  	goto __267
 30815  __266:
 30816  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30817  __267:
 30818  	;
 30819  __261:
 30820  	;
 30821  __259:
 30822  	;
 30823  	goto __3
 30824  
 30825  __31:
 30826  	if !(objc != 3) {
 30827  		goto __268
 30828  	}
 30829  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 30830  	return TCL_ERROR
 30831  __268:
 30832  	;
 30833  	goto __3
 30834  
 30835  __32:
 30836  	nTimeout = 0
 30837  
 30838  	if !(objc == 3) {
 30839  		goto __269
 30840  	}
 30841  	zDestDb = ts + 85
 30842  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 30843  	goto __270
 30844  __269:
 30845  	if !(objc == 4) {
 30846  		goto __271
 30847  	}
 30848  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 30849  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 30850  	goto __272
 30851  __271:
 30852  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 30853  	return TCL_ERROR
 30854  __272:
 30855  	;
 30856  __270:
 30857  	;
 30858  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1300,
 30859  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 30860  	if !(rc != SQLITE_OK) {
 30861  		goto __273
 30862  	}
 30863  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 30864  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1300))), uintptr(0)))
 30865  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1300)))
 30866  	return TCL_ERROR
 30867  __273:
 30868  	;
 30869  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1300)), ts+85)
 30870  	if !(pBackup1 == uintptr(0)) {
 30871  		goto __274
 30872  	}
 30873  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 30874  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30875  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1300)))
 30876  	return TCL_ERROR
 30877  __274:
 30878  	;
 30879  __275:
 30880  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 30881  		rc == SQLITE_BUSY) {
 30882  		goto __276
 30883  	}
 30884  	if !(rc == SQLITE_BUSY) {
 30885  		goto __277
 30886  	}
 30887  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 30888  		goto __278
 30889  	}
 30890  	goto __276
 30891  __278:
 30892  	;
 30893  	sqlite3.Xsqlite3_sleep(tls, 100)
 30894  __277:
 30895  	;
 30896  	goto __275
 30897  __276:
 30898  	;
 30899  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 30900  	if !(rc == SQLITE_DONE) {
 30901  		goto __279
 30902  	}
 30903  	rc = TCL_OK
 30904  	goto __280
 30905  __279:
 30906  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 30907  		goto __281
 30908  	}
 30909  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 30910  		uintptr(0)))
 30911  	rc = TCL_ERROR
 30912  	goto __282
 30913  __281:
 30914  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 30915  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30916  	rc = TCL_ERROR
 30917  __282:
 30918  	;
 30919  __280:
 30920  	;
 30921  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1300)))
 30922  	goto __3
 30923  
 30924  __33:
 30925  	if objc >= 3 {
 30926  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 30927  	} else {
 30928  		zSchema1 = ts + 85
 30929  	}
 30930  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1304)) = int64(0)
 30931  	if !(objc != 2 && objc != 3) {
 30932  		goto __283
 30933  	}
 30934  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 30935  	rc = TCL_ERROR
 30936  	goto __284
 30937  __283:
 30938  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1304, uint32(SQLITE_SERIALIZE_NOCOPY))
 30939  	if !(pData1 != 0) {
 30940  		goto __285
 30941  	}
 30942  	needFree = 0
 30943  	goto __286
 30944  __285:
 30945  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1304, uint32(0))
 30946  	needFree = 1
 30947  __286:
 30948  	;
 30949  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1304)))))
 30950  	if !(needFree != 0) {
 30951  		goto __287
 30952  	}
 30953  	sqlite3.Xsqlite3_free(tls, pData1)
 30954  __287:
 30955  	;
 30956  __284:
 30957  	;
 30958  	goto __3
 30959  
 30960  __34:
 30961  	if !(objc != 3) {
 30962  		goto __288
 30963  	}
 30964  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 30965  	return TCL_ERROR
 30966  __288:
 30967  	;
 30968  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 30969  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 30970  		goto __289
 30971  	}
 30972  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 30973  	goto __290
 30974  __289:
 30975  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 30976  		goto __291
 30977  	}
 30978  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 30979  	goto __292
 30980  __291:
 30981  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 30982  		goto __293
 30983  	}
 30984  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 30985  	goto __294
 30986  __293:
 30987  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 30988  		goto __295
 30989  	}
 30990  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 30991  	goto __296
 30992  __295:
 30993  	tcl.XTcl_AppendResult(tls, interp,
 30994  		libc.VaList(bp+888, ts+13061,
 30995  			uintptr(0)))
 30996  	return TCL_ERROR
 30997  __296:
 30998  	;
 30999  __294:
 31000  	;
 31001  __292:
 31002  	;
 31003  __290:
 31004  	;
 31005  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 31006  	goto __3
 31007  
 31008  __35:
 31009  	if !(objc != 3) {
 31010  		goto __297
 31011  	}
 31012  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 31013  	return TCL_ERROR
 31014  __297:
 31015  	;
 31016  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1312) != 0) {
 31017  		goto __298
 31018  	}
 31019  	return TCL_ERROR
 31020  __298:
 31021  	;
 31022  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1312)))
 31023  	goto __3
 31024  
 31025  __36:
 31026  	if !(objc != 2) {
 31027  		goto __299
 31028  	}
 31029  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 31030  	return TCL_ERROR
 31031  __299:
 31032  	;
 31033  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 31034  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31035  	goto __3
 31036  
 31037  __37:
 31038  	if !(objc > 3) {
 31039  		goto __300
 31040  	}
 31041  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 31042  	return TCL_ERROR
 31043  	goto __301
 31044  __300:
 31045  	if !(objc == 2) {
 31046  		goto __302
 31047  	}
 31048  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31049  		goto __304
 31050  	}
 31051  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 31052  __304:
 31053  	;
 31054  	goto __303
 31055  __302:
 31056  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31057  		goto __305
 31058  	}
 31059  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 31060  __305:
 31061  	;
 31062  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1316)
 31063  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1316)) > 0) {
 31064  		goto __306
 31065  	}
 31066  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1316))+1))
 31067  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint32(*(*int32)(unsafe.Pointer(bp + 1316))+1))
 31068  	goto __307
 31069  __306:
 31070  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 31071  __307:
 31072  	;
 31073  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 31074  		goto __308
 31075  	}
 31076  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31077  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 31078  		f func(*libc.TLS, uintptr, uintptr)
 31079  	}{DbTraceHandler})), pDb)
 31080  	goto __309
 31081  __308:
 31082  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 31083  __309:
 31084  	;
 31085  __303:
 31086  	;
 31087  __301:
 31088  	;
 31089  	goto __3
 31090  
 31091  __38:
 31092  	if !(objc > 4) {
 31093  		goto __310
 31094  	}
 31095  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 31096  	return TCL_ERROR
 31097  	goto __311
 31098  __310:
 31099  	if !(objc == 2) {
 31100  		goto __312
 31101  	}
 31102  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31103  		goto __314
 31104  	}
 31105  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 31106  __314:
 31107  	;
 31108  	goto __313
 31109  __312:
 31110  	wMask = int64(0)
 31111  	if !(objc == 4) {
 31112  		goto __315
 31113  	}
 31114  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1320)) {
 31115  		goto __317
 31116  	}
 31117  	return TCL_ERROR
 31118  __317:
 31119  	;
 31120  	i4 = 0
 31121  __318:
 31122  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1320))) {
 31123  		goto __320
 31124  	}
 31125  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), i4, bp+1324)) {
 31126  		goto __321
 31127  	}
 31128  	return TCL_ERROR
 31129  __321:
 31130  	;
 31131  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1324)), uintptr(unsafe.Pointer(&TTYPE_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+13148, 0, bp+1328) != TCL_OK) {
 31132  		goto __322
 31133  	}
 31134  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 31135  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 31136  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1324)), bp+1332)) {
 31137  		goto __324
 31138  	}
 31139  __326:
 31140  	_objPtr3 = pError
 31141  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 31142  		goto __329
 31143  	}
 31144  	tcl.XTclFreeObj(tls, _objPtr3)
 31145  __329:
 31146  	;
 31147  	goto __327
 31148  __327:
 31149  	if 0 != 0 {
 31150  		goto __326
 31151  	}
 31152  	goto __328
 31153  __328:
 31154  	;
 31155  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1332))
 31156  	goto __325
 31157  __324:
 31158  	tcl.XTcl_SetObjResult(tls, interp, pError)
 31159  __330:
 31160  	_objPtr4 = pError
 31161  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 31162  		goto __333
 31163  	}
 31164  	tcl.XTclFreeObj(tls, _objPtr4)
 31165  __333:
 31166  	;
 31167  	goto __331
 31168  __331:
 31169  	if 0 != 0 {
 31170  		goto __330
 31171  	}
 31172  	goto __332
 31173  __332:
 31174  	;
 31175  	return TCL_ERROR
 31176  __325:
 31177  	;
 31178  	goto __323
 31179  __322:
 31180  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1328))) {
 31181  	case uint32(0):
 31182  		goto __335
 31183  	case uint32(1):
 31184  		goto __336
 31185  	case uint32(2):
 31186  		goto __337
 31187  	case uint32(3):
 31188  		goto __338
 31189  	}
 31190  	goto __334
 31191  __335:
 31192  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 31193  	goto __334
 31194  __336:
 31195  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 31196  	goto __334
 31197  __337:
 31198  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 31199  	goto __334
 31200  __338:
 31201  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 31202  	goto __334
 31203  __334:
 31204  	;
 31205  __323:
 31206  	;
 31207  	goto __319
 31208  __319:
 31209  	i4++
 31210  	goto __318
 31211  	goto __320
 31212  __320:
 31213  	;
 31214  	goto __316
 31215  __315:
 31216  	wMask = int64(SQLITE_TRACE_STMT)
 31217  __316:
 31218  	;
 31219  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31220  		goto __339
 31221  	}
 31222  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 31223  __339:
 31224  	;
 31225  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+1320)
 31226  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1320)) > 0) {
 31227  		goto __340
 31228  	}
 31229  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1320))+1))
 31230  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint32(*(*int32)(unsafe.Pointer(bp + 1320))+1))
 31231  	goto __341
 31232  __340:
 31233  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 31234  __341:
 31235  	;
 31236  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 31237  		goto __342
 31238  	}
 31239  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 31240  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 31241  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 31242  	}{DbTraceV2Handler})), pDb)
 31243  	goto __343
 31244  __342:
 31245  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 31246  __343:
 31247  	;
 31248  __313:
 31249  	;
 31250  __311:
 31251  	;
 31252  	goto __3
 31253  
 31254  __39:
 31255  	zBegin = ts + 13159
 31256  	if !(objc != 3 && objc != 4) {
 31257  		goto __344
 31258  	}
 31259  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 31260  	return TCL_ERROR
 31261  __344:
 31262  	;
 31263  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 31264  		goto __345
 31265  	}
 31266  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(unsafe.Pointer(&TTYPE_strs1)), int32(unsafe.Sizeof(uintptr(0))), ts+13200, 0, bp+1340) != 0) {
 31267  		goto __346
 31268  	}
 31269  	return TCL_ERROR
 31270  __346:
 31271  	;
 31272  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1340))) {
 31273  	case uint32(0):
 31274  		goto __348
 31275  	case uint32(1):
 31276  		goto __349
 31277  	case uint32(2):
 31278  		goto __350
 31279  	}
 31280  	goto __347
 31281  __348:
 31282  	;
 31283  	goto __347
 31284  __349:
 31285  	zBegin = ts + 13217
 31286  	goto __347
 31287  __350:
 31288  	zBegin = ts + 13233
 31289  	goto __347
 31290  __347:
 31291  	;
 31292  __345:
 31293  	;
 31294  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4))
 31295  
 31296  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 31297  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 31298  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 31299  	if !(rc != SQLITE_OK) {
 31300  		goto __351
 31301  	}
 31302  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31303  	return TCL_ERROR
 31304  __351:
 31305  	;
 31306  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 31307  
 31308  	addDatabaseRef(tls, pDb)
 31309  	if !(DbUseNre(tls) != 0) {
 31310  		goto __352
 31311  	}
 31312  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31313  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 31314  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1344)), uintptr(0), uintptr(0), uintptr(0))
 31315  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 31316  	goto __353
 31317  __352:
 31318  	rc = DbTransPostCmd(tls, bp+1344, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 31319  __353:
 31320  	;
 31321  	goto __3
 31322  
 31323  __40:
 31324  	if !(objc != 2 && objc != 3) {
 31325  		goto __354
 31326  	}
 31327  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31328  	rc = TCL_ERROR
 31329  	goto __355
 31330  __354:
 31331  	xNotify = uintptr(0)
 31332  	pNotifyArg = uintptr(0)
 31333  
 31334  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 31335  		goto __356
 31336  	}
 31337  __357:
 31338  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 31339  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 31340  		goto __360
 31341  	}
 31342  	tcl.XTclFreeObj(tls, _objPtr5)
 31343  __360:
 31344  	;
 31345  	goto __358
 31346  __358:
 31347  	if 0 != 0 {
 31348  		goto __357
 31349  	}
 31350  	goto __359
 31351  __359:
 31352  	;
 31353  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 31354  __356:
 31355  	;
 31356  	if !(objc == 3) {
 31357  		goto __361
 31358  	}
 31359  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 31360  		f func(*libc.TLS, uintptr, int32)
 31361  	}{DbUnlockNotify}))
 31362  	pNotifyArg = pDb
 31363  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*4))
 31364  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 31365  __361:
 31366  	;
 31367  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 31368  		goto __362
 31369  	}
 31370  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31371  	rc = TCL_ERROR
 31372  __362:
 31373  	;
 31374  __355:
 31375  	;
 31376  	goto __3
 31377  
 31378  __41:
 31379  	if !(objc < 3) {
 31380  		goto __363
 31381  	}
 31382  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 31383  __363:
 31384  	;
 31385  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(unsafe.Pointer(&azSub)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+1348) != 0) {
 31386  		goto __364
 31387  	}
 31388  	return TCL_ERROR
 31389  __364:
 31390  	;
 31391  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1348))) {
 31392  	case uint32(0):
 31393  		goto __366
 31394  
 31395  	case uint32(2):
 31396  		goto __367
 31397  
 31398  	case uint32(1):
 31399  		goto __368
 31400  
 31401  	case uint32(3):
 31402  		goto __369
 31403  	case uint32(4):
 31404  		goto __370
 31405  	}
 31406  	goto __365
 31407  __366:
 31408  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 31409  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 31410  	goto __365
 31411  
 31412  __367:
 31413  	if !(objc > 4) {
 31414  		goto __371
 31415  	}
 31416  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 31417  	return TCL_ERROR
 31418  __371:
 31419  	;
 31420  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31421  		if objc == 4 {
 31422  			return *(*uintptr)(unsafe.Pointer(objv + 3*4))
 31423  		}
 31424  		return uintptr(0)
 31425  	}(), pDb+56)
 31426  	goto __365
 31427  
 31428  __368:
 31429  	if !(objc != 3) {
 31430  		goto __372
 31431  	}
 31432  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 31433  	return TCL_ERROR
 31434  __372:
 31435  	;
 31436  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 31437  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 31438  	goto __365
 31439  
 31440  __369:
 31441  __370:
 31442  	if !(objc != 4) {
 31443  		goto __373
 31444  	}
 31445  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 31446  	return TCL_ERROR
 31447  __373:
 31448  	;
 31449  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+1352) != 0) {
 31450  		goto __374
 31451  	}
 31452  	return TCL_ERROR
 31453  __374:
 31454  	;
 31455  	if !(*(*int32)(unsafe.Pointer(bp + 1348)) == 4) {
 31456  		goto __375
 31457  	}
 31458  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1352)), bp+1356)
 31459  	goto __376
 31460  __375:
 31461  	;
 31462  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1352)), bp+1356)
 31463  __376:
 31464  	;
 31465  	if !(rc == SQLITE_OK) {
 31466  		goto __377
 31467  	}
 31468  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1356))), -1)
 31469  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 31470  	goto __378
 31471  __377:
 31472  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 31473  	return TCL_ERROR
 31474  __378:
 31475  	;
 31476  __365:
 31477  	;
 31478  	goto __3
 31479  
 31480  __42:
 31481  __43:
 31482  __44:
 31483  	ppHook = uintptr(0)
 31484  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 31485  		goto __379
 31486  	}
 31487  	ppHook = pDb + 64
 31488  __379:
 31489  	;
 31490  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 31491  		goto __380
 31492  	}
 31493  	ppHook = pDb + 52
 31494  __380:
 31495  	;
 31496  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 31497  		goto __381
 31498  	}
 31499  	ppHook = pDb + 60
 31500  __381:
 31501  	;
 31502  	if !(objc > 3) {
 31503  		goto __382
 31504  	}
 31505  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 31506  	return TCL_ERROR
 31507  __382:
 31508  	;
 31509  	DbHookCmd(tls, interp, pDb, func() uintptr {
 31510  		if objc == 3 {
 31511  			return *(*uintptr)(unsafe.Pointer(objv + 2*4))
 31512  		}
 31513  		return uintptr(0)
 31514  	}(), ppHook)
 31515  	goto __3
 31516  
 31517  __45:
 31518  	i5 = 2
 31519  __383:
 31520  	if !(i5 < objc) {
 31521  		goto __385
 31522  	}
 31523  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*4)))
 31524  
 31525  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 31526  		goto __386
 31527  	}
 31528  	i5++
 31529  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*4)), pDb+132) != 0) {
 31530  		goto __388
 31531  	}
 31532  	return TCL_ERROR
 31533  __388:
 31534  	;
 31535  	goto __387
 31536  __386:
 31537  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 31538  		goto __389
 31539  	}
 31540  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+1360, ts+9889,
 31541  		libc.VaList(bp+984, func() uintptr {
 31542  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 31543  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 31544  			}
 31545  			return uintptr(0)
 31546  		}()))
 31547  	tcl.XTcl_SetResult(tls, interp, bp+1360, uintptr(1))
 31548  	goto __390
 31549  __389:
 31550  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 31551  	return TCL_ERROR
 31552  __390:
 31553  	;
 31554  __387:
 31555  	;
 31556  	goto __384
 31557  __384:
 31558  	i5++
 31559  	goto __383
 31560  	goto __385
 31561  __385:
 31562  	;
 31563  	if !(i5 == 2) {
 31564  		goto __391
 31565  	}
 31566  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 31567  __391:
 31568  	;
 31569  	goto __3
 31570  
 31571  __3:
 31572  	;
 31573  	return rc
 31574  }
 31575  
 31576  type DbConfigChoices = struct {
 31577  	FzName uintptr
 31578  	Fop    int32
 31579  }
 31580  
 31581  var DB_strs = [43]uintptr{
 31582  	ts + 13351, ts + 13362, ts + 13369,
 31583  	ts + 13383, ts + 13388, ts + 13394,
 31584  	ts + 9490, ts + 13402, ts + 13410,
 31585  	ts + 13427, ts + 13439, ts + 13448,
 31586  	ts + 13455, ts + 13460, ts + 13472,
 31587  	ts + 13494, ts + 13504, ts + 4896,
 31588  	ts + 13516, ts + 13523, ts + 10868,
 31589  	ts + 13532, ts + 13542, ts + 13560,
 31590  	ts + 13570, ts + 13580, ts + 13590,
 31591  	ts + 9564, ts + 13598, ts + 13604,
 31592  	ts + 13612, ts + 13626, ts + 13636,
 31593  	ts + 13643, ts + 13651, ts + 13665,
 31594  	ts + 13671, ts + 13680, ts + 13692,
 31595  	ts + 13706, ts + 13718, ts + 13726,
 31596  	uintptr(0),
 31597  }
 31598  var aDbConfig = [16]DbConfigChoices{
 31599  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 31600  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 31601  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 31602  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 31603  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 31604  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 31605  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 31606  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 31607  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 31608  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 31609  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 31610  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 31611  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 31612  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 31613  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 31614  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 31615  }
 31616  var TTYPE_strs = [5]uintptr{
 31617  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 31618  }
 31619  var TTYPE_strs1 = [4]uintptr{
 31620  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 31621  }
 31622  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 31623  
 31624  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31625  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31626  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31627  	}{DbObjCmd})), cd, objc, objv)
 31628  }
 31629  
 31630  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 31631  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 31632  		ts+14017)
 31633  	return TCL_ERROR
 31634  }
 31635  
 31636  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31637  	bp := tls.Alloc(328)
 31638  	defer tls.Free(328)
 31639  
 31640  	var p uintptr
 31641  	var zArg uintptr
 31642  	var zErrMsg uintptr
 31643  	var i int32
 31644  	var zFile uintptr = uintptr(0)
 31645  	var zVfs uintptr = uintptr(0)
 31646  	var flags int32
 31647  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 31648  
 31649  	var rc int32
 31650  
 31651  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 31652  
 31653  	if objc == 1 {
 31654  		return sqliteCmdUsage(tls, interp, objv)
 31655  	}
 31656  	if objc == 2 {
 31657  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(0))
 31658  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 31659  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 31660  			return TCL_OK
 31661  		}
 31662  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 31663  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 31664  			return TCL_OK
 31665  		}
 31666  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 31667  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 31668  			return TCL_OK
 31669  		}
 31670  		if int32(*(*int8)(unsafe.Pointer(zArg))) == '-' {
 31671  			return sqliteCmdUsage(tls, interp, objv)
 31672  		}
 31673  	}
 31674  	for i = 2; i < objc; i++ {
 31675  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
 31676  		if int32(*(*int8)(unsafe.Pointer(zArg))) != '-' {
 31677  			if zFile != uintptr(0) {
 31678  				return sqliteCmdUsage(tls, interp, objv)
 31679  			}
 31680  			zFile = zArg
 31681  			continue
 31682  		}
 31683  		if i == objc-1 {
 31684  			return sqliteCmdUsage(tls, interp, objv)
 31685  		}
 31686  		i++
 31687  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 31688  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 31689  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
 31690  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 31691  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+88) != 0 {
 31692  				return TCL_ERROR
 31693  			}
 31694  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 31695  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 31696  				flags = flags | SQLITE_OPEN_READONLY
 31697  			} else {
 31698  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 31699  				flags = flags | SQLITE_OPEN_READWRITE
 31700  			}
 31701  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 31702  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+92) != 0 {
 31703  				return TCL_ERROR
 31704  			}
 31705  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 31706  				flags = flags | SQLITE_OPEN_CREATE
 31707  			} else {
 31708  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 31709  			}
 31710  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 31711  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+96) != 0 {
 31712  				return TCL_ERROR
 31713  			}
 31714  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 31715  				flags = flags | SQLITE_OPEN_NOFOLLOW
 31716  			} else {
 31717  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 31718  			}
 31719  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 31720  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+100) != 0 {
 31721  				return TCL_ERROR
 31722  			}
 31723  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 31724  				flags = flags | SQLITE_OPEN_NOMUTEX
 31725  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31726  			} else {
 31727  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31728  			}
 31729  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 31730  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+104) != 0 {
 31731  				return TCL_ERROR
 31732  			}
 31733  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 31734  				flags = flags | SQLITE_OPEN_FULLMUTEX
 31735  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31736  			} else {
 31737  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31738  			}
 31739  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 31740  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+108) != 0 {
 31741  				return TCL_ERROR
 31742  			}
 31743  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 31744  				flags = flags | SQLITE_OPEN_URI
 31745  			} else {
 31746  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 31747  			}
 31748  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 31749  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+112) != 0 {
 31750  				return TCL_ERROR
 31751  			}
 31752  		} else {
 31753  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 31754  			return TCL_ERROR
 31755  		}
 31756  	}
 31757  	zErrMsg = uintptr(0)
 31758  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 31759  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(SqliteDb{})))
 31760  	if zFile == uintptr(0) {
 31761  		zFile = ts + 584
 31762  	}
 31763  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31764  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+116)
 31765  	}
 31766  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 31767  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31768  		tcl.XTcl_DStringFree(tls, bp+116)
 31769  	}
 31770  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 31771  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 31772  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 31773  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 31774  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 31775  		}
 31776  	} else {
 31777  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 31778  	}
 31779  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 31780  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 31781  		tcl.XTcl_Free(tls, p)
 31782  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 31783  		return TCL_ERROR
 31784  	}
 31785  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 31786  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 31787  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 31788  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(0))
 31789  	if DbUseNre(tls) != 0 {
 31790  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31791  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31792  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 31793  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31794  		}{DbObjCmd})),
 31795  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31796  	} else {
 31797  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31798  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31799  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31800  	}
 31801  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 31802  	return TCL_OK
 31803  }
 31804  
 31805  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31806  	var rc int32
 31807  	if 1 != 0 {
 31808  		rc = TCL_OK
 31809  	} else {
 31810  		rc = TCL_ERROR
 31811  	}
 31812  	if rc == TCL_OK {
 31813  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 31814  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31815  		}{DbMain})), uintptr(0), uintptr(0))
 31816  
 31817  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 31818  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31819  		}{DbMain})), uintptr(0), uintptr(0))
 31820  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 31821  	}
 31822  	return rc
 31823  }
 31824  
 31825  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31826  	return Sqlite3_Init(tls, interp)
 31827  }
 31828  
 31829  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31830  	return TCL_OK
 31831  }
 31832  
 31833  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31834  	return TCL_OK
 31835  }
 31836  
 31837  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 31838  	return TCL_ERROR
 31839  }
 31840  
 31841  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31842  	return TCL_ERROR
 31843  }
 31844  
 31845  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31846  	return Sqlite3_Init(tls, interp)
 31847  }
 31848  
 31849  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31850  	return Sqlite3_Init(tls, interp)
 31851  }
 31852  
 31853  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31854  	return TCL_OK
 31855  }
 31856  
 31857  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31858  	return TCL_OK
 31859  }
 31860  
 31861  func tclsh_main_loop(tls *libc.TLS) uintptr {
 31862  	return uintptr(unsafe.Pointer(&zMainloop))
 31863  }
 31864  
 31865  var zMainloop = *(*[431]int8)(unsafe.Pointer(ts + 14289))
 31866  
 31867  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 31868  	bp := tls.Alloc(64)
 31869  	defer tls.Free(64)
 31870  
 31871  	var interp uintptr
 31872  	var i int32
 31873  	var zScript uintptr = uintptr(0)
 31874  
 31875  	if libc.Xgetenv(tls, ts+14720) != 0 {
 31876  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 31877  			libc.Xfprintf(tls, libc.Xstderr,
 31878  				ts+14739,
 31879  				libc.VaList(bp, libc.Xgetpid(tls)))
 31880  			libc.Xfgetc(tls, libc.Xstdin)
 31881  		} else {
 31882  			libc.Xraise(tls, SIGTRAP)
 31883  		}
 31884  	}
 31885  
 31886  	sqlite3.Xsqlite3_shutdown(tls)
 31887  
 31888  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31889  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 31890  	interp = tcl.XTcl_CreateInterp(tls)
 31891  	Sqlite3_Init(tls, interp)
 31892  
 31893  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 31894  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 31895  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 31896  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 31897  	for i = 1; i < argc; i++ {
 31898  		tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), TCL_GLOBAL_ONLY|TCL_LIST_ELEMENT|TCL_APPEND_VALUE)
 31899  	}
 31900  	zScript = sqlite3TestInit(tls, interp)
 31901  	if zScript == uintptr(0) {
 31902  		zScript = tclsh_main_loop(tls)
 31903  	}
 31904  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 31905  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 31906  		if zInfo == uintptr(0) {
 31907  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 31908  		}
 31909  		libc.Xfprintf(tls, libc.Xstderr, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 31910  		return 1
 31911  	}
 31912  	return 0
 31913  }
 31914  
 31915  type sqlite3_value = sqlite3_value1
 31916  
 31917  type sqlite3_context = sqlite3_context1
 31918  
 31919  type _IO_cookie_io_functions_t = struct {
 31920  	Fread  uintptr
 31921  	Fwrite uintptr
 31922  	Fseek  uintptr
 31923  	Fclose uintptr
 31924  }
 31925  
 31926  type cookie_io_functions_t = _IO_cookie_io_functions_t
 31927  type off64_t = int64
 31928  type fpos64_t = _G_fpos64_t
 31929  type ino64_t = uint64
 31930  
 31931  type fd_set1 = struct{ Ffds_bits [32]int32 }
 31932  
 31933  type blkcnt64_t = int64
 31934  type fsblkcnt64_t = uint64
 31935  type fsfilcnt64_t = uint64
 31936  
 31937  type comparison_fn_t = uintptr
 31938  type PreUpdate = PreUpdate1
 31939  
 31940  type Vdbe = Vdbe1
 31941  
 31942  type Mem = sqlite3_value1
 31943  
 31944  type Op = VdbeOp1
 31945  
 31946  type Bool = uint32
 31947  
 31948  type AuxData1 = struct {
 31949  	FiAuxOp     int32
 31950  	FiAuxArg    int32
 31951  	FpAux       uintptr
 31952  	FxDeleteAux uintptr
 31953  	FpNextAux   uintptr
 31954  }
 31955  
 31956  type AuxData = AuxData1
 31957  
 31958  type VdbeCursor1 = struct {
 31959  	FeCurType       u8
 31960  	FiDb            i8
 31961  	FnullRow        u8
 31962  	FdeferredMoveto u8
 31963  	FisTable        u8
 31964  	F__ccgo_pad1    [3]byte
 31965  	FisEphemeral    uint8
 31966  	F__ccgo_pad2    [1]byte
 31967  	FseekHit        u16
 31968  	Fub             struct{ FpBtx uintptr }
 31969  	FseqCount       i64
 31970  	FcacheStatus    u32
 31971  	FseekResult     int32
 31972  	FpAltCursor     uintptr
 31973  	Fuc             struct{ FpCursor uintptr }
 31974  	FpKeyInfo       uintptr
 31975  	FiHdrOffset     u32
 31976  	FpgnoRoot       Pgno
 31977  	FnField         i16
 31978  	FnHdrParsed     u16
 31979  	FmovetoTarget   i64
 31980  	FaOffset        uintptr
 31981  	FaRow           uintptr
 31982  	FpayloadSize    u32
 31983  	FszRow          u32
 31984  	FaType          [1]u32
 31985  }
 31986  
 31987  type VdbeCursor = VdbeCursor1
 31988  
 31989  type VdbeFrame1 = struct {
 31990  	Fv         uintptr
 31991  	FpParent   uintptr
 31992  	FaOp       uintptr
 31993  	FanExec    uintptr
 31994  	FaMem      uintptr
 31995  	FapCsr     uintptr
 31996  	FaOnce     uintptr
 31997  	Ftoken     uintptr
 31998  	FlastRowid i64
 31999  	FpAuxData  uintptr
 32000  	FnCursor   int32
 32001  	Fpc        int32
 32002  	FnOp       int32
 32003  	FnMem      int32
 32004  	FnChildMem int32
 32005  	FnChildCsr int32
 32006  	FnChange   i64
 32007  	FnDbChange i64
 32008  }
 32009  
 32010  type VdbeFrame = VdbeFrame1
 32011  
 32012  type MemValue = struct{ Fr float64 }
 32013  
 32014  type bft = uint32
 32015  
 32016  type ScanStatus1 = struct {
 32017  	FaddrExplain int32
 32018  	FaddrLoop    int32
 32019  	FaddrVisit   int32
 32020  	FiSelectID   int32
 32021  	FnEst        LogEst
 32022  	F__ccgo_pad1 [2]byte
 32023  	FzName       uintptr
 32024  }
 32025  
 32026  type ScanStatus = ScanStatus1
 32027  
 32028  type DblquoteStr1 = struct {
 32029  	FpNextStr uintptr
 32030  	Fz        [8]int8
 32031  }
 32032  
 32033  type DblquoteStr = DblquoteStr1
 32034  
 32035  type ValueList1 = struct {
 32036  	FpCsr uintptr
 32037  	FpOut uintptr
 32038  }
 32039  
 32040  type ValueList = ValueList1
 32041  
 32042  func testHexToInt(tls *libc.TLS, h int32) int32 {
 32043  	if h >= '0' && h <= '9' {
 32044  		return h - '0'
 32045  	} else if h >= 'a' && h <= 'f' {
 32046  		return h - 'a' + 10
 32047  	} else {
 32048  		return h - 'A' + 10
 32049  	}
 32050  	return int32(0)
 32051  }
 32052  
 32053  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 32054  	bp := tls.Alloc(16)
 32055  	defer tls.Free(16)
 32056  
 32057  	if int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 'x' {
 32058  		z += uintptr(2)
 32059  	}
 32060  	*(*u64)(unsafe.Pointer(bp + 4)) = uint64(0)
 32061  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 32062  		*(*u64)(unsafe.Pointer(bp + 4)) = *(*u64)(unsafe.Pointer(bp + 4))<<4 + u64(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(z)))))
 32063  		z++
 32064  	}
 32065  	if uint32(unsafe.Sizeof(uintptr(0))) == uint32(unsafe.Sizeof(u64(0))) {
 32066  		libc.Xmemcpy(tls, bp, bp+4, uint32(unsafe.Sizeof(uintptr(0))))
 32067  	} else {
 32068  		*(*u32)(unsafe.Pointer(bp + 12)) = u32(*(*u64)(unsafe.Pointer(bp + 4)))
 32069  		libc.Xmemcpy(tls, bp, bp+12, uint32(unsafe.Sizeof(uintptr(0))))
 32070  	}
 32071  	return *(*uintptr)(unsafe.Pointer(bp))
 32072  }
 32073  
 32074  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 32075  	bp := tls.Alloc(180)
 32076  	defer tls.Free(180)
 32077  
 32078  	var p uintptr
 32079  
 32080  	if objc != 2 {
 32081  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 32082  		return TCL_ERROR
 32083  	}
 32084  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0) {
 32085  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 32086  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 32087  		return TCL_ERROR
 32088  	}
 32089  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 32090  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+80, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 32091  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 32092  	return TCL_OK
 32093  }
 32094  
 32095  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 32096  	bp := tls.Alloc(32)
 32097  	defer tls.Free(32)
 32098  
 32099  	var p uintptr
 32100  
 32101  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 32102  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 32103  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 32104  	} else {
 32105  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 32106  	}
 32107  	return TCL_OK
 32108  }
 32109  
 32110  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 32111  	bp := tls.Alloc(248)
 32112  	defer tls.Free(248)
 32113  
 32114  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 32115  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 32116  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 32117  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+48,
 32118  			ts+14879,
 32119  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 32120  		tcl.XTcl_ResetResult(tls, interp)
 32121  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 32122  		return 1
 32123  	}
 32124  	return 0
 32125  }
 32126  
 32127  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 32128  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 32129  	return TCL_OK
 32130  }
 32131  
 32132  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 32133  	bp := tls.Alloc(8)
 32134  	defer tls.Free(8)
 32135  
 32136  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 32137  	return TCL_OK
 32138  }
 32139  
 32140  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 32141  	var str uintptr = pArg
 32142  	var i int32
 32143  
 32144  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 32145  		for i = 0; i < argc; i++ {
 32146  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32147  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*4)) != 0 {
 32148  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*4))
 32149  				}
 32150  				return ts + 5846
 32151  			}())
 32152  		}
 32153  	}
 32154  	for i = 0; i < argc; i++ {
 32155  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 32156  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)) != 0 {
 32157  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))
 32158  			}
 32159  			return ts + 5846
 32160  		}())
 32161  	}
 32162  	return 0
 32163  }
 32164  
 32165  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32166  	return TCL_OK
 32167  }
 32168  
 32169  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32170  	var res int32 = 0
 32171  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 32172  		res = 1
 32173  	}
 32174  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 32175  	return TCL_OK
 32176  }
 32177  
 32178  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32179  	bp := tls.Alloc(298)
 32180  	defer tls.Free(298)
 32181  
 32182  	var rc int32
 32183  	*(*uintptr)(unsafe.Pointer(bp + 264)) = uintptr(0)
 32184  	var zSql uintptr
 32185  
 32186  	if argc != 4 {
 32187  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32188  			ts+14975, 0))
 32189  		return TCL_ERROR
 32190  	}
 32191  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+48) != 0 {
 32192  		return TCL_ERROR
 32193  	}
 32194  	tcl.XTcl_DStringInit(tls, bp+52)
 32195  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*4))))
 32196  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32197  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32198  	}{exec_printf_cb})), bp+52, bp+264)
 32199  	sqlite3.Xsqlite3_free(tls, zSql)
 32200  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+268, ts+1333, libc.VaList(bp+40, rc))
 32201  	tcl.XTcl_AppendElement(tls, interp, bp+268)
 32202  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32203  		if rc == SQLITE_OK {
 32204  			return (*Tcl_DString)(unsafe.Pointer(bp + 52)).Fstring
 32205  		}
 32206  		return *(*uintptr)(unsafe.Pointer(bp + 264))
 32207  	}())
 32208  	tcl.XTcl_DStringFree(tls, bp+52)
 32209  	if *(*uintptr)(unsafe.Pointer(bp + 264)) != 0 {
 32210  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 264)))
 32211  	}
 32212  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32213  		return TCL_ERROR
 32214  	}
 32215  	return TCL_OK
 32216  }
 32217  
 32218  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32219  	bp := tls.Alloc(794)
 32220  	defer tls.Free(794)
 32221  
 32222  	var rc int32
 32223  	var i int32
 32224  	var j int32
 32225  	*(*uintptr)(unsafe.Pointer(bp + 760)) = uintptr(0)
 32226  	var zHex uintptr
 32227  
 32228  	if argc != 3 {
 32229  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32230  			ts+14993, 0))
 32231  		return TCL_ERROR
 32232  	}
 32233  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+40) != 0 {
 32234  		return TCL_ERROR
 32235  	}
 32236  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*4))
 32237  	i = libc.AssignInt32(&j, 0)
 32238  __1:
 32239  	if !(uint32(i) < uint32(unsafe.Sizeof([501]int8{}))-uint32(1) && *(*int8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 32240  		goto __3
 32241  	}
 32242  	{
 32243  		if int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 32244  			*(*int8)(unsafe.Pointer(bp + 44 + uintptr(i))) = int8(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+1)))))<<4 + testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+2))))))
 32245  			j = j + 2
 32246  		} else {
 32247  			*(*int8)(unsafe.Pointer(bp + 44 + uintptr(i))) = *(*int8)(unsafe.Pointer(zHex + uintptr(j)))
 32248  		}
 32249  
 32250  	}
 32251  	goto __2
 32252  __2:
 32253  	i++
 32254  	j++
 32255  	goto __1
 32256  	goto __3
 32257  __3:
 32258  	;
 32259  	*(*int8)(unsafe.Pointer(bp + 44 + uintptr(i))) = int8(0)
 32260  	tcl.XTcl_DStringInit(tls, bp+548)
 32261  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+44, *(*uintptr)(unsafe.Pointer(&struct {
 32262  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32263  	}{exec_printf_cb})), bp+548, bp+760)
 32264  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+764, ts+1333, libc.VaList(bp+32, rc))
 32265  	tcl.XTcl_AppendElement(tls, interp, bp+764)
 32266  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32267  		if rc == SQLITE_OK {
 32268  			return (*Tcl_DString)(unsafe.Pointer(bp + 548)).Fstring
 32269  		}
 32270  		return *(*uintptr)(unsafe.Pointer(bp + 760))
 32271  	}())
 32272  	tcl.XTcl_DStringFree(tls, bp+548)
 32273  	if *(*uintptr)(unsafe.Pointer(bp + 760)) != 0 {
 32274  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 760)))
 32275  	}
 32276  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 32277  		return TCL_ERROR
 32278  	}
 32279  	return TCL_OK
 32280  }
 32281  
 32282  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32283  	bp := tls.Alloc(36)
 32284  	defer tls.Free(36)
 32285  
 32286  	if argc != 2 {
 32287  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32288  			ts+15001, 0))
 32289  		return TCL_ERROR
 32290  	}
 32291  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32292  		return TCL_ERROR
 32293  	}
 32294  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32295  	return TCL_OK
 32296  }
 32297  
 32298  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32299  	bp := tls.Alloc(36)
 32300  	defer tls.Free(36)
 32301  
 32302  	if argc != 2 {
 32303  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32304  			ts+15001, 0))
 32305  		return TCL_ERROR
 32306  	}
 32307  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32308  		return TCL_ERROR
 32309  	}
 32310  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32311  	return TCL_OK
 32312  }
 32313  
 32314  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32315  	bp := tls.Alloc(298)
 32316  	defer tls.Free(298)
 32317  
 32318  	var rc int32
 32319  	*(*uintptr)(unsafe.Pointer(bp + 264)) = uintptr(0)
 32320  	var zSql uintptr
 32321  	var i int32
 32322  	var j int32
 32323  
 32324  	if argc != 3 {
 32325  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32326  			ts+15005, 0))
 32327  		return TCL_ERROR
 32328  	}
 32329  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+48) != 0 {
 32330  		return TCL_ERROR
 32331  	}
 32332  	tcl.XTcl_DStringInit(tls, bp+52)
 32333  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 32334  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 32335  		if int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 32336  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i+1)))))<<4 + testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i+2))))))
 32337  			i = i + 3
 32338  		} else {
 32339  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 32340  		}
 32341  	}
 32342  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 32343  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 32344  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32345  	}{exec_printf_cb})), bp+52, bp+264)
 32346  	sqlite3.Xsqlite3_free(tls, zSql)
 32347  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+268, ts+1333, libc.VaList(bp+40, rc))
 32348  	tcl.XTcl_AppendElement(tls, interp, bp+268)
 32349  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32350  		if rc == SQLITE_OK {
 32351  			return (*Tcl_DString)(unsafe.Pointer(bp + 52)).Fstring
 32352  		}
 32353  		return *(*uintptr)(unsafe.Pointer(bp + 264))
 32354  	}())
 32355  	tcl.XTcl_DStringFree(tls, bp+52)
 32356  	if *(*uintptr)(unsafe.Pointer(bp + 264)) != 0 {
 32357  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 264)))
 32358  	}
 32359  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 32360  		return TCL_ERROR
 32361  	}
 32362  	return TCL_OK
 32363  }
 32364  
 32365  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32366  	bp := tls.Alloc(40)
 32367  	defer tls.Free(40)
 32368  
 32369  	var rc int32
 32370  	*(*uintptr)(unsafe.Pointer(bp + 36)) = uintptr(0)
 32371  	if argc != 3 {
 32372  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32373  			ts+15005, 0))
 32374  		return TCL_ERROR
 32375  	}
 32376  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32377  		return TCL_ERROR
 32378  	}
 32379  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*4)), uintptr(0), uintptr(0), bp+36)
 32380  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32381  		return TCL_ERROR
 32382  	}
 32383  	return TCL_OK
 32384  }
 32385  
 32386  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32387  	bp := tls.Alloc(40)
 32388  	defer tls.Free(40)
 32389  
 32390  	var zResult uintptr = uintptr(0)
 32391  	var i int32
 32392  
 32393  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 32394  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*4)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
 32395  	}
 32396  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 32397  	sqlite3.Xsqlite3_free(tls, zResult)
 32398  	return TCL_OK
 32399  }
 32400  
 32401  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32402  	bp := tls.Alloc(20)
 32403  	defer tls.Free(20)
 32404  
 32405  	var zStr uintptr
 32406  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 32407  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+16))
 32408  	sqlite3.Xsqlite3_free(tls, zStr)
 32409  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 32410  	return TCL_OK
 32411  }
 32412  
 32413  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32414  	bp := tls.Alloc(124)
 32415  	defer tls.Free(124)
 32416  
 32417  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 32418  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*4))
 32419  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 32420  	if uint32(n) > uint32(unsafe.Sizeof([100]int8{})) {
 32421  		n = int32(unsafe.Sizeof([100]int8{}))
 32422  	}
 32423  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+15025, 0)
 32424  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 32425  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 32426  	return TCL_OK
 32427  }
 32428  
 32429  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32430  	bp := tls.Alloc(330)
 32431  	defer tls.Free(330)
 32432  
 32433  	var rc int32
 32434  	*(*uintptr)(unsafe.Pointer(bp + 288)) = uintptr(0)
 32435  	*(*int32)(unsafe.Pointer(bp + 292)) = 0
 32436  	*(*int32)(unsafe.Pointer(bp + 296)) = 0
 32437  
 32438  	var i int32
 32439  
 32440  	var zSql uintptr
 32441  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 32442  	if argc == 5 {
 32443  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*4)), bp+64) != 0 {
 32444  			return TCL_ERROR
 32445  		}
 32446  	}
 32447  	if argc != 4 && argc != 5 {
 32448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32449  			ts+15052, 0))
 32450  		return TCL_ERROR
 32451  	}
 32452  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+68) != 0 {
 32453  		return TCL_ERROR
 32454  	}
 32455  	tcl.XTcl_DStringInit(tls, bp+72)
 32456  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*4))))
 32457  	if argc == 5 {
 32458  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 68)), zSql, bp+284, uintptr(0), uintptr(0), bp+288)
 32459  	} else {
 32460  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 68)), zSql, bp+284, bp+292, bp+296, bp+288)
 32461  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 292)) + 1) * *(*int32)(unsafe.Pointer(bp + 296))
 32462  	}
 32463  	sqlite3.Xsqlite3_free(tls, zSql)
 32464  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+300, ts+1333, libc.VaList(bp+40, rc))
 32465  	tcl.XTcl_AppendElement(tls, interp, bp+300)
 32466  	if rc == SQLITE_OK {
 32467  		if argc == 4 {
 32468  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+300, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 292))))
 32469  			tcl.XTcl_AppendElement(tls, interp, bp+300)
 32470  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+300, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 296))))
 32471  			tcl.XTcl_AppendElement(tls, interp, bp+300)
 32472  		}
 32473  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 32474  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 32475  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 284)) + uintptr(i)*4)) != 0 {
 32476  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 284)) + uintptr(i)*4))
 32477  				}
 32478  				return ts + 5846
 32479  			}())
 32480  		}
 32481  	} else {
 32482  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 288)))
 32483  	}
 32484  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 284)))
 32485  	if *(*uintptr)(unsafe.Pointer(bp + 288)) != 0 {
 32486  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 288)))
 32487  	}
 32488  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 68)), rc) != 0 {
 32489  		return TCL_ERROR
 32490  	}
 32491  	return TCL_OK
 32492  }
 32493  
 32494  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32495  	bp := tls.Alloc(90)
 32496  	defer tls.Free(90)
 32497  
 32498  	if argc != 2 {
 32499  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 32500  		return TCL_ERROR
 32501  	}
 32502  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+56) != 0 {
 32503  		return TCL_ERROR
 32504  	}
 32505  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+60, ts+6325, libc.VaList(bp+32, sqlite3.Xsqlite3_last_insert_rowid(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 32506  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 32507  	return SQLITE_OK
 32508  }
 32509  
 32510  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32511  	return TCL_OK
 32512  }
 32513  
 32514  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32515  	return TCL_OK
 32516  }
 32517  
 32518  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32519  	bp := tls.Alloc(36)
 32520  	defer tls.Free(36)
 32521  
 32522  	var rc int32
 32523  	if argc != 2 {
 32524  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32525  			ts+15083, 0))
 32526  		return TCL_ERROR
 32527  	}
 32528  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32529  		return TCL_ERROR
 32530  	}
 32531  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32532  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32533  	return TCL_OK
 32534  }
 32535  
 32536  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32537  	bp := tls.Alloc(36)
 32538  	defer tls.Free(36)
 32539  
 32540  	var rc int32
 32541  	if argc != 2 {
 32542  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32543  			ts+15083, 0))
 32544  		return TCL_ERROR
 32545  	}
 32546  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32547  		return TCL_ERROR
 32548  	}
 32549  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32550  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32551  	return TCL_OK
 32552  }
 32553  
 32554  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32555  	var i int32
 32556  	for i = 0; i < argc; i++ {
 32557  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))) {
 32558  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 32559  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))),
 32560  				n, libc.UintptrFromInt32(-1))
 32561  			break
 32562  		}
 32563  	}
 32564  }
 32565  
 32566  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32567  	bp := tls.Alloc(208)
 32568  	defer tls.Free(208)
 32569  
 32570  	var z uintptr
 32571  	var i int32
 32572  
 32573  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32574  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([200]int8{}))/uint32(2)-uint32(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 32575  		sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof([200]int8{}))-uint32(i*2)), bp+8+uintptr(i*2), ts+6337, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))))
 32576  	}
 32577  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = int8(0)
 32578  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32579  }
 32580  
 32581  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 32582  	bp := tls.Alloc(408)
 32583  	defer tls.Free(408)
 32584  
 32585  	var z uintptr
 32586  	var i int32
 32587  
 32588  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32589  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([400]int8{}))/uint32(4)-uint32(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 32590  		sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof([400]int8{}))-uint32(i*4)), bp+8+uintptr(i*4), ts+15094, libc.VaList(bp, int32(*(*uint16)(unsafe.Pointer(z + uintptr(i)*2)))&0xff))
 32591  	}
 32592  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = int8(0)
 32593  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 32594  }
 32595  
 32596  type dstr = struct {
 32597  	FnAlloc int32
 32598  	FnUsed  int32
 32599  	Fz      uintptr
 32600  }
 32601  
 32602  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 32603  	var n int32 = int32(libc.Xstrlen(tls, z))
 32604  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 32605  		var zNew uintptr
 32606  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 32607  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 32608  		if zNew == uintptr(0) {
 32609  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 32610  			libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(dstr{})))
 32611  			return
 32612  		}
 32613  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 32614  	}
 32615  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 32616  		*(*int8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = int8(divider)
 32617  	}
 32618  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint32(n+1))
 32619  	*(*int32)(unsafe.Pointer(p + 4)) += n
 32620  }
 32621  
 32622  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 32623  	var p uintptr = pData
 32624  	var i int32
 32625  	for i = 0; i < argc; i++ {
 32626  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)) == uintptr(0) {
 32627  			dstrAppend(tls, p, ts+5846, ' ')
 32628  		} else {
 32629  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), ' ')
 32630  		}
 32631  	}
 32632  	return 0
 32633  }
 32634  
 32635  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32636  	bp := tls.Alloc(12)
 32637  	defer tls.Free(12)
 32638  
 32639  	libc.Xmemset(tls, bp, 0, uint32(unsafe.Sizeof(dstr{})))
 32640  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 32641  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 32642  		*(*uintptr)(unsafe.Pointer(&struct {
 32643  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32644  		}{execFuncCallback})), bp, uintptr(0))
 32645  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 32646  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 32647  }
 32648  
 32649  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32650  	var nText int32
 32651  	var zText1 uintptr
 32652  	var zText2 uintptr
 32653  	var zText3 uintptr
 32654  
 32655  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32656  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32657  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32658  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32659  
 32660  	if zText1 != zText2 || zText2 != zText3 {
 32661  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 32662  	} else {
 32663  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 32664  		libc.Xmemcpy(tls, zCopy, zText1, uint32(nText))
 32665  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 32666  	}
 32667  }
 32668  
 32669  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32670  	var p1 uintptr
 32671  	var p2 uintptr
 32672  	var zCmd uintptr
 32673  	if argc != 4 {
 32674  		return
 32675  	}
 32676  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 32677  	if zCmd == uintptr(0) {
 32678  		return
 32679  	}
 32680  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32681  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32682  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32683  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32684  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32685  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32686  	} else {
 32687  		return
 32688  	}
 32689  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 32690  	if zCmd == uintptr(0) {
 32691  		return
 32692  	}
 32693  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 32694  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32695  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 32696  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32697  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 32698  	} else {
 32699  		return
 32700  	}
 32701  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 32702  	if zCmd == uintptr(0) {
 32703  		return
 32704  	}
 32705  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32706  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32707  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32708  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32709  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32710  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32711  	} else {
 32712  		return
 32713  	}
 32714  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 32715  }
 32716  
 32717  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32718  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 32719  }
 32720  
 32721  var cnt int32 = 0
 32722  
 32723  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32724  	bp := tls.Alloc(8)
 32725  	defer tls.Free(8)
 32726  
 32727  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32728  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 32729  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 32730  }
 32731  
 32732  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32733  	bp := tls.Alloc(36)
 32734  	defer tls.Free(36)
 32735  
 32736  	var rc int32
 32737  
 32738  	if argc != 2 {
 32739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32740  			ts+15078, 0))
 32741  		return TCL_ERROR
 32742  	}
 32743  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32744  		return TCL_ERROR
 32745  	}
 32746  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 32747  		*(*uintptr)(unsafe.Pointer(&struct {
 32748  			f func(*libc.TLS, uintptr, int32, uintptr)
 32749  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 32750  	if rc == SQLITE_OK {
 32751  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32752  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32753  				f func(*libc.TLS, uintptr, int32, uintptr)
 32754  			}{hex8Func})), uintptr(0), uintptr(0))
 32755  	}
 32756  	if rc == SQLITE_OK {
 32757  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 32758  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32759  				f func(*libc.TLS, uintptr, int32, uintptr)
 32760  			}{hex16Func})), uintptr(0), uintptr(0))
 32761  	}
 32762  	if rc == SQLITE_OK {
 32763  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 32764  			*(*uintptr)(unsafe.Pointer(&struct {
 32765  				f func(*libc.TLS, uintptr, int32, uintptr)
 32766  			}{tkt2213Function})), uintptr(0), uintptr(0))
 32767  	}
 32768  	if rc == SQLITE_OK {
 32769  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 32770  			*(*uintptr)(unsafe.Pointer(&struct {
 32771  				f func(*libc.TLS, uintptr, int32, uintptr)
 32772  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 32773  	}
 32774  
 32775  	if rc == SQLITE_OK {
 32776  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 32777  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32778  				f func(*libc.TLS, uintptr, int32, uintptr)
 32779  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32780  	}
 32781  	if rc == SQLITE_OK {
 32782  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32783  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32784  				f func(*libc.TLS, uintptr, int32, uintptr)
 32785  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32786  	}
 32787  
 32788  	if rc == SQLITE_OK {
 32789  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 32790  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32791  				f func(*libc.TLS, uintptr, int32, uintptr)
 32792  			}{intrealFunction})), uintptr(0), uintptr(0))
 32793  	}
 32794  
 32795  	if rc == SQLITE_OK {
 32796  		var zUtf16 uintptr
 32797  		var pVal uintptr
 32798  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32799  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32800  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 32801  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 32802  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 32803  			rc = SQLITE_NOMEM
 32804  		} else {
 32805  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 32806  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 32807  					f func(*libc.TLS, uintptr, int32, uintptr)
 32808  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 32809  		}
 32810  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 32811  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32812  	}
 32813  
 32814  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32815  		return TCL_ERROR
 32816  	}
 32817  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32818  	return TCL_OK
 32819  }
 32820  
 32821  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32822  	bp := tls.Alloc(36)
 32823  	defer tls.Free(36)
 32824  
 32825  	if argc < 2 {
 32826  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32827  			ts+15078, 0))
 32828  		return TCL_ERROR
 32829  	}
 32830  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32831  		return TCL_ERROR
 32832  	}
 32833  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 32834  		if argc > 2 {
 32835  			return argv + uintptr(2)*4
 32836  		}
 32837  		return uintptr(0)
 32838  	}())
 32839  	return TCL_OK
 32840  }
 32841  
 32842  type t1CountCtx1 = struct{ Fn int32 }
 32843  
 32844  type t1CountCtx = t1CountCtx1
 32845  
 32846  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32847  	bp := tls.Alloc(9)
 32848  	defer tls.Free(9)
 32849  
 32850  	var p uintptr
 32851  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32852  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 32853  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 32854  	}
 32855  	if argc > 0 {
 32856  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32857  		if v == 40 {
 32858  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 32859  		} else if v == 41 {
 32860  			*(*[9]int8)(unsafe.Pointer(bp)) = [9]int8{int8(0), int8(0x61), int8(0), int8(0x62), int8(0), int8(0x63), int8(0), int8(0), int8(0)}
 32861  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 32862  		}
 32863  	}
 32864  }
 32865  
 32866  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 32867  	var p uintptr
 32868  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32869  	if p != 0 {
 32870  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 32871  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 32872  		} else {
 32873  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 32874  				if p != 0 {
 32875  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 32876  				}
 32877  				return 0
 32878  			}())
 32879  		}
 32880  	}
 32881  }
 32882  
 32883  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32884  }
 32885  
 32886  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 32887  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 32888  }
 32889  
 32890  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32891  	bp := tls.Alloc(36)
 32892  	defer tls.Free(36)
 32893  
 32894  	var rc int32
 32895  	if argc != 2 {
 32896  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32897  			ts+15083, 0))
 32898  		return TCL_ERROR
 32899  	}
 32900  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 32901  		return TCL_ERROR
 32902  	}
 32903  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 32904  		*(*uintptr)(unsafe.Pointer(&struct {
 32905  			f func(*libc.TLS, uintptr, int32, uintptr)
 32906  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32907  	if rc == SQLITE_OK {
 32908  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 32909  			*(*uintptr)(unsafe.Pointer(&struct {
 32910  				f func(*libc.TLS, uintptr, int32, uintptr)
 32911  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32912  	}
 32913  	if rc == SQLITE_OK {
 32914  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 32915  			*(*uintptr)(unsafe.Pointer(&struct {
 32916  				f func(*libc.TLS, uintptr, int32, uintptr)
 32917  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 32918  	}
 32919  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32920  		return TCL_ERROR
 32921  	}
 32922  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32923  	return TCL_OK
 32924  }
 32925  
 32926  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32927  	bp := tls.Alloc(40)
 32928  	defer tls.Free(40)
 32929  
 32930  	if argc != 2 {
 32931  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32932  			ts+15307, 0))
 32933  		return TCL_ERROR
 32934  	}
 32935  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 32936  	return TCL_OK
 32937  }
 32938  
 32939  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32940  	bp := tls.Alloc(84)
 32941  	defer tls.Free(84)
 32942  
 32943  	var i int32
 32944  	var z uintptr
 32945  	if argc != 5 {
 32946  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32947  			ts+15314, 0))
 32948  		return TCL_ERROR
 32949  	}
 32950  	for i = 2; i < 5; i++ {
 32951  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+72+uintptr(i-2)*4) != 0 {
 32952  			return TCL_ERROR
 32953  		}
 32954  	}
 32955  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), *(*int32)(unsafe.Pointer(bp + 72 + 2*4))))
 32956  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32957  	sqlite3.Xsqlite3_free(tls, z)
 32958  	return TCL_OK
 32959  }
 32960  
 32961  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32962  	bp := tls.Alloc(112)
 32963  	defer tls.Free(112)
 32964  
 32965  	var i int32
 32966  
 32967  	var z uintptr
 32968  	if argc != 5 {
 32969  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32970  			ts+15314, 0))
 32971  		return TCL_ERROR
 32972  	}
 32973  	for i = 2; i < 5; i++ {
 32974  		if sqlite3.Xsqlite3Atoi64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+88+uintptr(i-2)*8, sqlite3.Xsqlite3Strlen30(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))), uint8(SQLITE_UTF8)) != 0 {
 32975  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 32976  			return TCL_ERROR
 32977  		}
 32978  	}
 32979  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+48, *(*sqlite_int64)(unsafe.Pointer(bp + 88)), *(*sqlite_int64)(unsafe.Pointer(bp + 88 + 1*8)), *(*sqlite_int64)(unsafe.Pointer(bp + 88 + 2*8))))
 32980  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32981  	sqlite3.Xsqlite3_free(tls, z)
 32982  	return TCL_OK
 32983  }
 32984  
 32985  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32986  	bp := tls.Alloc(96)
 32987  	defer tls.Free(96)
 32988  
 32989  	var i int32
 32990  
 32991  	var z uintptr
 32992  	if argc != 5 {
 32993  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32994  			ts+15314, 0))
 32995  		return TCL_ERROR
 32996  	}
 32997  	for i = 2; i < 5; i++ {
 32998  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+72+uintptr(i-2)*4) != 0 {
 32999  			return TCL_ERROR
 33000  		}
 33001  		*(*int32)(unsafe.Pointer(bp + 84 + uintptr(i-2)*4)) = *(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4))
 33002  		*(*int32)(unsafe.Pointer(bp + 84 + uintptr(i-2)*4)) &= libc.Int32FromUint64(uint64(1)<<(uint32(unsafe.Sizeof(int32(0)))*uint32(8)) - uint64(1))
 33003  	}
 33004  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 84)), *(*int32)(unsafe.Pointer(bp + 84 + 1*4)), *(*int32)(unsafe.Pointer(bp + 84 + 2*4))))
 33005  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33006  	sqlite3.Xsqlite3_free(tls, z)
 33007  	return TCL_OK
 33008  }
 33009  
 33010  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33011  	bp := tls.Alloc(84)
 33012  	defer tls.Free(84)
 33013  
 33014  	var i int32
 33015  	var z uintptr
 33016  	if argc < 4 || argc > 5 {
 33017  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33018  			ts+15374, 0))
 33019  		return TCL_ERROR
 33020  	}
 33021  	for i = 2; i < 4; i++ {
 33022  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+72+uintptr(i-2)*4) != 0 {
 33023  			return TCL_ERROR
 33024  		}
 33025  	}
 33026  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), func() uintptr {
 33027  		if argc > 4 {
 33028  			return *(*uintptr)(unsafe.Pointer(argv + 4*4))
 33029  		}
 33030  		return uintptr(0)
 33031  	}()))
 33032  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33033  	sqlite3.Xsqlite3_free(tls, z)
 33034  	return TCL_OK
 33035  }
 33036  
 33037  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33038  	bp := tls.Alloc(104)
 33039  	defer tls.Free(104)
 33040  
 33041  	var i int32
 33042  
 33043  	var z uintptr
 33044  	if argc < 5 || argc > 6 {
 33045  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33046  			ts+15400, 0))
 33047  		return TCL_ERROR
 33048  	}
 33049  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+88) != 0 {
 33050  		return TCL_ERROR
 33051  	}
 33052  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 33053  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 33054  		return TCL_ERROR
 33055  	}
 33056  	for i = 3; i < 5; i++ {
 33057  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+92+uintptr(i-3)*4) != 0 {
 33058  			return TCL_ERROR
 33059  		}
 33060  	}
 33061  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 33062  	sqlite3.Xsqlite3_snprintf(tls, *(*int32)(unsafe.Pointer(bp + 88)), z, *(*uintptr)(unsafe.Pointer(argv + 2*4)), libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 92)), *(*int32)(unsafe.Pointer(bp + 92 + 1*4)), func() uintptr {
 33063  		if argc > 4 {
 33064  			return *(*uintptr)(unsafe.Pointer(argv + 5*4))
 33065  		}
 33066  		return uintptr(0)
 33067  	}()))
 33068  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33069  	sqlite3.Xsqlite3_free(tls, z)
 33070  	return TCL_OK
 33071  }
 33072  
 33073  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33074  	bp := tls.Alloc(92)
 33075  	defer tls.Free(92)
 33076  
 33077  	var i int32
 33078  
 33079  	var z uintptr
 33080  	if argc != 5 {
 33081  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33082  			ts+15453, 0))
 33083  		return TCL_ERROR
 33084  	}
 33085  	for i = 2; i < 4; i++ {
 33086  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+72+uintptr(i-2)*4) != 0 {
 33087  			return TCL_ERROR
 33088  		}
 33089  	}
 33090  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*4)), bp+84) != 0 {
 33091  		return TCL_ERROR
 33092  	}
 33093  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), *(*float64)(unsafe.Pointer(bp + 84))))
 33094  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 33095  	sqlite3.Xsqlite3_free(tls, z)
 33096  	return TCL_OK
 33097  }
 33098  
 33099  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33100  	bp := tls.Alloc(72)
 33101  	defer tls.Free(72)
 33102  
 33103  	var i int32
 33104  
 33105  	var z uintptr
 33106  	if argc != 4 {
 33107  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33108  			ts+15477, 0))
 33109  		return TCL_ERROR
 33110  	}
 33111  	for i = 2; i < 4; i++ {
 33112  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)), bp+56+uintptr(i-2)*8) != 0 {
 33113  			return TCL_ERROR
 33114  		}
 33115  	}
 33116  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*float64)(unsafe.Pointer(bp + 56))**(*float64)(unsafe.Pointer(bp + 56 + 1*8))))
 33117  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33118  	sqlite3.Xsqlite3_free(tls, z)
 33119  	return TCL_OK
 33120  }
 33121  
 33122  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33123  	bp := tls.Alloc(56)
 33124  	defer tls.Free(56)
 33125  
 33126  	var z uintptr
 33127  	if argc != 3 {
 33128  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33129  			ts+15500, 0))
 33130  		return TCL_ERROR
 33131  	}
 33132  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 33133  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 33134  	sqlite3.Xsqlite3_free(tls, z)
 33135  	return TCL_OK
 33136  }
 33137  
 33138  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33139  	bp := tls.Alloc(112)
 33140  	defer tls.Free(112)
 33141  
 33142  	var z uintptr
 33143  
 33144  	if argc != 3 {
 33145  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33146  			ts+15500, 0))
 33147  		return TCL_ERROR
 33148  	}
 33149  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 33150  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 33151  		return TCL_ERROR
 33152  	}
 33153  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 33154  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 33155  	libc.Xmemcpy(tls, bp+96, bp+104, uint32(unsafe.Sizeof(float64(0))))
 33156  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 33157  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 33158  	sqlite3.Xsqlite3_free(tls, z)
 33159  	return TCL_OK
 33160  }
 33161  
 33162  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33163  	bp := tls.Alloc(4)
 33164  	defer tls.Free(4)
 33165  
 33166  	var rc int32
 33167  
 33168  	var ret int32 = 0
 33169  
 33170  	if objc != 2 && objc != 1 {
 33171  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 33172  		return TCL_ERROR
 33173  	}
 33174  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 33175  
 33176  	if objc == 2 {
 33177  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 33178  			return TCL_ERROR
 33179  		}
 33180  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 33181  		if rc != SQLITE_OK {
 33182  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 33183  			return TCL_ERROR
 33184  		}
 33185  	}
 33186  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 33187  	return TCL_OK
 33188  }
 33189  
 33190  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33191  	bp := tls.Alloc(8)
 33192  	defer tls.Free(8)
 33193  
 33194  	if objc != 3 {
 33195  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 33196  		return TCL_ERROR
 33197  	}
 33198  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 33199  		return TCL_ERROR
 33200  	}
 33201  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 33202  		return TCL_ERROR
 33203  	}
 33204  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 33205  	return TCL_OK
 33206  }
 33207  
 33208  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33209  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 33210  	return TCL_OK
 33211  }
 33212  
 33213  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33214  	bp := tls.Alloc(40)
 33215  	defer tls.Free(40)
 33216  
 33217  	var zDb uintptr
 33218  	var zTbl uintptr
 33219  	var zCol uintptr
 33220  	var rc int32
 33221  	var pRet uintptr
 33222  
 33223  	if objc != 5 && objc != 4 {
 33224  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 33225  		return TCL_ERROR
 33226  	}
 33227  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 33228  		return TCL_ERROR
 33229  	}
 33230  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33231  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 33232  	if objc == 5 {
 33233  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 33234  	} else {
 33235  		zCol = uintptr(0)
 33236  	}
 33237  
 33238  	if libc.Xstrlen(tls, zDb) == size_t(0) {
 33239  		zDb = uintptr(0)
 33240  	}
 33241  
 33242  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 33243  		bp+20, bp+24, bp+28, bp+32, bp+36)
 33244  
 33245  	if rc != SQLITE_OK {
 33246  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33247  		return TCL_ERROR
 33248  	}
 33249  
 33250  	pRet = tcl.XTcl_NewObj(tls)
 33251  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), -1))
 33252  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 33253  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 28))))
 33254  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 32))))
 33255  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 36))))
 33256  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 33257  
 33258  	return TCL_OK
 33259  }
 33260  
 33261  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 33262  	bp := tls.Alloc(8)
 33263  	defer tls.Free(8)
 33264  
 33265  	var z uintptr
 33266  
 33267  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 33268  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 33269  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 33270  	} else {
 33271  		var channel Tcl_Channel
 33272  		var instanceData ClientData
 33273  
 33274  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 33275  		if !(channel != 0) {
 33276  			return TCL_ERROR
 33277  		}
 33278  
 33279  		tcl.XTcl_Flush(tls, channel)
 33280  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 33281  
 33282  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 33283  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 33284  	}
 33285  
 33286  	return TCL_OK
 33287  }
 33288  
 33289  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33290  	bp := tls.Alloc(12)
 33291  	defer tls.Free(12)
 33292  
 33293  	var rc int32
 33294  
 33295  	if objc != 3 {
 33296  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 33297  		return TCL_ERROR
 33298  	}
 33299  
 33300  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 33301  		return TCL_ERROR
 33302  	}
 33303  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 33304  		return TCL_ERROR
 33305  	}
 33306  
 33307  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 4)))
 33308  	if rc != SQLITE_OK {
 33309  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 33310  	}
 33311  
 33312  	return func() int32 {
 33313  		if rc == SQLITE_OK {
 33314  			return TCL_OK
 33315  		}
 33316  		return TCL_ERROR
 33317  	}()
 33318  }
 33319  
 33320  type TestCollationX1 = struct {
 33321  	Finterp uintptr
 33322  	FpCmp   uintptr
 33323  	FpDel   uintptr
 33324  }
 33325  
 33326  type TestCollationX = TestCollationX1
 33327  
 33328  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 33329  	var p uintptr = pCtx
 33330  
 33331  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 33332  	if rc != TCL_OK {
 33333  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33334  	}
 33335  
 33336  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33337  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 33338  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33339  			tcl.XTclFreeObj(tls, _objPtr)
 33340  		}
 33341  	}
 33342  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33343  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 33344  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33345  			tcl.XTclFreeObj(tls, _objPtr)
 33346  		}
 33347  	}
 33348  	sqlite3.Xsqlite3_free(tls, p)
 33349  }
 33350  
 33351  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 33352  	bp := tls.Alloc(4)
 33353  	defer tls.Free(4)
 33354  
 33355  	var p uintptr = pCtx
 33356  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 33357  	*(*int32)(unsafe.Pointer(bp)) = 0
 33358  
 33359  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 33360  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 33361  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 33362  
 33363  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 33364  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 33365  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 33366  	}
 33367  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33368  		var _objPtr uintptr = pScript
 33369  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33370  			tcl.XTclFreeObj(tls, _objPtr)
 33371  		}
 33372  	}
 33373  
 33374  	return *(*int32)(unsafe.Pointer(bp))
 33375  }
 33376  
 33377  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33378  	bp := tls.Alloc(20)
 33379  	defer tls.Free(20)
 33380  
 33381  	var p uintptr
 33382  
 33383  	var rc int32
 33384  
 33385  	if objc != 5 {
 33386  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 33387  		return TCL_ERROR
 33388  	}
 33389  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 33390  		return TCL_ERROR
 33391  	}
 33392  
 33393  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 33394  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*4))
 33395  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*4))
 33396  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 33397  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 33398  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 33399  
 33400  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 16,
 33401  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33402  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33403  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33404  	if rc != SQLITE_MISUSE {
 33405  		tcl.XTcl_AppendResult(tls, interp,
 33406  			libc.VaList(bp, ts+15663, uintptr(0)))
 33407  		return TCL_ERROR
 33408  	}
 33409  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), SQLITE_UTF8,
 33410  		p, *(*uintptr)(unsafe.Pointer(&struct {
 33411  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33412  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 33413  	return TCL_OK
 33414  }
 33415  
 33416  type CreateFunctionV21 = struct {
 33417  	Finterp   uintptr
 33418  	FpFunc    uintptr
 33419  	FpStep    uintptr
 33420  	FpFinal   uintptr
 33421  	FpDestroy uintptr
 33422  }
 33423  
 33424  type CreateFunctionV2 = CreateFunctionV21
 33425  
 33426  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33427  }
 33428  
 33429  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 33430  }
 33431  
 33432  func cf2Final(tls *libc.TLS, ctx uintptr) {
 33433  }
 33434  
 33435  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 33436  	var p uintptr = pUser
 33437  
 33438  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33439  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 33440  		if rc != TCL_OK {
 33441  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 33442  		}
 33443  	}
 33444  
 33445  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33446  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33447  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 33448  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33449  				tcl.XTclFreeObj(tls, _objPtr)
 33450  			}
 33451  		}
 33452  	}
 33453  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33454  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 33455  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 33456  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33457  				tcl.XTclFreeObj(tls, _objPtr)
 33458  			}
 33459  		}
 33460  	}
 33461  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33462  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 33463  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 33464  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33465  				tcl.XTclFreeObj(tls, _objPtr)
 33466  			}
 33467  		}
 33468  	}
 33469  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33470  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 33471  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 33472  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33473  				tcl.XTclFreeObj(tls, _objPtr)
 33474  			}
 33475  		}
 33476  	}
 33477  	sqlite3.Xsqlite3_free(tls, p)
 33478  }
 33479  
 33480  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33481  	bp := tls.Alloc(100)
 33482  	defer tls.Free(100)
 33483  
 33484  	var zFunc uintptr
 33485  
 33486  	var p uintptr
 33487  	var i int32
 33488  	var rc int32
 33489  
 33490  	*(*[6]EncTable)(unsafe.Pointer(bp + 24)) = [6]EncTable{
 33491  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 33492  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 33493  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 33494  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 33495  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 33496  		{FzEnc: ts + 14193},
 33497  	}
 33498  
 33499  	if objc < 5 || objc%2 == 0 {
 33500  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 33501  		return TCL_ERROR
 33502  	}
 33503  
 33504  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 33505  		return TCL_ERROR
 33506  	}
 33507  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33508  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+20) != 0 {
 33509  		return TCL_ERROR
 33510  	}
 33511  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+24, int32(unsafe.Sizeof(EncTable{})),
 33512  		ts+15784, 0, bp+72) != 0 {
 33513  		return TCL_ERROR
 33514  	}
 33515  	*(*int32)(unsafe.Pointer(bp + 72)) = (*EncTable)(unsafe.Pointer(bp + 24 + uintptr(*(*int32)(unsafe.Pointer(bp + 72)))*8)).Fenc
 33516  
 33517  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 33518  
 33519  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(CreateFunctionV2{})))
 33520  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 33521  
 33522  	for i = 5; i < objc; i = i + 2 {
 33523  		*(*[5]uintptr)(unsafe.Pointer(bp + 76)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 33524  		if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+76, int32(unsafe.Sizeof(uintptr(0))), ts+15821, 0, bp+96) != 0 {
 33525  			sqlite3.Xsqlite3_free(tls, p)
 33526  			return TCL_ERROR
 33527  		}
 33528  
 33529  		switch *(*int32)(unsafe.Pointer(bp + 96)) {
 33530  		case 0:
 33531  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4))
 33532  			break
 33533  		case 1:
 33534  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4))
 33535  			break
 33536  		case 2:
 33537  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4))
 33538  			break
 33539  		case 3:
 33540  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4))
 33541  			break
 33542  		}
 33543  	}
 33544  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33545  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 33546  	}
 33547  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33548  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 33549  	}
 33550  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33551  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 33552  	}
 33553  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33554  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 33555  	}
 33556  
 33557  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33558  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 33559  	}
 33560  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33561  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 33562  	}
 33563  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33564  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 33565  	}
 33566  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 33567  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 33568  	}
 33569  
 33570  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 20)), *(*int32)(unsafe.Pointer(bp + 72)), p,
 33571  		func() uintptr {
 33572  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 33573  				return *(*uintptr)(unsafe.Pointer(&struct {
 33574  					f func(*libc.TLS, uintptr, int32, uintptr)
 33575  				}{cf2Func}))
 33576  			}
 33577  			return uintptr(0)
 33578  		}(),
 33579  		func() uintptr {
 33580  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 33581  				return *(*uintptr)(unsafe.Pointer(&struct {
 33582  					f func(*libc.TLS, uintptr, int32, uintptr)
 33583  				}{cf2Step}))
 33584  			}
 33585  			return uintptr(0)
 33586  		}(),
 33587  		func() uintptr {
 33588  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 33589  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 33590  			}
 33591  			return uintptr(0)
 33592  		}(),
 33593  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 33594  	if rc != SQLITE_OK {
 33595  		tcl.XTcl_ResetResult(tls, interp)
 33596  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 33597  		return TCL_ERROR
 33598  	}
 33599  	return TCL_OK
 33600  }
 33601  
 33602  type EncTable = struct {
 33603  	FzEnc uintptr
 33604  	Fenc  int32
 33605  }
 33606  
 33607  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33608  	bp := tls.Alloc(56)
 33609  	defer tls.Free(56)
 33610  
 33611  	var db uintptr
 33612  	_ = db
 33613  	var rc int32
 33614  	var zDb uintptr
 33615  	var zFile uintptr
 33616  	_ = zFile
 33617  	var zProc uintptr = uintptr(0)
 33618  	_ = zProc
 33619  	var zErr uintptr = uintptr(0)
 33620  
 33621  	if objc != 4 && objc != 3 {
 33622  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 33623  		return TCL_ERROR
 33624  	}
 33625  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 33626  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33627  	if objc == 4 {
 33628  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 33629  	}
 33630  
 33631  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 33632  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33633  		return TCL_ERROR
 33634  	}
 33635  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 33636  
 33637  	rc = SQLITE_ERROR
 33638  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 33639  	_ = zProc
 33640  	_ = zFile
 33641  	if rc != SQLITE_OK {
 33642  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 33643  			if zErr != 0 {
 33644  				return zErr
 33645  			}
 33646  			return ts + 584
 33647  		}(), uintptr(1))
 33648  		rc = TCL_ERROR
 33649  	} else {
 33650  		rc = TCL_OK
 33651  	}
 33652  	sqlite3.Xsqlite3_free(tls, zErr)
 33653  
 33654  	return rc
 33655  }
 33656  
 33657  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33658  	bp := tls.Alloc(68)
 33659  	defer tls.Free(68)
 33660  
 33661  	var db uintptr
 33662  	_ = db
 33663  	var zDb uintptr
 33664  
 33665  	if objc != 3 {
 33666  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 33667  		return TCL_ERROR
 33668  	}
 33669  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 33670  
 33671  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 33672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33673  		return TCL_ERROR
 33674  	}
 33675  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 33676  
 33677  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+64) != 0 {
 33678  		return TCL_ERROR
 33679  	}
 33680  
 33681  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 33682  	return TCL_ERROR
 33683  }
 33684  
 33685  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33686  	libc.Xexit(tls, 255)
 33687  
 33688  	return TCL_OK
 33689  }
 33690  
 33691  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33692  	var zArg0 uintptr
 33693  __1:
 33694  	if !(argc >= 2) {
 33695  		goto __2
 33696  	}
 33697  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33698  	if !(zArg0 != 0) {
 33699  		goto __3
 33700  	}
 33701  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 33702  		goto __5
 33703  	}
 33704  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 33705  	goto __6
 33706  __5:
 33707  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 33708  		goto __7
 33709  	}
 33710  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 33711  	goto __8
 33712  __7:
 33713  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 33714  		goto __9
 33715  	}
 33716  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))), -1,
 33717  		libc.UintptrFromInt32(-1))
 33718  	goto __10
 33719  __9:
 33720  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 33721  		goto __11
 33722  	}
 33723  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 33724  	goto __12
 33725  __11:
 33726  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 33727  		goto __13
 33728  	}
 33729  	sqlite3.Xsqlite3_result_null(tls, context)
 33730  	goto __14
 33731  __13:
 33732  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 33733  		goto __15
 33734  	}
 33735  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))*4)))
 33736  	goto __16
 33737  __15:
 33738  	goto error_out
 33739  __16:
 33740  	;
 33741  __14:
 33742  	;
 33743  __12:
 33744  	;
 33745  __10:
 33746  	;
 33747  __8:
 33748  	;
 33749  __6:
 33750  	;
 33751  	goto __4
 33752  __3:
 33753  	goto error_out
 33754  __4:
 33755  	;
 33756  	argc = argc - 2
 33757  	argv += 4 * uintptr(2)
 33758  	goto __1
 33759  __2:
 33760  	;
 33761  	return
 33762  
 33763  error_out:
 33764  	sqlite3.Xsqlite3_result_error(tls, context,
 33765  		ts+15915, -1)
 33766  }
 33767  
 33768  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33769  	bp := tls.Alloc(52)
 33770  	defer tls.Free(52)
 33771  
 33772  	var rc int32
 33773  	if argc != 3 {
 33774  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33775  			ts+15983, 0))
 33776  		return TCL_ERROR
 33777  	}
 33778  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+48) != 0 {
 33779  		return TCL_ERROR
 33780  	}
 33781  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*4)), -1, SQLITE_UTF8, uintptr(0),
 33782  		*(*uintptr)(unsafe.Pointer(&struct {
 33783  			f func(*libc.TLS, uintptr, int32, uintptr)
 33784  		}{testFunc})), uintptr(0), uintptr(0))
 33785  	if rc != 0 {
 33786  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33787  		return TCL_ERROR
 33788  	}
 33789  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 33790  		return TCL_ERROR
 33791  	}
 33792  	return TCL_OK
 33793  }
 33794  
 33795  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33796  	bp := tls.Alloc(36)
 33797  	defer tls.Free(36)
 33798  
 33799  	var rc int32
 33800  	var db uintptr = uintptr(0)
 33801  
 33802  	if objc != 2 {
 33803  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33804  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33805  		return TCL_ERROR
 33806  	}
 33807  
 33808  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 33809  		return TCL_ERROR
 33810  	}
 33811  
 33812  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 33813  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33814  	}
 33815  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33816  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33817  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 33818  		return TCL_ERROR
 33819  	}
 33820  	return TCL_OK
 33821  }
 33822  
 33823  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33824  	bp := tls.Alloc(12)
 33825  	defer tls.Free(12)
 33826  
 33827  	var iValue int32
 33828  	var i int32
 33829  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 33830  
 33831  	var zOpName uintptr
 33832  
 33833  	if objc != 4 {
 33834  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 33835  		return TCL_ERROR
 33836  	}
 33837  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 33838  		return TCL_ERROR
 33839  	}
 33840  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33841  	for i = 0; i < int32(uint32(unsafe.Sizeof(aOp))/uint32(unsafe.Sizeof(struct {
 33842  		FzName uintptr
 33843  		Fop    int32
 33844  	}{}))); i++ {
 33845  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 33846  			*(*int32)(unsafe.Pointer(bp + 4)) = aOp[i].Fop
 33847  			break
 33848  		}
 33849  	}
 33850  	if i >= int32(uint32(unsafe.Sizeof(aOp))/uint32(unsafe.Sizeof(struct {
 33851  		FzName uintptr
 33852  		Fop    int32
 33853  	}{}))) {
 33854  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 33855  			return TCL_ERROR
 33856  		}
 33857  	}
 33858  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+8) != 0 {
 33859  		return TCL_ERROR
 33860  	}
 33861  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), *(*int32)(unsafe.Pointer(bp + 8)))
 33862  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 33863  	return TCL_OK
 33864  }
 33865  
 33866  var aOp = [7]struct {
 33867  	FzName uintptr
 33868  	Fop    int32
 33869  }{
 33870  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 33871  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 33872  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 33873  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 33874  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 33875  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 33876  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 33877  }
 33878  
 33879  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33880  	bp := tls.Alloc(12)
 33881  	defer tls.Free(12)
 33882  
 33883  	if objc != 2 {
 33884  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 33885  		return TCL_ERROR
 33886  	}
 33887  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 33888  		return TCL_ERROR
 33889  	}
 33890  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 33891  	return TCL_OK
 33892  }
 33893  
 33894  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33895  	bp := tls.Alloc(8)
 33896  	defer tls.Free(8)
 33897  
 33898  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 33899  	if objc != 1 {
 33900  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 33901  		return TCL_ERROR
 33902  	}
 33903  	(*struct {
 33904  		f func(*libc.TLS, uintptr, uintptr) int32
 33905  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 33906  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 33907  	return TCL_OK
 33908  }
 33909  
 33910  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33911  	bp := tls.Alloc(108)
 33912  	defer tls.Free(108)
 33913  
 33914  	var rc int32
 33915  
 33916  	var zName uintptr
 33917  	*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
 33918  
 33919  	if objc != 3 {
 33920  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33921  		return TCL_ERROR
 33922  	}
 33923  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 33924  		return TCL_ERROR
 33925  	}
 33926  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33927  
 33928  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+4)
 33929  	if rc != SQLITE_OK {
 33930  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33931  		return TCL_ERROR
 33932  	} else {
 33933  		if sqlite3TestMakePointerStr(tls, interp, bp+8, *(*uintptr)(unsafe.Pointer(bp + 4))) != 0 {
 33934  			return TCL_ERROR
 33935  		}
 33936  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+8, -1))
 33937  	}
 33938  	return TCL_OK
 33939  }
 33940  
 33941  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33942  	bp := tls.Alloc(4)
 33943  	defer tls.Free(4)
 33944  
 33945  	var rc int32
 33946  
 33947  	var zName uintptr
 33948  
 33949  	if objc != 3 {
 33950  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33951  		return TCL_ERROR
 33952  	}
 33953  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 33954  		return TCL_ERROR
 33955  	}
 33956  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33957  
 33958  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 33959  	if rc != SQLITE_OK {
 33960  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33961  		return TCL_ERROR
 33962  	} else {
 33963  		tcl.XTcl_ResetResult(tls, interp)
 33964  	}
 33965  	return TCL_OK
 33966  }
 33967  
 33968  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33969  	bp := tls.Alloc(4)
 33970  	defer tls.Free(4)
 33971  
 33972  	var rc int32
 33973  
 33974  	var zName uintptr
 33975  	var pSnapshot uintptr
 33976  
 33977  	if objc != 4 {
 33978  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33979  		return TCL_ERROR
 33980  	}
 33981  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 33982  		return TCL_ERROR
 33983  	}
 33984  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 33985  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4))))
 33986  
 33987  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 33988  	if rc != SQLITE_OK {
 33989  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33990  		return TCL_ERROR
 33991  	} else {
 33992  		tcl.XTcl_ResetResult(tls, interp)
 33993  	}
 33994  	return TCL_OK
 33995  }
 33996  
 33997  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33998  	var pSnapshot uintptr
 33999  	if objc != 2 {
 34000  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 34001  		return TCL_ERROR
 34002  	}
 34003  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 34004  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 34005  	return TCL_OK
 34006  }
 34007  
 34008  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34009  	var res int32
 34010  	var p1 uintptr
 34011  	var p2 uintptr
 34012  	if objc != 3 {
 34013  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34014  		return TCL_ERROR
 34015  	}
 34016  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 34017  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))))
 34018  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34019  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34020  	return TCL_OK
 34021  }
 34022  
 34023  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34024  	bp := tls.Alloc(8)
 34025  	defer tls.Free(8)
 34026  
 34027  	var rc int32
 34028  
 34029  	var zName uintptr
 34030  	*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
 34031  
 34032  	if objc != 3 {
 34033  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 34034  		return TCL_ERROR
 34035  	}
 34036  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 34037  		return TCL_ERROR
 34038  	}
 34039  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 34040  
 34041  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+4)
 34042  	if rc != SQLITE_OK {
 34043  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34044  		return TCL_ERROR
 34045  	} else {
 34046  		tcl.XTcl_SetObjResult(tls, interp,
 34047  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 4)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 34048  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 4)))
 34049  	}
 34050  	return TCL_OK
 34051  }
 34052  
 34053  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34054  	bp := tls.Alloc(24)
 34055  	defer tls.Free(24)
 34056  
 34057  	var rc int32
 34058  
 34059  	var zName uintptr
 34060  	var pBlob uintptr
 34061  
 34062  	if objc != 4 {
 34063  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 34064  		return TCL_ERROR
 34065  	}
 34066  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 34067  		return TCL_ERROR
 34068  	}
 34069  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 34070  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+20)
 34071  	if uint32(*(*int32)(unsafe.Pointer(bp + 20))) != uint32(unsafe.Sizeof(sqlite3_snapshot{})) {
 34072  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34073  		return TCL_ERROR
 34074  	}
 34075  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 34076  	if rc != SQLITE_OK {
 34077  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34078  		return TCL_ERROR
 34079  	}
 34080  	return TCL_OK
 34081  }
 34082  
 34083  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34084  	bp := tls.Alloc(24)
 34085  	defer tls.Free(24)
 34086  
 34087  	var res int32
 34088  	var p1 uintptr
 34089  	var p2 uintptr
 34090  
 34091  	if objc != 3 {
 34092  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 34093  		return TCL_ERROR
 34094  	}
 34095  
 34096  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16)
 34097  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+20)
 34098  
 34099  	if uint32(*(*int32)(unsafe.Pointer(bp + 16))) != uint32(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 34100  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 34101  		return TCL_ERROR
 34102  	}
 34103  
 34104  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 34105  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 34106  	return TCL_OK
 34107  }
 34108  
 34109  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34110  	var rc int32
 34111  	var zFile uintptr
 34112  	if objc != 2 {
 34113  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 34114  		return TCL_ERROR
 34115  	}
 34116  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 34117  	rc = sqlite3_delete_database(tls, zFile)
 34118  
 34119  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 34120  	return TCL_OK
 34121  }
 34122  
 34123  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34124  	bp := tls.Alloc(24)
 34125  	defer tls.Free(24)
 34126  
 34127  	var zFile uintptr = uintptr(0)
 34128  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 34129  	*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
 34130  	var bRes int32 = 0
 34131  	var dc int32 = 0
 34132  	var rc int32
 34133  
 34134  	if objc != 2 {
 34135  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 34136  		return TCL_ERROR
 34137  	}
 34138  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 34139  
 34140  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 34141  	if rc != SQLITE_OK {
 34142  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 34143  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34144  		return TCL_ERROR
 34145  	}
 34146  
 34147  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+20)
 34148  	dc = (*struct {
 34149  		f func(*libc.TLS, uintptr) int32
 34150  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 20)))).FpMethods)).FxDeviceCharacteristics})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 34151  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 34152  		bRes = 1
 34153  	}
 34154  
 34155  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 34156  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 34157  	return TCL_OK
 34158  }
 34159  
 34160  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34161  	bp := tls.Alloc(106)
 34162  	defer tls.Free(106)
 34163  
 34164  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 34165  
 34166  	if objc != 3 {
 34167  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34168  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 34169  		return TCL_ERROR
 34170  	}
 34171  
 34172  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 34173  		return TCL_ERROR
 34174  	}
 34175  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+52) != 0 {
 34176  		return TCL_ERROR
 34177  	}
 34178  	*(*uintptr)(unsafe.Pointer(bp + 52)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 52)))
 34179  	if *(*uintptr)(unsafe.Pointer(bp + 52)) != 0 {
 34180  		if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 52))) != 0 {
 34181  			return TCL_ERROR
 34182  		}
 34183  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 34184  	}
 34185  	return TCL_OK
 34186  }
 34187  
 34188  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34189  	bp := tls.Alloc(36)
 34190  	defer tls.Free(36)
 34191  
 34192  	var rc int32
 34193  
 34194  	if objc != 2 {
 34195  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34196  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34197  		return TCL_ERROR
 34198  	}
 34199  
 34200  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34201  		return TCL_ERROR
 34202  	}
 34203  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34204  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34205  	return TCL_OK
 34206  }
 34207  
 34208  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34209  	bp := tls.Alloc(36)
 34210  	defer tls.Free(36)
 34211  
 34212  	var rc int32
 34213  
 34214  	if objc != 2 {
 34215  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34216  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34217  		return TCL_ERROR
 34218  	}
 34219  
 34220  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34221  		return TCL_ERROR
 34222  	}
 34223  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34224  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 34225  	return TCL_OK
 34226  }
 34227  
 34228  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34229  	bp := tls.Alloc(36)
 34230  	defer tls.Free(36)
 34231  
 34232  	var rc int32
 34233  
 34234  	if objc != 2 {
 34235  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34236  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34237  		return TCL_ERROR
 34238  	}
 34239  
 34240  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34241  		return TCL_ERROR
 34242  	}
 34243  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34244  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 34245  	return TCL_OK
 34246  }
 34247  
 34248  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34249  	bp := tls.Alloc(36)
 34250  	defer tls.Free(36)
 34251  
 34252  	if objc != 2 {
 34253  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34254  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 34255  		return TCL_ERROR
 34256  	}
 34257  
 34258  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34259  		return TCL_ERROR
 34260  	}
 34261  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34262  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 144))&0x20>>5) != 0)))
 34263  	return TCL_OK
 34264  }
 34265  
 34266  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34267  	bp := tls.Alloc(36)
 34268  	defer tls.Free(36)
 34269  
 34270  	var rc int32
 34271  
 34272  	if objc != 2 {
 34273  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34274  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34275  		return TCL_ERROR
 34276  	}
 34277  
 34278  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34279  		return TCL_ERROR
 34280  	}
 34281  
 34282  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 34283  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34284  		return TCL_ERROR
 34285  	}
 34286  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 34287  
 34288  	return TCL_OK
 34289  }
 34290  
 34291  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34292  	bp := tls.Alloc(36)
 34293  	defer tls.Free(36)
 34294  
 34295  	if objc != 2 {
 34296  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34297  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 34298  		return TCL_ERROR
 34299  	}
 34300  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34301  		return TCL_ERROR
 34302  	}
 34303  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 34304  	return TCL_OK
 34305  }
 34306  
 34307  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34308  	bp := tls.Alloc(40)
 34309  	defer tls.Free(40)
 34310  
 34311  	if objc != 3 {
 34312  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34313  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 34314  		return TCL_ERROR
 34315  	}
 34316  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34317  		return TCL_ERROR
 34318  	}
 34319  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+36) != 0 {
 34320  		return TCL_ERROR
 34321  	}
 34322  	tcl.XTcl_SetObjResult(tls, interp,
 34323  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 36)))))
 34324  	return TCL_OK
 34325  }
 34326  
 34327  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34328  	bp := tls.Alloc(36)
 34329  	defer tls.Free(36)
 34330  
 34331  	if objc != 2 {
 34332  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34333  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 34334  		return TCL_ERROR
 34335  	}
 34336  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34337  		return TCL_ERROR
 34338  	}
 34339  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 34340  	return TCL_OK
 34341  }
 34342  
 34343  var sqlite_static_bind_value uintptr = uintptr(0)
 34344  var sqlite_static_bind_nbyte int32 = 0
 34345  
 34346  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34347  	bp := tls.Alloc(138)
 34348  	defer tls.Free(138)
 34349  
 34350  	var rc int32
 34351  
 34352  	if argc != 5 {
 34353  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 34354  			ts+16340, 0))
 34355  		return TCL_ERROR
 34356  	}
 34357  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+80) != 0 {
 34358  		return TCL_ERROR
 34359  	}
 34360  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+84) != 0 {
 34361  		return TCL_ERROR
 34362  	}
 34363  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)), ts+7939) == 0 {
 34364  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)))
 34365  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)), ts+16376) == 0 {
 34366  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)), sqlite_static_bind_value, -1, uintptr(0))
 34367  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)), ts+16383) == 0 {
 34368  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)), sqlite_static_bind_value,
 34369  			sqlite_static_bind_nbyte, uintptr(0))
 34370  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)), ts+16397) == 0 {
 34371  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)), *(*uintptr)(unsafe.Pointer(argv + 3*4)), -1, libc.UintptrFromInt32(-1))
 34372  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)), ts+16404) == 0 {
 34373  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)), ts+16411, 10, uintptr(0))
 34374  	} else {
 34375  		tcl.XTcl_AppendResult(tls, interp,
 34376  			libc.VaList(bp+32, ts+16422, 0))
 34377  		return TCL_ERROR
 34378  	}
 34379  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 34380  		return TCL_ERROR
 34381  	}
 34382  	if rc != 0 {
 34383  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+88, ts+16476, libc.VaList(bp+48, rc))
 34384  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 34385  		return TCL_ERROR
 34386  	}
 34387  	return TCL_OK
 34388  }
 34389  
 34390  var pTestCollateInterp uintptr
 34391  
 34392  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34393  	bp := tls.Alloc(4)
 34394  	defer tls.Free(4)
 34395  
 34396  	var i uintptr = pTestCollateInterp
 34397  	var encin int32 = int32(pCtx)
 34398  
 34399  	var n int32
 34400  	var pVal uintptr
 34401  	var pX uintptr
 34402  
 34403  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 34404  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34405  
 34406  	switch encin {
 34407  	case SQLITE_UTF8:
 34408  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34409  		break
 34410  	case SQLITE_UTF16LE:
 34411  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34412  		break
 34413  	case SQLITE_UTF16BE:
 34414  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34415  		break
 34416  	default:
 34417  	}
 34418  
 34419  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 34420  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34421  	if pVal != 0 {
 34422  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 34423  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34424  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34425  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34426  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 34427  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 34428  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 34429  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 34430  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 34431  	}
 34432  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 34433  
 34434  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 34435  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34436  		var _objPtr uintptr = pX
 34437  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34438  			tcl.XTclFreeObj(tls, _objPtr)
 34439  		}
 34440  	}
 34441  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 34442  	return *(*int32)(unsafe.Pointer(bp))
 34443  }
 34444  
 34445  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34446  	bp := tls.Alloc(56)
 34447  	defer tls.Free(56)
 34448  
 34449  	var pVal uintptr
 34450  	var rc int32
 34451  	var zUtf16 uintptr
 34452  
 34453  	if !(objc != 5) {
 34454  		goto __1
 34455  	}
 34456  	goto bad_args
 34457  __1:
 34458  	;
 34459  	pTestCollateInterp = interp
 34460  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0) {
 34461  		goto __2
 34462  	}
 34463  	return TCL_ERROR
 34464  __2:
 34465  	;
 34466  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+52)) {
 34467  		goto __3
 34468  	}
 34469  	return TCL_ERROR
 34470  __3:
 34471  	;
 34472  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 34473  		uintptr(SQLITE_UTF8), func() uintptr {
 34474  			if *(*int32)(unsafe.Pointer(bp + 52)) != 0 {
 34475  				return *(*uintptr)(unsafe.Pointer(&struct {
 34476  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34477  				}{test_collate_func}))
 34478  			}
 34479  			return uintptr(0)
 34480  		}())
 34481  	if !(rc == SQLITE_OK) {
 34482  		goto __4
 34483  	}
 34484  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+52)) {
 34485  		goto __5
 34486  	}
 34487  	return TCL_ERROR
 34488  __5:
 34489  	;
 34490  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 34491  		uintptr(SQLITE_UTF16LE), func() uintptr {
 34492  			if *(*int32)(unsafe.Pointer(bp + 52)) != 0 {
 34493  				return *(*uintptr)(unsafe.Pointer(&struct {
 34494  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34495  				}{test_collate_func}))
 34496  			}
 34497  			return uintptr(0)
 34498  		}())
 34499  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+52)) {
 34500  		goto __6
 34501  	}
 34502  	return TCL_ERROR
 34503  __6:
 34504  	;
 34505  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34506  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34507  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 34508  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 34509  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 34510  		goto __7
 34511  	}
 34512  	rc = SQLITE_NOMEM
 34513  	goto __8
 34514  __7:
 34515  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 34516  		uintptr(SQLITE_UTF16BE), func() uintptr {
 34517  			if *(*int32)(unsafe.Pointer(bp + 52)) != 0 {
 34518  				return *(*uintptr)(unsafe.Pointer(&struct {
 34519  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34520  				}{test_collate_func}))
 34521  			}
 34522  			return uintptr(0)
 34523  		}())
 34524  __8:
 34525  	;
 34526  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34527  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 34528  __4:
 34529  	;
 34530  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 34531  		goto __9
 34532  	}
 34533  	return TCL_ERROR
 34534  __9:
 34535  	;
 34536  	if !(rc != SQLITE_OK) {
 34537  		goto __10
 34538  	}
 34539  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34540  	return TCL_ERROR
 34541  __10:
 34542  	;
 34543  	return TCL_OK
 34544  
 34545  bad_args:
 34546  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 34547  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34548  	return TCL_ERROR
 34549  }
 34550  
 34551  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 34552  	var nCmp int32 = func() int32 {
 34553  		if nA > nB {
 34554  			return nB
 34555  		}
 34556  		return nA
 34557  	}()
 34558  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint32(nCmp))
 34559  	if res == 0 {
 34560  		res = nA - nB
 34561  	}
 34562  	return res
 34563  }
 34564  
 34565  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34566  	bp := tls.Alloc(4)
 34567  	defer tls.Free(4)
 34568  
 34569  	var rc int32
 34570  
 34571  	if !(objc != 2) {
 34572  		goto __1
 34573  	}
 34574  	goto bad_args
 34575  __1:
 34576  	;
 34577  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0) {
 34578  		goto __2
 34579  	}
 34580  	return TCL_ERROR
 34581  __2:
 34582  	;
 34583  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 34584  		*(*uintptr)(unsafe.Pointer(&struct {
 34585  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34586  		}{test_utf16bin_collate_func})))
 34587  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34588  		goto __3
 34589  	}
 34590  	return TCL_ERROR
 34591  __3:
 34592  	;
 34593  	return TCL_OK
 34594  
 34595  bad_args:
 34596  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34597  	return TCL_ERROR
 34598  }
 34599  
 34600  var zNeededCollation [200]int8
 34601  var pzNeededCollation uintptr = 0
 34602  
 34603  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 34604  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 34605  	var i int32
 34606  	var z uintptr
 34607  	z = pName
 34608  	i = 0
 34609  	for ; *(*int8)(unsafe.Pointer(z)) != 0 || *(*int8)(unsafe.Pointer(z + 1)) != 0; z++ {
 34610  		if *(*int8)(unsafe.Pointer(z)) != 0 {
 34611  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*int8)(unsafe.Pointer(z))
 34612  		}
 34613  	}
 34614  	zNeededCollation[i] = int8(0)
 34615  	sqlite3.Xsqlite3_create_collation(tls,
 34616  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(enc), *(*uintptr)(unsafe.Pointer(&struct {
 34617  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34618  		}{test_collate_func})))
 34619  }
 34620  
 34621  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34622  	bp := tls.Alloc(4)
 34623  	defer tls.Free(4)
 34624  
 34625  	var rc int32
 34626  
 34627  	if !(objc != 2) {
 34628  		goto __1
 34629  	}
 34630  	goto bad_args
 34631  __1:
 34632  	;
 34633  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0) {
 34634  		goto __2
 34635  	}
 34636  	return TCL_ERROR
 34637  __2:
 34638  	;
 34639  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34640  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 34641  	}{test_collate_needed_cb})))
 34642  	zNeededCollation[0] = int8(0)
 34643  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34644  		goto __3
 34645  	}
 34646  	return TCL_ERROR
 34647  __3:
 34648  	;
 34649  	return TCL_OK
 34650  
 34651  bad_args:
 34652  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34653  	return TCL_ERROR
 34654  }
 34655  
 34656  var unaligned_string_counter int32 = 0
 34657  
 34658  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 34659  	var rc int32
 34660  	var n int32
 34661  	if nKey1 < nKey2 {
 34662  		n = nKey1
 34663  	} else {
 34664  		n = nKey2
 34665  	}
 34666  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 34667  		unaligned_string_counter++
 34668  	}
 34669  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 34670  		unaligned_string_counter++
 34671  	}
 34672  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint32(n))
 34673  	if rc == 0 {
 34674  		rc = nKey1 - nKey2
 34675  	}
 34676  	return rc
 34677  }
 34678  
 34679  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34680  	bp := tls.Alloc(4)
 34681  	defer tls.Free(4)
 34682  
 34683  	if objc >= 2 {
 34684  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 34685  			return TCL_ERROR
 34686  		}
 34687  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 34688  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34689  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34690  			}{alignmentCollFunc})))
 34691  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 34692  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34693  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34694  			}{alignmentCollFunc})))
 34695  	}
 34696  	return SQLITE_OK
 34697  }
 34698  
 34699  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34700  	var interp uintptr
 34701  	var pX uintptr
 34702  	var pVal uintptr
 34703  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34704  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34705  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34706  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34707  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34708  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34709  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34710  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34711  		var _objPtr uintptr = pX
 34712  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34713  			tcl.XTclFreeObj(tls, _objPtr)
 34714  		}
 34715  	}
 34716  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 34717  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34718  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34719  		uint8(SQLITE_UTF8), uintptr(0))
 34720  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 34721  		-1, libc.UintptrFromInt32(-1))
 34722  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34723  }
 34724  
 34725  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34726  	var interp uintptr
 34727  	var pX uintptr
 34728  	var pVal uintptr
 34729  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34730  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34731  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34732  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34733  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34734  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34735  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34736  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34737  		var _objPtr uintptr = pX
 34738  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34739  			tcl.XTclFreeObj(tls, _objPtr)
 34740  		}
 34741  	}
 34742  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34743  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34744  		uint8(SQLITE_UTF8), uintptr(0))
 34745  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 34746  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34747  }
 34748  
 34749  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34750  	var interp uintptr
 34751  	var pX uintptr
 34752  	var pVal uintptr
 34753  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34754  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34755  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34756  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34757  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34758  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34759  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34760  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34761  		var _objPtr uintptr = pX
 34762  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34763  			tcl.XTclFreeObj(tls, _objPtr)
 34764  		}
 34765  	}
 34766  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34767  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34768  		uint8(SQLITE_UTF8), uintptr(0))
 34769  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34770  		-1, libc.UintptrFromInt32(-1))
 34771  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34772  		-1, libc.UintptrFromInt32(-1))
 34773  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34774  		-1, libc.UintptrFromInt32(-1))
 34775  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34776  }
 34777  
 34778  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34779  	bp := tls.Alloc(40)
 34780  	defer tls.Free(40)
 34781  
 34782  	if !(objc != 5) {
 34783  		goto __1
 34784  	}
 34785  	goto bad_args
 34786  __1:
 34787  	;
 34788  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0) {
 34789  		goto __2
 34790  	}
 34791  	return TCL_ERROR
 34792  __2:
 34793  	;
 34794  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36)) {
 34795  		goto __3
 34796  	}
 34797  	return TCL_ERROR
 34798  __3:
 34799  	;
 34800  	if !(*(*int32)(unsafe.Pointer(bp + 36)) != 0) {
 34801  		goto __4
 34802  	}
 34803  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 34804  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34805  			f func(*libc.TLS, uintptr, int32, uintptr)
 34806  		}{test_function_utf8})), uintptr(0), uintptr(0))
 34807  __4:
 34808  	;
 34809  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+36)) {
 34810  		goto __5
 34811  	}
 34812  	return TCL_ERROR
 34813  __5:
 34814  	;
 34815  	if !(*(*int32)(unsafe.Pointer(bp + 36)) != 0) {
 34816  		goto __6
 34817  	}
 34818  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 34819  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34820  			f func(*libc.TLS, uintptr, int32, uintptr)
 34821  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 34822  __6:
 34823  	;
 34824  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+36)) {
 34825  		goto __7
 34826  	}
 34827  	return TCL_ERROR
 34828  __7:
 34829  	;
 34830  	if !(*(*int32)(unsafe.Pointer(bp + 36)) != 0) {
 34831  		goto __8
 34832  	}
 34833  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 34834  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34835  			f func(*libc.TLS, uintptr, int32, uintptr)
 34836  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 34837  __8:
 34838  	;
 34839  	return TCL_OK
 34840  bad_args:
 34841  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34842  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34843  	return TCL_ERROR
 34844  }
 34845  
 34846  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34847  	var zCode uintptr
 34848  	var i int32
 34849  	if objc != 1 {
 34850  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 34851  	}
 34852  
 34853  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 34854  	for i = 0; i < 200; i++ {
 34855  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 34856  			break
 34857  		}
 34858  	}
 34859  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 34860  	return TCL_OK
 34861  }
 34862  
 34863  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34864  	return TCL_OK
 34865  }
 34866  
 34867  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34868  	bp := tls.Alloc(12)
 34869  	defer tls.Free(12)
 34870  
 34871  	var rc int32
 34872  
 34873  	if objc != 4 {
 34874  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34875  		return TCL_ERROR
 34876  	}
 34877  
 34878  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 34879  		return TCL_ERROR
 34880  	}
 34881  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 34882  		return TCL_ERROR
 34883  	}
 34884  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+8) != 0 {
 34885  		return TCL_ERROR
 34886  	}
 34887  
 34888  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), *(*int32)(unsafe.Pointer(bp + 8)))
 34889  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 34890  		return TCL_ERROR
 34891  	}
 34892  	if rc != SQLITE_OK {
 34893  		return TCL_ERROR
 34894  	}
 34895  
 34896  	return TCL_OK
 34897  }
 34898  
 34899  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34900  	bp := tls.Alloc(32)
 34901  	defer tls.Free(32)
 34902  
 34903  	var rc int32
 34904  
 34905  	if objc != 4 {
 34906  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34907  		return TCL_ERROR
 34908  	}
 34909  
 34910  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 34911  		return TCL_ERROR
 34912  	}
 34913  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+20) != 0 {
 34914  		return TCL_ERROR
 34915  	}
 34916  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+24) != 0 {
 34917  		return TCL_ERROR
 34918  	}
 34919  
 34920  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 24))))
 34921  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 34922  		return TCL_ERROR
 34923  	}
 34924  	if rc != SQLITE_OK {
 34925  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34926  		return TCL_ERROR
 34927  	}
 34928  
 34929  	return TCL_OK
 34930  }
 34931  
 34932  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34933  	bp := tls.Alloc(44)
 34934  	defer tls.Free(44)
 34935  
 34936  	var rc int32
 34937  
 34938  	if objc != 4 {
 34939  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34940  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34941  		return TCL_ERROR
 34942  	}
 34943  
 34944  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 34945  		return TCL_ERROR
 34946  	}
 34947  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 34948  		return TCL_ERROR
 34949  	}
 34950  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+40) != 0 {
 34951  		return TCL_ERROR
 34952  	}
 34953  
 34954  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)), *(*int32)(unsafe.Pointer(bp + 40)))
 34955  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34956  		return TCL_ERROR
 34957  	}
 34958  	if rc != SQLITE_OK {
 34959  		return TCL_ERROR
 34960  	}
 34961  
 34962  	return TCL_OK
 34963  }
 34964  
 34965  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34966  	var i int32
 34967  
 34968  	sqlite3.Xsqlite3_free(tls, p)
 34969  	p = uintptr(0)
 34970  	if objc > 1 {
 34971  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(int32(0)))*uint32(objc-1)))
 34972  		if p == uintptr(0) {
 34973  			return TCL_ERROR
 34974  		}
 34975  		for i = 0; i < objc-1; i++ {
 34976  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*4)), p+uintptr(i)*4) != 0 {
 34977  				sqlite3.Xsqlite3_free(tls, p)
 34978  				p = uintptr(0)
 34979  				return TCL_ERROR
 34980  			}
 34981  		}
 34982  	}
 34983  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 34984  	return TCL_OK
 34985  }
 34986  
 34987  var p uintptr = uintptr(0)
 34988  
 34989  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34990  	bp := tls.Alloc(8)
 34991  	defer tls.Free(8)
 34992  
 34993  	var i int32
 34994  
 34995  	sqlite3.Xsqlite3_free(tls, p1)
 34996  	p1 = uintptr(0)
 34997  	if objc > 1 {
 34998  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(sqlite3_int64(0)))*uint32(objc-1)))
 34999  		if p1 == uintptr(0) {
 35000  			return TCL_ERROR
 35001  		}
 35002  		for i = 0; i < objc-1; i++ {
 35003  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*4)), bp) != 0 {
 35004  				sqlite3.Xsqlite3_free(tls, p1)
 35005  				p1 = uintptr(0)
 35006  				return TCL_ERROR
 35007  			}
 35008  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 35009  		}
 35010  	}
 35011  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 35012  	return TCL_OK
 35013  }
 35014  
 35015  var p1 uintptr = uintptr(0)
 35016  
 35017  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35018  	var i int32
 35019  
 35020  	sqlite3.Xsqlite3_free(tls, p2)
 35021  	p2 = uintptr(0)
 35022  	if objc > 1 {
 35023  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(float64(0)))*uint32(objc-1)))
 35024  		if p2 == uintptr(0) {
 35025  			return TCL_ERROR
 35026  		}
 35027  		for i = 0; i < objc-1; i++ {
 35028  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*4)), p2+uintptr(i)*8) != 0 {
 35029  				sqlite3.Xsqlite3_free(tls, p2)
 35030  				p2 = uintptr(0)
 35031  				return TCL_ERROR
 35032  			}
 35033  		}
 35034  	}
 35035  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 35036  	return TCL_OK
 35037  }
 35038  
 35039  var p2 uintptr = uintptr(0)
 35040  
 35041  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35042  	bp := tls.Alloc(8)
 35043  	defer tls.Free(8)
 35044  
 35045  	var i int32
 35046  
 35047  	for i = 0; i < n; i++ {
 35048  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*4)))
 35049  	}
 35050  	sqlite3.Xsqlite3_free(tls, p3)
 35051  	p3 = uintptr(0)
 35052  	if objc > 1 {
 35053  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(uintptr(0)))*uint32(objc-1)))
 35054  		if p3 == uintptr(0) {
 35055  			return TCL_ERROR
 35056  		}
 35057  		for i = 0; i < objc-1; i++ {
 35058  			*(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*4)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*4)))))
 35059  		}
 35060  	}
 35061  	n = objc - 1
 35062  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 35063  	return TCL_OK
 35064  }
 35065  
 35066  var n int32 = 0
 35067  var p3 uintptr = uintptr(0)
 35068  
 35069  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35070  	bp := tls.Alloc(48)
 35071  	defer tls.Free(48)
 35072  
 35073  	var rc int32
 35074  
 35075  	if objc != 4 {
 35076  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35077  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35078  		return TCL_ERROR
 35079  	}
 35080  
 35081  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35082  		return TCL_ERROR
 35083  	}
 35084  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 35085  		return TCL_ERROR
 35086  	}
 35087  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+40) != 0 {
 35088  		return TCL_ERROR
 35089  	}
 35090  
 35091  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 40)))
 35092  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35093  		return TCL_ERROR
 35094  	}
 35095  	if rc != SQLITE_OK {
 35096  		return TCL_ERROR
 35097  	}
 35098  
 35099  	return TCL_OK
 35100  }
 35101  
 35102  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35103  	bp := tls.Alloc(56)
 35104  	defer tls.Free(56)
 35105  
 35106  	*(*float64)(unsafe.Pointer(bp + 40)) = float64(0)
 35107  	var rc int32
 35108  	var zVal uintptr
 35109  	var i int32
 35110  
 35111  	if objc != 4 {
 35112  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35113  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 35114  		return TCL_ERROR
 35115  	}
 35116  
 35117  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35118  		return TCL_ERROR
 35119  	}
 35120  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 35121  		return TCL_ERROR
 35122  	}
 35123  
 35124  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 35125  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aSpecialFp))/uint32(unsafe.Sizeof(struct {
 35126  		FzName  uintptr
 35127  		FiUpper uint32
 35128  		FiLower uint32
 35129  	}{})); i++ {
 35130  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 35131  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 48)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 35132  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 48)) <<= 32
 35133  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 48)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 35134  
 35135  			libc.Xmemcpy(tls, bp+40, bp+48, uint32(8))
 35136  			break
 35137  		}
 35138  	}
 35139  	if uint32(i) >= uint32(unsafe.Sizeof(aSpecialFp))/uint32(unsafe.Sizeof(struct {
 35140  		FzName  uintptr
 35141  		FiUpper uint32
 35142  		FiLower uint32
 35143  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+40) != 0 {
 35144  		return TCL_ERROR
 35145  	}
 35146  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)), *(*float64)(unsafe.Pointer(bp + 40)))
 35147  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35148  		return TCL_ERROR
 35149  	}
 35150  	if rc != SQLITE_OK {
 35151  		return TCL_ERROR
 35152  	}
 35153  
 35154  	return TCL_OK
 35155  }
 35156  
 35157  var aSpecialFp = [10]struct {
 35158  	FzName  uintptr
 35159  	FiUpper uint32
 35160  	FiLower uint32
 35161  }{
 35162  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 35163  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 35164  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 35165  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 35166  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 35167  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 35168  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 35169  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 35170  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 35171  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 35172  }
 35173  
 35174  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35175  	bp := tls.Alloc(40)
 35176  	defer tls.Free(40)
 35177  
 35178  	var rc int32
 35179  
 35180  	if objc != 3 {
 35181  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35182  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 35183  		return TCL_ERROR
 35184  	}
 35185  
 35186  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35187  		return TCL_ERROR
 35188  	}
 35189  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 35190  		return TCL_ERROR
 35191  	}
 35192  
 35193  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 35194  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 35195  		return TCL_ERROR
 35196  	}
 35197  	if rc != SQLITE_OK {
 35198  		return TCL_ERROR
 35199  	}
 35200  
 35201  	return TCL_OK
 35202  }
 35203  
 35204  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35205  	bp := tls.Alloc(80)
 35206  	defer tls.Free(80)
 35207  
 35208  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 35209  
 35210  	var value uintptr
 35211  	var rc int32
 35212  	var toFree uintptr = uintptr(0)
 35213  
 35214  	if objc != 5 {
 35215  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35216  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35217  		return TCL_ERROR
 35218  	}
 35219  
 35220  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 35221  		return TCL_ERROR
 35222  	}
 35223  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+68) != 0 {
 35224  		return TCL_ERROR
 35225  	}
 35226  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+72)
 35227  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+76) != 0 {
 35228  		return TCL_ERROR
 35229  	}
 35230  	if *(*int32)(unsafe.Pointer(bp + 76)) < 0 {
 35231  		toFree = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 72))+1))
 35232  		if toFree == uintptr(0) {
 35233  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35234  			return TCL_ERROR
 35235  		}
 35236  		libc.Xmemcpy(tls, toFree, value, uint32(*(*int32)(unsafe.Pointer(bp + 72))))
 35237  		*(*int8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 72))))) = int8(0)
 35238  		value = toFree
 35239  	}
 35240  	rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 68)), value, *(*int32)(unsafe.Pointer(bp + 76)), libc.UintptrFromInt32(-1))
 35241  	libc.Xfree(tls, toFree)
 35242  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35243  		return TCL_ERROR
 35244  	}
 35245  	if rc != SQLITE_OK {
 35246  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 35247  		return TCL_ERROR
 35248  	}
 35249  
 35250  	return TCL_OK
 35251  }
 35252  
 35253  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35254  	bp := tls.Alloc(80)
 35255  	defer tls.Free(80)
 35256  
 35257  	var value uintptr
 35258  	var toFree uintptr = uintptr(0)
 35259  	var rc int32
 35260  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 35261  
 35262  	var xDel uintptr = func() uintptr {
 35263  		if objc == 6 {
 35264  			return uintptr(0)
 35265  		}
 35266  		return libc.UintptrFromInt32(-1)
 35267  	}()
 35268  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*4))
 35269  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*4))
 35270  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4))
 35271  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4))
 35272  
 35273  	if objc != 5 && objc != 6 {
 35274  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35275  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 35276  		return TCL_ERROR
 35277  	}
 35278  
 35279  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 35280  		return TCL_ERROR
 35281  	}
 35282  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+68) != 0 {
 35283  		return TCL_ERROR
 35284  	}
 35285  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+72)
 35286  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+76) != 0 {
 35287  		return TCL_ERROR
 35288  	}
 35289  	if *(*int32)(unsafe.Pointer(bp + 76)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 35290  		toFree = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 72))+3))
 35291  		if toFree == uintptr(0) {
 35292  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 35293  			return TCL_ERROR
 35294  		}
 35295  		libc.Xmemcpy(tls, toFree, value, uint32(*(*int32)(unsafe.Pointer(bp + 72))))
 35296  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 72))), 0, uint32(3))
 35297  		value = toFree
 35298  	}
 35299  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 68)), value, *(*int32)(unsafe.Pointer(bp + 76)), xDel)
 35300  	libc.Xfree(tls, toFree)
 35301  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35302  		return TCL_ERROR
 35303  	}
 35304  	if rc != SQLITE_OK {
 35305  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35306  		return TCL_ERROR
 35307  	}
 35308  
 35309  	return TCL_OK
 35310  }
 35311  
 35312  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35313  	bp := tls.Alloc(280)
 35314  	defer tls.Free(280)
 35315  
 35316  	var value uintptr
 35317  	var rc int32
 35318  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 35319  
 35320  	if objc != 5 && objc != 6 {
 35321  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35322  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 35323  		return TCL_ERROR
 35324  	}
 35325  
 35326  	if objc == 6 {
 35327  		xDestructor = uintptr(0)
 35328  		objv += 4
 35329  	}
 35330  
 35331  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 35332  		return TCL_ERROR
 35333  	}
 35334  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+68) != 0 {
 35335  		return TCL_ERROR
 35336  	}
 35337  
 35338  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+72)
 35339  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+76) != 0 {
 35340  		return TCL_ERROR
 35341  	}
 35342  
 35343  	if *(*int32)(unsafe.Pointer(bp + 76)) > *(*int32)(unsafe.Pointer(bp + 72)) {
 35344  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+80,
 35345  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 76)), *(*int32)(unsafe.Pointer(bp + 72))))
 35346  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+80, uintptr(0)))
 35347  		return TCL_ERROR
 35348  	}
 35349  
 35350  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 68)), value, *(*int32)(unsafe.Pointer(bp + 76)), xDestructor)
 35351  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 35352  		return TCL_ERROR
 35353  	}
 35354  	if rc != SQLITE_OK {
 35355  		return TCL_ERROR
 35356  	}
 35357  
 35358  	return TCL_OK
 35359  }
 35360  
 35361  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35362  	bp := tls.Alloc(40)
 35363  	defer tls.Free(40)
 35364  
 35365  	var z3 uintptr = uintptr(0)
 35366  	var db uintptr = uintptr(0)
 35367  	*(*uintptr)(unsafe.Pointer(bp + 36)) = uintptr(0)
 35368  
 35369  	if objc != 5 {
 35370  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 35371  		return TCL_ERROR
 35372  	}
 35373  
 35374  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+24) != 0 {
 35375  		return TCL_ERROR
 35376  	}
 35377  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+28) != 0 {
 35378  		return TCL_ERROR
 35379  	}
 35380  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 35381  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+32) != 0 {
 35382  		return TCL_ERROR
 35383  	}
 35384  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 35385  
 35386  	if int32(*(*int8)(unsafe.Pointer(z3))) == 'n' {
 35387  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 32)), bp+36)
 35388  	} else if int32(*(*int8)(unsafe.Pointer(z3))) == 'o' {
 35389  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 32)), bp+36)
 35390  	} else {
 35391  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 35392  		return TCL_ERROR
 35393  	}
 35394  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 28)), *(*uintptr)(unsafe.Pointer(bp + 36)))
 35395  
 35396  	return TCL_OK
 35397  }
 35398  
 35399  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35400  	bp := tls.Alloc(60)
 35401  	defer tls.Free(60)
 35402  
 35403  	var zSql uintptr = uintptr(0)
 35404  	var db uintptr = uintptr(0)
 35405  	var rc int32 = SQLITE_OK
 35406  
 35407  	if objc != 4 {
 35408  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 35409  		return TCL_ERROR
 35410  	}
 35411  
 35412  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 35413  		return TCL_ERROR
 35414  	}
 35415  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+52) != 0 {
 35416  		return TCL_ERROR
 35417  	}
 35418  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 35419  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35420  
 35421  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 35422  	if rc != SQLITE_OK {
 35423  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35424  		return TCL_ERROR
 35425  	}
 35426  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) == SQLITE_ROW {
 35427  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 0)
 35428  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52)), pVal)
 35429  	}
 35430  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 35431  	if rc != SQLITE_OK {
 35432  		tcl.XTcl_AppendResult(tls, interp,
 35433  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 35434  		return TCL_ERROR
 35435  	}
 35436  
 35437  	return TCL_OK
 35438  }
 35439  
 35440  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35441  	bp := tls.Alloc(108)
 35442  	defer tls.Free(108)
 35443  
 35444  	var eType int32
 35445  	var nData int32
 35446  	var aData uintptr
 35447  	var isTransient int32
 35448  	var isStatic int32
 35449  
 35450  	var i int32
 35451  	var j int32
 35452  	var rc int32
 35453  	var xDel uintptr
 35454  	var z uintptr
 35455  
 35456  	var a uintptr
 35457  
 35458  	var a1 uintptr
 35459  
 35460  	var a2 uintptr
 35461  	var v3 uintptr
 35462  	var a3 uintptr
 35463  	eType = 0
 35464  	nData = 0
 35465  	aData = uintptr(0)
 35466  	isTransient = 0
 35467  	isStatic = 0
 35468  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 35469  
 35470  	if !(aStaticData != 0) {
 35471  		goto __1
 35472  	}
 35473  
 35474  	if !(eStaticType == 3) {
 35475  		goto __2
 35476  	}
 35477  	i = 0
 35478  __3:
 35479  	if !(i < nStaticData) {
 35480  		goto __5
 35481  	}
 35482  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*4)))
 35483  	goto __4
 35484  __4:
 35485  	i++
 35486  	goto __3
 35487  	goto __5
 35488  __5:
 35489  	;
 35490  __2:
 35491  	;
 35492  	sqlite3.Xsqlite3_free(tls, aStaticData)
 35493  	aStaticData = uintptr(0)
 35494  	nStaticData = 0
 35495  	eStaticType = 0
 35496  __1:
 35497  	;
 35498  	if !(objc == 1) {
 35499  		goto __6
 35500  	}
 35501  	return TCL_OK
 35502  __6:
 35503  	;
 35504  	i = 1
 35505  __7:
 35506  	if !(i < objc && int32(*(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))))) == '-') {
 35507  		goto __9
 35508  	}
 35509  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
 35510  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 35511  		goto __10
 35512  	}
 35513  	isTransient = 1
 35514  	xDel = libc.UintptrFromInt32(-1)
 35515  	goto __11
 35516  __10:
 35517  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 35518  		goto __12
 35519  	}
 35520  	isStatic = 1
 35521  	xDel = uintptr(0)
 35522  	goto __13
 35523  __12:
 35524  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 35525  		goto __14
 35526  	}
 35527  	eType = 0
 35528  	goto __15
 35529  __14:
 35530  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 35531  		goto __16
 35532  	}
 35533  	eType = 1
 35534  	goto __17
 35535  __16:
 35536  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 35537  		goto __18
 35538  	}
 35539  	eType = 2
 35540  	goto __19
 35541  __18:
 35542  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 35543  		goto __20
 35544  	}
 35545  	eType = 3
 35546  	goto __21
 35547  __20:
 35548  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 35549  		goto __22
 35550  	}
 35551  	goto __9
 35552  	goto __23
 35553  __22:
 35554  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 35555  	return TCL_ERROR
 35556  __23:
 35557  	;
 35558  __21:
 35559  	;
 35560  __19:
 35561  	;
 35562  __17:
 35563  	;
 35564  __15:
 35565  	;
 35566  __13:
 35567  	;
 35568  __11:
 35569  	;
 35570  	goto __8
 35571  __8:
 35572  	i++
 35573  	goto __7
 35574  	goto __9
 35575  __9:
 35576  	;
 35577  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 35578  		goto __24
 35579  	}
 35580  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 35581  		uintptr(0)))
 35582  	return TCL_ERROR
 35583  __24:
 35584  	;
 35585  	if !(isStatic != 0 && isTransient != 0) {
 35586  		goto __25
 35587  	}
 35588  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 35589  		uintptr(0)))
 35590  	return TCL_ERROR
 35591  __25:
 35592  	;
 35593  	if !(objc-i < 2) {
 35594  		goto __26
 35595  	}
 35596  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 35597  	return TCL_ERROR
 35598  __26:
 35599  	;
 35600  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4))), bp+80) != 0) {
 35601  		goto __27
 35602  	}
 35603  	return TCL_ERROR
 35604  __27:
 35605  	;
 35606  	i++
 35607  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+84) != 0) {
 35608  		goto __28
 35609  	}
 35610  	return TCL_ERROR
 35611  __28:
 35612  	;
 35613  	i++
 35614  	nData = objc - i
 35615  	switch eType + 4*libc.Bool32(nData <= 0) {
 35616  	case 0:
 35617  		goto __30
 35618  	case 1:
 35619  		goto __31
 35620  	case 2:
 35621  		goto __32
 35622  	case 3:
 35623  		goto __33
 35624  	case 4:
 35625  		goto __34
 35626  	}
 35627  	goto __29
 35628  __30:
 35629  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(int32(0)))*uint32(nData)))
 35630  	if !(a == uintptr(0)) {
 35631  		goto __35
 35632  	}
 35633  	rc = SQLITE_NOMEM
 35634  	goto carray_bind_done
 35635  __35:
 35636  	;
 35637  	j = 0
 35638  __36:
 35639  	if !(j < nData) {
 35640  		goto __38
 35641  	}
 35642  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*4)), bp+88) != 0) {
 35643  		goto __39
 35644  	}
 35645  	sqlite3.Xsqlite3_free(tls, a)
 35646  	return TCL_ERROR
 35647  __39:
 35648  	;
 35649  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 88))
 35650  	goto __37
 35651  __37:
 35652  	j++
 35653  	goto __36
 35654  	goto __38
 35655  __38:
 35656  	;
 35657  	aData = a
 35658  	goto __29
 35659  
 35660  __31:
 35661  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(sqlite3_int64(0)))*uint32(nData)))
 35662  	if !(a1 == uintptr(0)) {
 35663  		goto __40
 35664  	}
 35665  	rc = SQLITE_NOMEM
 35666  	goto carray_bind_done
 35667  __40:
 35668  	;
 35669  	j = 0
 35670  __41:
 35671  	if !(j < nData) {
 35672  		goto __43
 35673  	}
 35674  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*4)), bp+92) != 0) {
 35675  		goto __44
 35676  	}
 35677  	sqlite3.Xsqlite3_free(tls, a1)
 35678  	return TCL_ERROR
 35679  __44:
 35680  	;
 35681  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 92))
 35682  	goto __42
 35683  __42:
 35684  	j++
 35685  	goto __41
 35686  	goto __43
 35687  __43:
 35688  	;
 35689  	aData = a1
 35690  	goto __29
 35691  
 35692  __32:
 35693  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(float64(0)))*uint32(nData)))
 35694  	if !(a2 == uintptr(0)) {
 35695  		goto __45
 35696  	}
 35697  	rc = SQLITE_NOMEM
 35698  	goto carray_bind_done
 35699  __45:
 35700  	;
 35701  	j = 0
 35702  __46:
 35703  	if !(j < nData) {
 35704  		goto __48
 35705  	}
 35706  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*4)), bp+100) != 0) {
 35707  		goto __49
 35708  	}
 35709  	sqlite3.Xsqlite3_free(tls, a2)
 35710  	return TCL_ERROR
 35711  __49:
 35712  	;
 35713  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 100))
 35714  	goto __47
 35715  __47:
 35716  	j++
 35717  	goto __46
 35718  	goto __48
 35719  __48:
 35720  	;
 35721  	aData = a2
 35722  	goto __29
 35723  
 35724  __33:
 35725  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(uintptr(0)))*uint32(nData)))
 35726  	if !(a3 == uintptr(0)) {
 35727  		goto __50
 35728  	}
 35729  	rc = SQLITE_NOMEM
 35730  	goto carray_bind_done
 35731  __50:
 35732  	;
 35733  	j = 0
 35734  __51:
 35735  	if !(j < nData) {
 35736  		goto __53
 35737  	}
 35738  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*4)))
 35739  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*4)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 35740  	goto __52
 35741  __52:
 35742  	j++
 35743  	goto __51
 35744  	goto __53
 35745  __53:
 35746  	;
 35747  	aData = a3
 35748  	goto __29
 35749  
 35750  __34:
 35751  	aData = ts + 584
 35752  	xDel = uintptr(0)
 35753  	isTransient = 0
 35754  	isStatic = 0
 35755  	goto __29
 35756  
 35757  __29:
 35758  	;
 35759  	if !(isStatic != 0) {
 35760  		goto __54
 35761  	}
 35762  	aStaticData = aData
 35763  	nStaticData = nData
 35764  	eStaticType = eType
 35765  __54:
 35766  	;
 35767  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 84)), aData, nData, eType, xDel)
 35768  	if !(isTransient != 0) {
 35769  		goto __55
 35770  	}
 35771  	if !(eType == 3) {
 35772  		goto __56
 35773  	}
 35774  	i = 0
 35775  __57:
 35776  	if !(i < nData) {
 35777  		goto __59
 35778  	}
 35779  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*4)))
 35780  	goto __58
 35781  __58:
 35782  	i++
 35783  	goto __57
 35784  	goto __59
 35785  __59:
 35786  	;
 35787  __56:
 35788  	;
 35789  	sqlite3.Xsqlite3_free(tls, aData)
 35790  __55:
 35791  	;
 35792  carray_bind_done:
 35793  	if !(rc != 0) {
 35794  		goto __60
 35795  	}
 35796  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 35797  	return TCL_ERROR
 35798  __60:
 35799  	;
 35800  	return TCL_OK
 35801  }
 35802  
 35803  var aStaticData uintptr = uintptr(0)
 35804  var nStaticData int32 = 0
 35805  var eStaticType int32 = 0
 35806  
 35807  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35808  	bp := tls.Alloc(4)
 35809  	defer tls.Free(4)
 35810  
 35811  	if objc != 2 {
 35812  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35813  		return TCL_ERROR
 35814  	}
 35815  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 35816  		return TCL_ERROR
 35817  	}
 35818  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35819  	return TCL_OK
 35820  }
 35821  
 35822  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35823  	bp := tls.Alloc(8)
 35824  	defer tls.Free(8)
 35825  
 35826  	if objc != 3 {
 35827  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 35828  		return TCL_ERROR
 35829  	}
 35830  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 35831  		return TCL_ERROR
 35832  	}
 35833  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 35834  		return TCL_ERROR
 35835  	}
 35836  	tcl.XTcl_SetObjResult(tls, interp,
 35837  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4))), -1))
 35838  	return TCL_OK
 35839  }
 35840  
 35841  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35842  	bp := tls.Alloc(4)
 35843  	defer tls.Free(4)
 35844  
 35845  	if objc != 3 {
 35846  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 35847  		return TCL_ERROR
 35848  	}
 35849  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 35850  		return TCL_ERROR
 35851  	}
 35852  	tcl.XTcl_SetObjResult(tls, interp,
 35853  		tcl.XTcl_NewIntObj(tls,
 35854  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))))))
 35855  	return TCL_OK
 35856  }
 35857  
 35858  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35859  	bp := tls.Alloc(4)
 35860  	defer tls.Free(4)
 35861  
 35862  	if objc != 2 {
 35863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35864  		return TCL_ERROR
 35865  	}
 35866  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 35867  		return TCL_ERROR
 35868  	}
 35869  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35870  	return TCL_OK
 35871  }
 35872  
 35873  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35874  	bp := tls.Alloc(4)
 35875  	defer tls.Free(4)
 35876  
 35877  	if objc != 2 {
 35878  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 35879  		return TCL_ERROR
 35880  	}
 35881  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 35882  		return TCL_ERROR
 35883  	}
 35884  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 35885  	return TCL_OK
 35886  }
 35887  
 35888  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35889  	bp := tls.Alloc(52)
 35890  	defer tls.Free(52)
 35891  
 35892  	var rc int32
 35893  
 35894  	if objc != 2 {
 35895  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35896  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35897  		return TCL_ERROR
 35898  	}
 35899  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 35900  		return TCL_ERROR
 35901  	}
 35902  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35903  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35904  	return TCL_OK
 35905  }
 35906  
 35907  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35908  	bp := tls.Alloc(52)
 35909  	defer tls.Free(52)
 35910  
 35911  	var rc int32
 35912  
 35913  	if objc != 2 {
 35914  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35915  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35916  		return TCL_ERROR
 35917  	}
 35918  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 35919  		return TCL_ERROR
 35920  	}
 35921  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35922  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35923  	return TCL_OK
 35924  }
 35925  
 35926  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35927  	bp := tls.Alloc(36)
 35928  	defer tls.Free(36)
 35929  
 35930  	var zErr uintptr
 35931  
 35932  	if objc != 2 {
 35933  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35934  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35935  		return TCL_ERROR
 35936  	}
 35937  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35938  		return TCL_ERROR
 35939  	}
 35940  
 35941  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35942  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 35943  	return TCL_OK
 35944  }
 35945  
 35946  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35947  	bp := tls.Alloc(36)
 35948  	defer tls.Free(36)
 35949  
 35950  	var iByteOffset int32
 35951  
 35952  	if objc != 2 {
 35953  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35954  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35955  		return TCL_ERROR
 35956  	}
 35957  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35958  		return TCL_ERROR
 35959  	}
 35960  
 35961  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35962  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 35963  	return TCL_OK
 35964  }
 35965  
 35966  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35967  	bp := tls.Alloc(36)
 35968  	defer tls.Free(36)
 35969  
 35970  	var zErr uintptr
 35971  	var z uintptr
 35972  	var bytes int32 = 0
 35973  
 35974  	if objc != 2 {
 35975  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35976  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35977  		return TCL_ERROR
 35978  	}
 35979  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 35980  		return TCL_ERROR
 35981  	}
 35982  
 35983  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35984  	if zErr != 0 {
 35985  		z = zErr
 35986  		for bytes = 0; *(*int8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 35987  		}
 35988  	}
 35989  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 35990  	return TCL_OK
 35991  }
 35992  
 35993  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35994  	bp := tls.Alloc(146)
 35995  	defer tls.Free(146)
 35996  
 35997  	var zSql uintptr
 35998  
 35999  	*(*uintptr)(unsafe.Pointer(bp + 92)) = uintptr(0)
 36000  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 36001  
 36002  	var rc int32
 36003  
 36004  	if objc != 5 && objc != 4 {
 36005  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36006  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36007  		return TCL_ERROR
 36008  	}
 36009  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+80) != 0 {
 36010  		return TCL_ERROR
 36011  	}
 36012  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 36013  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+84) != 0 {
 36014  		return TCL_ERROR
 36015  	}
 36016  
 36017  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 84)), bp+88, func() uintptr {
 36018  		if objc >= 5 {
 36019  			return bp + 92
 36020  		}
 36021  		return uintptr(0)
 36022  	}())
 36023  	tcl.XTcl_ResetResult(tls, interp)
 36024  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36025  		return TCL_ERROR
 36026  	}
 36027  	if *(*uintptr)(unsafe.Pointer(bp + 92)) != 0 && objc >= 5 {
 36028  		if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 36029  			*(*int32)(unsafe.Pointer(bp + 84)) = *(*int32)(unsafe.Pointer(bp + 84)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 92)))-int32(zSql))/1
 36030  		}
 36031  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 92)))) < *(*int32)(unsafe.Pointer(bp + 84)) {
 36032  			*(*int32)(unsafe.Pointer(bp + 84)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 92))))
 36033  		}
 36034  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 92)), *(*int32)(unsafe.Pointer(bp + 84))), 0)
 36035  	}
 36036  	if rc != SQLITE_OK {
 36037  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 36038  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36039  		return TCL_ERROR
 36040  	}
 36041  
 36042  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 36043  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 36044  			return TCL_ERROR
 36045  		}
 36046  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 36047  	}
 36048  	return TCL_OK
 36049  }
 36050  
 36051  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36052  	bp := tls.Alloc(146)
 36053  	defer tls.Free(146)
 36054  
 36055  	var zSql uintptr
 36056  	var zCopy uintptr = uintptr(0)
 36057  
 36058  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 36059  	var pzTail uintptr
 36060  	*(*uintptr)(unsafe.Pointer(bp + 92)) = uintptr(0)
 36061  
 36062  	var rc int32
 36063  
 36064  	if objc != 5 && objc != 4 {
 36065  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36066  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36067  		return TCL_ERROR
 36068  	}
 36069  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+80) != 0 {
 36070  		return TCL_ERROR
 36071  	}
 36072  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 36073  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+84) != 0 {
 36074  		return TCL_ERROR
 36075  	}
 36076  
 36077  	if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 36078  		zCopy = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 84))))
 36079  		libc.Xmemcpy(tls, zCopy, zSql, uint32(*(*int32)(unsafe.Pointer(bp + 84))))
 36080  	} else {
 36081  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36082  		zCopy = libc.Xmalloc(tls, uint32(n))
 36083  		libc.Xmemcpy(tls, zCopy, zSql, uint32(n))
 36084  	}
 36085  	if objc >= 5 {
 36086  		pzTail = bp + 88
 36087  	} else {
 36088  		pzTail = uintptr(0)
 36089  	}
 36090  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 84)), bp+92, pzTail)
 36091  	if objc >= 5 {
 36092  		*(*uintptr)(unsafe.Pointer(bp + 88)) = zSql + uintptr((int32(*(*uintptr)(unsafe.Pointer(bp + 88)))-int32(zCopy))/1)
 36093  	}
 36094  	libc.Xfree(tls, zCopy)
 36095  
 36096  	tcl.XTcl_ResetResult(tls, interp)
 36097  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36098  		return TCL_ERROR
 36099  	}
 36100  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 36101  		if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 36102  			*(*int32)(unsafe.Pointer(bp + 84)) = *(*int32)(unsafe.Pointer(bp + 84)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 88)))-int32(zSql))/1
 36103  		}
 36104  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), *(*int32)(unsafe.Pointer(bp + 84))), 0)
 36105  	}
 36106  	if rc != SQLITE_OK {
 36107  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 36108  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36109  		return TCL_ERROR
 36110  	}
 36111  
 36112  	if *(*uintptr)(unsafe.Pointer(bp + 92)) != 0 {
 36113  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 92))) != 0 {
 36114  			return TCL_ERROR
 36115  		}
 36116  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 36117  	}
 36118  	return TCL_OK
 36119  }
 36120  
 36121  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36122  	bp := tls.Alloc(150)
 36123  	defer tls.Free(150)
 36124  
 36125  	var zSql uintptr
 36126  	var zCopy uintptr = uintptr(0)
 36127  
 36128  	*(*uintptr)(unsafe.Pointer(bp + 92)) = uintptr(0)
 36129  	var pzTail uintptr
 36130  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 36131  
 36132  	var rc int32
 36133  
 36134  	if objc != 6 && objc != 5 {
 36135  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36136  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 36137  		return TCL_ERROR
 36138  	}
 36139  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+80) != 0 {
 36140  		return TCL_ERROR
 36141  	}
 36142  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 36143  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+84) != 0 {
 36144  		return TCL_ERROR
 36145  	}
 36146  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+88) != 0 {
 36147  		return TCL_ERROR
 36148  	}
 36149  
 36150  	if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 36151  		zCopy = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 84))))
 36152  		libc.Xmemcpy(tls, zCopy, zSql, uint32(*(*int32)(unsafe.Pointer(bp + 84))))
 36153  	} else {
 36154  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 36155  		zCopy = libc.Xmalloc(tls, uint32(n))
 36156  		libc.Xmemcpy(tls, zCopy, zSql, uint32(n))
 36157  	}
 36158  	if objc >= 6 {
 36159  		pzTail = bp + 92
 36160  	} else {
 36161  		pzTail = uintptr(0)
 36162  	}
 36163  	rc = sqlite3.Xsqlite3_prepare_v3(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 84)), uint32(*(*int32)(unsafe.Pointer(bp + 88))), bp+96, pzTail)
 36164  	libc.Xfree(tls, zCopy)
 36165  	*(*uintptr)(unsafe.Pointer(bp + 92)) = zSql + uintptr((int32(*(*uintptr)(unsafe.Pointer(bp + 92)))-int32(zCopy))/1)
 36166  
 36167  	tcl.XTcl_ResetResult(tls, interp)
 36168  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36169  		return TCL_ERROR
 36170  	}
 36171  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 92)) != 0 && objc >= 6 {
 36172  		if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 36173  			*(*int32)(unsafe.Pointer(bp + 84)) = *(*int32)(unsafe.Pointer(bp + 84)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 92)))-int32(zSql))/1
 36174  		}
 36175  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*4)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 92)), *(*int32)(unsafe.Pointer(bp + 84))), 0)
 36176  	}
 36177  	if rc != SQLITE_OK {
 36178  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+100, ts+16476, libc.VaList(bp+32, rc))
 36179  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+100, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36180  		return TCL_ERROR
 36181  	}
 36182  
 36183  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 36184  		if sqlite3TestMakePointerStr(tls, interp, bp+100, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 36185  			return TCL_ERROR
 36186  		}
 36187  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+100, 0))
 36188  	}
 36189  	return TCL_OK
 36190  }
 36191  
 36192  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36193  	bp := tls.Alloc(138)
 36194  	defer tls.Free(138)
 36195  
 36196  	*(*uintptr)(unsafe.Pointer(bp + 84)) = uintptr(0)
 36197  
 36198  	var rc int32
 36199  
 36200  	if objc != 2 {
 36201  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36202  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 36203  		return TCL_ERROR
 36204  	}
 36205  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+80) != 0 {
 36206  		return TCL_ERROR
 36207  	}
 36208  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+84, uintptr(0))
 36209  
 36210  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 36211  		return TCL_ERROR
 36212  	}
 36213  	if rc != SQLITE_OK {
 36214  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+88, ts+16476, libc.VaList(bp+32, rc))
 36215  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+88, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 36216  		return TCL_ERROR
 36217  	}
 36218  
 36219  	if *(*uintptr)(unsafe.Pointer(bp + 84)) != 0 {
 36220  		if sqlite3TestMakePointerStr(tls, interp, bp+88, *(*uintptr)(unsafe.Pointer(bp + 84))) != 0 {
 36221  			return TCL_ERROR
 36222  		}
 36223  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+88, 0))
 36224  	}
 36225  	return TCL_OK
 36226  }
 36227  
 36228  var zSql = *(*[10]int8)(unsafe.Pointer(ts + 17138))
 36229  
 36230  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36231  	bp := tls.Alloc(118)
 36232  	defer tls.Free(118)
 36233  
 36234  	var zSql uintptr
 36235  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36236  	var pTail uintptr = uintptr(0)
 36237  	*(*uintptr)(unsafe.Pointer(bp + 60)) = uintptr(0)
 36238  
 36239  	var rc int32
 36240  
 36241  	if objc != 5 && objc != 4 {
 36242  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36243  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36244  		return TCL_ERROR
 36245  	}
 36246  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 36247  		return TCL_ERROR
 36248  	}
 36249  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+52)
 36250  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+56) != 0 {
 36251  		return TCL_ERROR
 36252  	}
 36253  
 36254  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 56)), bp+60, func() uintptr {
 36255  		if objc >= 5 {
 36256  			return bp + 64
 36257  		}
 36258  		return uintptr(0)
 36259  	}())
 36260  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36261  		return TCL_ERROR
 36262  	}
 36263  	if rc != 0 {
 36264  		return TCL_ERROR
 36265  	}
 36266  
 36267  	if objc >= 5 {
 36268  		if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36269  			*(*int32)(unsafe.Pointer(bp + 52)) = *(*int32)(unsafe.Pointer(bp + 52)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 64)))-int32(zSql))/1
 36270  		} else {
 36271  			*(*int32)(unsafe.Pointer(bp + 52)) = 0
 36272  		}
 36273  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 52)))
 36274  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36275  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0), pTail, 0)
 36276  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36277  			var _objPtr uintptr = pTail
 36278  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36279  				tcl.XTclFreeObj(tls, _objPtr)
 36280  			}
 36281  		}
 36282  	}
 36283  
 36284  	if *(*uintptr)(unsafe.Pointer(bp + 60)) != 0 {
 36285  		if sqlite3TestMakePointerStr(tls, interp, bp+68, *(*uintptr)(unsafe.Pointer(bp + 60))) != 0 {
 36286  			return TCL_ERROR
 36287  		}
 36288  	}
 36289  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+68, 0))
 36290  	return TCL_OK
 36291  }
 36292  
 36293  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36294  	bp := tls.Alloc(118)
 36295  	defer tls.Free(118)
 36296  
 36297  	var zSql uintptr
 36298  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 36299  	var pTail uintptr = uintptr(0)
 36300  	*(*uintptr)(unsafe.Pointer(bp + 60)) = uintptr(0)
 36301  
 36302  	var rc int32
 36303  
 36304  	if objc != 5 && objc != 4 {
 36305  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36306  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 36307  		return TCL_ERROR
 36308  	}
 36309  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 36310  		return TCL_ERROR
 36311  	}
 36312  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+52)
 36313  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+56) != 0 {
 36314  		return TCL_ERROR
 36315  	}
 36316  
 36317  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 56)), bp+60, func() uintptr {
 36318  		if objc >= 5 {
 36319  			return bp + 64
 36320  		}
 36321  		return uintptr(0)
 36322  	}())
 36323  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 36324  		return TCL_ERROR
 36325  	}
 36326  	if rc != 0 {
 36327  		return TCL_ERROR
 36328  	}
 36329  
 36330  	if objc >= 5 {
 36331  		if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 36332  			*(*int32)(unsafe.Pointer(bp + 52)) = *(*int32)(unsafe.Pointer(bp + 52)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 64)))-int32(zSql))/1
 36333  		} else {
 36334  			*(*int32)(unsafe.Pointer(bp + 52)) = 0
 36335  		}
 36336  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 52)))
 36337  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 36338  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0), pTail, 0)
 36339  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36340  			var _objPtr uintptr = pTail
 36341  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36342  				tcl.XTclFreeObj(tls, _objPtr)
 36343  			}
 36344  		}
 36345  	}
 36346  
 36347  	if *(*uintptr)(unsafe.Pointer(bp + 60)) != 0 {
 36348  		if sqlite3TestMakePointerStr(tls, interp, bp+68, *(*uintptr)(unsafe.Pointer(bp + 60))) != 0 {
 36349  			return TCL_ERROR
 36350  		}
 36351  	}
 36352  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+68, 0))
 36353  	return TCL_OK
 36354  }
 36355  
 36356  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36357  	bp := tls.Alloc(152)
 36358  	defer tls.Free(152)
 36359  
 36360  	var zFilename uintptr
 36361  
 36362  	if objc != 3 && objc != 2 && objc != 1 {
 36363  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36364  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36365  		return TCL_ERROR
 36366  	}
 36367  
 36368  	if objc > 1 {
 36369  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 36370  	} else {
 36371  		zFilename = uintptr(0)
 36372  	}
 36373  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 36374  
 36375  	if sqlite3TestMakePointerStr(tls, interp, bp+52, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36376  		return TCL_ERROR
 36377  	}
 36378  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+52, 0))
 36379  	return TCL_OK
 36380  }
 36381  
 36382  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36383  	bp := tls.Alloc(300)
 36384  	defer tls.Free(300)
 36385  
 36386  	var zFilename uintptr
 36387  	var zVfs uintptr
 36388  	var flags int32 = 0
 36389  
 36390  	var rc int32
 36391  
 36392  	var i int32
 36393  
 36394  	if objc != 4 {
 36395  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 36396  		return TCL_ERROR
 36397  	}
 36398  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 36399  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 36400  	if int32(*(*int8)(unsafe.Pointer(zVfs))) == 0x00 {
 36401  		zVfs = uintptr(0)
 36402  	}
 36403  
 36404  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16, bp+20)
 36405  	if rc != TCL_OK {
 36406  		return rc
 36407  	}
 36408  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 36409  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 24)) = [21]OpenFlag{
 36410  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 36411  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 36412  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 36413  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 36414  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 36415  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 36416  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 36417  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 36418  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 36419  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 36420  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 36421  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 36422  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 36423  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 36424  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 36425  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 36426  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 36427  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 36428  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 36429  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 36430  			{},
 36431  		}
 36432  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 20)) + uintptr(i)*4)), bp+24, int32(unsafe.Sizeof(OpenFlag{})),
 36433  			ts+17631, 0, bp+192)
 36434  		if rc != TCL_OK {
 36435  			return rc
 36436  		}
 36437  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 192)))*8)).Fflag
 36438  	}
 36439  
 36440  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+196, flags, zVfs)
 36441  	if sqlite3TestMakePointerStr(tls, interp, bp+200, *(*uintptr)(unsafe.Pointer(bp + 196))) != 0 {
 36442  		return TCL_ERROR
 36443  	}
 36444  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+200, 0))
 36445  	return TCL_OK
 36446  }
 36447  
 36448  type OpenFlag = struct {
 36449  	FzFlag uintptr
 36450  	Fflag  int32
 36451  }
 36452  
 36453  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36454  	bp := tls.Alloc(152)
 36455  	defer tls.Free(152)
 36456  
 36457  	var zFilename uintptr
 36458  
 36459  	if objc != 3 {
 36460  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36461  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 36462  		return TCL_ERROR
 36463  	}
 36464  
 36465  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(0))
 36466  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 36467  
 36468  	if sqlite3TestMakePointerStr(tls, interp, bp+52, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 36469  		return TCL_ERROR
 36470  	}
 36471  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+52, 0))
 36472  	return TCL_OK
 36473  }
 36474  
 36475  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36476  	var zBuf uintptr
 36477  
 36478  	if objc != 2 {
 36479  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 36480  		return TCL_ERROR
 36481  	}
 36482  
 36483  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(0))
 36484  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 36485  	return TCL_OK
 36486  }
 36487  
 36488  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36489  	var zSql uintptr
 36490  	var zNorm uintptr
 36491  
 36492  	if objc != 2 {
 36493  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 36494  		return TCL_ERROR
 36495  	}
 36496  
 36497  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 36498  	zNorm = sqlite3_normalize(tls, zSql)
 36499  	if zNorm != 0 {
 36500  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 36501  		sqlite3.Xsqlite3_free(tls, zNorm)
 36502  	}
 36503  	return TCL_OK
 36504  }
 36505  
 36506  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36507  	bp := tls.Alloc(36)
 36508  	defer tls.Free(36)
 36509  
 36510  	var rc int32
 36511  
 36512  	if objc != 2 {
 36513  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36514  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 36515  		return TCL_ERROR
 36516  	}
 36517  
 36518  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36519  		return TCL_ERROR
 36520  	}
 36521  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36522  
 36523  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36524  	return TCL_OK
 36525  }
 36526  
 36527  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36528  	bp := tls.Alloc(4)
 36529  	defer tls.Free(4)
 36530  
 36531  	if objc != 2 {
 36532  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36533  		return TCL_ERROR
 36534  	}
 36535  
 36536  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 36537  		return TCL_ERROR
 36538  	}
 36539  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 36540  	return TCL_OK
 36541  }
 36542  
 36543  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36544  	bp := tls.Alloc(4)
 36545  	defer tls.Free(4)
 36546  
 36547  	var z uintptr
 36548  
 36549  	if objc != 2 {
 36550  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 36551  		return TCL_ERROR
 36552  	}
 36553  
 36554  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 36555  		return TCL_ERROR
 36556  	}
 36557  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36558  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 36559  	sqlite3.Xsqlite3_free(tls, z)
 36560  	return TCL_OK
 36561  }
 36562  
 36563  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36564  	bp := tls.Alloc(36)
 36565  	defer tls.Free(36)
 36566  
 36567  	if objc != 2 {
 36568  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36569  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36570  		return TCL_ERROR
 36571  	}
 36572  
 36573  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36574  		return TCL_ERROR
 36575  	}
 36576  
 36577  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36578  	return TCL_OK
 36579  }
 36580  
 36581  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36582  	bp := tls.Alloc(40)
 36583  	defer tls.Free(40)
 36584  
 36585  	var tp int32
 36586  
 36587  	if objc != 3 {
 36588  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36589  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36590  		return TCL_ERROR
 36591  	}
 36592  
 36593  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36594  		return TCL_ERROR
 36595  	}
 36596  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36597  		return TCL_ERROR
 36598  	}
 36599  
 36600  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36601  	switch tp {
 36602  	case SQLITE_INTEGER:
 36603  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 36604  		break
 36605  	case SQLITE_NULL:
 36606  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 36607  		break
 36608  	case SQLITE_FLOAT:
 36609  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 36610  		break
 36611  	case SQLITE_TEXT:
 36612  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 36613  		break
 36614  	case SQLITE_BLOB:
 36615  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 36616  		break
 36617  	default:
 36618  	}
 36619  
 36620  	return TCL_OK
 36621  }
 36622  
 36623  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36624  	bp := tls.Alloc(40)
 36625  	defer tls.Free(40)
 36626  
 36627  	var iVal i64
 36628  
 36629  	if objc != 3 {
 36630  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36631  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36632  		return TCL_ERROR
 36633  	}
 36634  
 36635  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36636  		return TCL_ERROR
 36637  	}
 36638  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36639  		return TCL_ERROR
 36640  	}
 36641  
 36642  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36643  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 36644  	return TCL_OK
 36645  }
 36646  
 36647  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36648  	bp := tls.Alloc(40)
 36649  	defer tls.Free(40)
 36650  
 36651  	var len int32
 36652  	var pBlob uintptr
 36653  
 36654  	if objc != 3 {
 36655  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36656  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36657  		return TCL_ERROR
 36658  	}
 36659  
 36660  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36661  		return TCL_ERROR
 36662  	}
 36663  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36664  		return TCL_ERROR
 36665  	}
 36666  
 36667  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36668  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36669  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 36670  	return TCL_OK
 36671  }
 36672  
 36673  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36674  	bp := tls.Alloc(40)
 36675  	defer tls.Free(40)
 36676  
 36677  	var rVal float64
 36678  
 36679  	if objc != 3 {
 36680  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36681  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36682  		return TCL_ERROR
 36683  	}
 36684  
 36685  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36686  		return TCL_ERROR
 36687  	}
 36688  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36689  		return TCL_ERROR
 36690  	}
 36691  
 36692  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36693  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 36694  	return TCL_OK
 36695  }
 36696  
 36697  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36698  	bp := tls.Alloc(36)
 36699  	defer tls.Free(36)
 36700  
 36701  	if objc != 2 {
 36702  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36703  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36704  		return TCL_ERROR
 36705  	}
 36706  
 36707  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36708  		return TCL_ERROR
 36709  	}
 36710  
 36711  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36712  	return TCL_OK
 36713  }
 36714  
 36715  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36716  	bp := tls.Alloc(40)
 36717  	defer tls.Free(40)
 36718  
 36719  	var xFunc uintptr
 36720  	var zRet uintptr
 36721  
 36722  	xFunc = clientData
 36723  	if objc != 3 {
 36724  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36725  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36726  		return TCL_ERROR
 36727  	}
 36728  
 36729  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36730  		return TCL_ERROR
 36731  	}
 36732  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36733  		return TCL_ERROR
 36734  	}
 36735  	zRet = (*struct {
 36736  		f func(*libc.TLS, uintptr, int32) uintptr
 36737  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36738  	if zRet != 0 {
 36739  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 36740  	}
 36741  	return TCL_OK
 36742  }
 36743  
 36744  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36745  	var rc int32
 36746  	if objc != 1 {
 36747  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36748  		return TCL_ERROR
 36749  	}
 36750  	rc = sqlite3.Xsqlite3_global_recover(tls)
 36751  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36752  	return TCL_OK
 36753  }
 36754  
 36755  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36756  	bp := tls.Alloc(40)
 36757  	defer tls.Free(40)
 36758  
 36759  	var pRet uintptr
 36760  	var zName16 uintptr
 36761  	var xFunc uintptr
 36762  
 36763  	xFunc = clientData
 36764  	if objc != 3 {
 36765  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36766  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36767  		return TCL_ERROR
 36768  	}
 36769  
 36770  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36771  		return TCL_ERROR
 36772  	}
 36773  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36774  		return TCL_ERROR
 36775  	}
 36776  
 36777  	zName16 = (*struct {
 36778  		f func(*libc.TLS, uintptr, int32) uintptr
 36779  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))
 36780  	if zName16 != 0 {
 36781  		var n int32
 36782  		var z uintptr = zName16
 36783  		for n = 0; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 36784  		}
 36785  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 36786  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 36787  	}
 36788  
 36789  	return TCL_OK
 36790  }
 36791  
 36792  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36793  	bp := tls.Alloc(40)
 36794  	defer tls.Free(40)
 36795  
 36796  	var xFunc uintptr
 36797  
 36798  	xFunc = clientData
 36799  	if objc != 3 {
 36800  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36801  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36802  		return TCL_ERROR
 36803  	}
 36804  
 36805  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 36806  		return TCL_ERROR
 36807  	}
 36808  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 36809  		return TCL_ERROR
 36810  	}
 36811  
 36812  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 36813  		f func(*libc.TLS, uintptr, int32) int32
 36814  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))))
 36815  	return TCL_OK
 36816  }
 36817  
 36818  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36819  	bp := tls.Alloc(36)
 36820  	defer tls.Free(36)
 36821  
 36822  	if argc != 2 {
 36823  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 36824  		return TCL_ERROR
 36825  	}
 36826  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 36827  		return TCL_ERROR
 36828  	}
 36829  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36830  	return TCL_OK
 36831  }
 36832  
 36833  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36834  	bp := tls.Alloc(36)
 36835  	defer tls.Free(36)
 36836  
 36837  	var rc int32
 36838  
 36839  	if argc != 3 {
 36840  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36841  			ts+17678, 0))
 36842  		return TCL_ERROR
 36843  	}
 36844  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 36845  		return TCL_ERROR
 36846  	}
 36847  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*4)), -1, SQLITE_UTF8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 36848  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36849  	return TCL_OK
 36850  }
 36851  
 36852  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36853  	bp := tls.Alloc(36)
 36854  	defer tls.Free(36)
 36855  
 36856  	var rc int32
 36857  
 36858  	if argc != 3 {
 36859  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36860  			ts+17678, 0))
 36861  		return TCL_ERROR
 36862  	}
 36863  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+32) != 0 {
 36864  		return TCL_ERROR
 36865  	}
 36866  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*4)), SQLITE_UTF8, uintptr(0), uintptr(0))
 36867  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36868  	return TCL_OK
 36869  }
 36870  
 36871  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36872  	bp := tls.Alloc(90)
 36873  	defer tls.Free(90)
 36874  
 36875  	if argc != 2 {
 36876  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36877  			ts+15001, 0))
 36878  		return TCL_ERROR
 36879  	}
 36880  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+56) != 0 {
 36881  		return TCL_ERROR
 36882  	}
 36883  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+60, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3_get_autocommit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 36884  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 36885  	return TCL_OK
 36886  }
 36887  
 36888  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36889  	bp := tls.Alloc(56)
 36890  	defer tls.Free(56)
 36891  
 36892  	var rc int32
 36893  
 36894  	if argc != 3 {
 36895  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36896  			ts+15001, 0))
 36897  		return TCL_ERROR
 36898  	}
 36899  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+48) != 0 {
 36900  		return TCL_ERROR
 36901  	}
 36902  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+52) != 0 {
 36903  		return TCL_ERROR
 36904  	}
 36905  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52)))
 36906  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36907  	return TCL_OK
 36908  }
 36909  
 36910  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36911  	var pVar uintptr
 36912  	if objc != 2 {
 36913  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 36914  		return TCL_ERROR
 36915  	}
 36916  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0), TCL_LEAVE_ERR_MSG)
 36917  	if pVar == uintptr(0) {
 36918  		return TCL_ERROR
 36919  	}
 36920  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 36921  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 36922  	}
 36923  	return TCL_OK
 36924  }
 36925  
 36926  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36927  	bp := tls.Alloc(4)
 36928  	defer tls.Free(4)
 36929  
 36930  	var amt int32
 36931  	if objc != 1 && objc != 2 {
 36932  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36933  		return TCL_ERROR
 36934  	}
 36935  	if objc == 2 {
 36936  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 36937  			return TCL_ERROR
 36938  		}
 36939  	} else {
 36940  		*(*int32)(unsafe.Pointer(bp)) = -1
 36941  	}
 36942  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 36943  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 36944  	return TCL_OK
 36945  }
 36946  
 36947  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36948  	bp := tls.Alloc(4)
 36949  	defer tls.Free(4)
 36950  
 36951  	var rc int32
 36952  	if objc != 2 {
 36953  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36954  		return TCL_ERROR
 36955  	}
 36956  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 36957  		return TCL_ERROR
 36958  	}
 36959  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36960  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36961  	return TCL_OK
 36962  }
 36963  
 36964  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36965  	bp := tls.Alloc(4)
 36966  	defer tls.Free(4)
 36967  
 36968  	var rc int32
 36969  	if objc != 2 {
 36970  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36971  		return TCL_ERROR
 36972  	}
 36973  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 36974  		return TCL_ERROR
 36975  	}
 36976  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36977  	if rc != 0 {
 36978  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 36979  		return TCL_ERROR
 36980  	}
 36981  
 36982  	tcl.XTcl_ResetResult(tls, interp)
 36983  	return TCL_OK
 36984  }
 36985  
 36986  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36987  	bp := tls.Alloc(4)
 36988  	defer tls.Free(4)
 36989  
 36990  	var iErrno int32
 36991  	if objc != 2 {
 36992  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36993  		return TCL_ERROR
 36994  	}
 36995  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 36996  		return TCL_ERROR
 36997  	}
 36998  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36999  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 37000  	return TCL_OK
 37001  }
 37002  
 37003  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37004  	bp := tls.Alloc(20)
 37005  	defer tls.Free(20)
 37006  
 37007  	var zDbName uintptr
 37008  	if objc != 3 {
 37009  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37010  		return TCL_ERROR
 37011  	}
 37012  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 37013  		return TCL_ERROR
 37014  	}
 37015  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37016  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 37017  	return TCL_OK
 37018  }
 37019  
 37020  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37021  	bp := tls.Alloc(4)
 37022  	defer tls.Free(4)
 37023  
 37024  	var zDbName uintptr
 37025  	if objc != 3 {
 37026  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 37027  		return TCL_ERROR
 37028  	}
 37029  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 37030  		return TCL_ERROR
 37031  	}
 37032  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37033  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 37034  	return TCL_OK
 37035  }
 37036  
 37037  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37038  	bp := tls.Alloc(8)
 37039  	defer tls.Free(8)
 37040  
 37041  	var amt sqlite3_int64
 37042  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37043  	if objc != 1 && objc != 2 {
 37044  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37045  		return TCL_ERROR
 37046  	}
 37047  	if objc == 2 {
 37048  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 37049  			return TCL_ERROR
 37050  		}
 37051  	}
 37052  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37053  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37054  	return TCL_OK
 37055  }
 37056  
 37057  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37058  	bp := tls.Alloc(8)
 37059  	defer tls.Free(8)
 37060  
 37061  	var amt sqlite3_int64
 37062  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 37063  	if objc != 1 && objc != 2 {
 37064  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 37065  		return TCL_ERROR
 37066  	}
 37067  	if objc == 2 {
 37068  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 37069  			return TCL_ERROR
 37070  		}
 37071  	}
 37072  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 37073  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 37074  	return TCL_OK
 37075  }
 37076  
 37077  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37078  	sqlite3.Xsqlite3_thread_cleanup(tls)
 37079  	return TCL_OK
 37080  }
 37081  
 37082  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37083  	bp := tls.Alloc(36)
 37084  	defer tls.Free(36)
 37085  
 37086  	var i int32
 37087  	var v int32
 37088  	var a uintptr
 37089  	var pResult uintptr
 37090  
 37091  	if objc != 2 {
 37092  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37093  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37094  		return TCL_ERROR
 37095  	}
 37096  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 37097  		return TCL_ERROR
 37098  	}
 37099  	pResult = tcl.XTcl_NewObj(tls)
 37100  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 37101  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*16)).FpBt == uintptr(0) {
 37102  			v = -1
 37103  		} else {
 37104  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37105  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*16)).FpBt))
 37106  			v = *(*int32)(unsafe.Pointer(a))
 37107  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 37108  		}
 37109  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 37110  	}
 37111  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 37112  	return TCL_OK
 37113  }
 37114  
 37115  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37116  	var pTestObj uintptr
 37117  	var working int32 = 0
 37118  
 37119  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 37120  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 37121  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37122  		var _objPtr uintptr = pTestObj
 37123  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37124  			tcl.XTclFreeObj(tls, _objPtr)
 37125  		}
 37126  	}
 37127  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 37128  	return TCL_OK
 37129  }
 37130  
 37131  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37132  	bp := tls.Alloc(256)
 37133  	defer tls.Free(256)
 37134  
 37135  	var i int32
 37136  	var pMain uintptr
 37137  
 37138  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 37139  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37140  	(*sqlite3_vfs)(unsafe.Pointer(bp + 88)).FzName = ts + 17732
 37141  
 37142  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37143  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37144  
 37145  	sqlite3.Xsqlite3_vfs_register(tls, bp+88, 0)
 37146  
 37147  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37148  
 37149  	sqlite3.Xsqlite3_vfs_register(tls, bp+88, 1)
 37150  
 37151  	if pMain != 0 {
 37152  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 37153  
 37154  	}
 37155  
 37156  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([20]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 37157  		*(*uintptr)(unsafe.Pointer(bp + 176 + uintptr(i)*4)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37158  		if *(*uintptr)(unsafe.Pointer(bp + 176 + uintptr(i)*4)) != 0 {
 37159  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 176 + uintptr(i)*4)))
 37160  
 37161  		}
 37162  	}
 37163  
 37164  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 37165  
 37166  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 37167  
 37168  	for i = int32(uint32(unsafe.Sizeof([20]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))) - uint32(1)); i >= 0; i-- {
 37169  		if *(*uintptr)(unsafe.Pointer(bp + 176 + uintptr(i)*4)) != 0 {
 37170  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 176 + uintptr(i)*4)), 1)
 37171  
 37172  		}
 37173  	}
 37174  
 37175  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37176  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+88)
 37177  
 37178  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 37179  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+88)
 37180  
 37181  	return TCL_OK
 37182  }
 37183  
 37184  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37185  	bp := tls.Alloc(88)
 37186  	defer tls.Free(88)
 37187  
 37188  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 37189  
 37190  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37191  		return TCL_ERROR
 37192  	}
 37193  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 37194  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37195  		return TCL_ERROR
 37196  	}
 37197  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 37198  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 37199  		return TCL_ERROR
 37200  	}
 37201  	return TCL_OK
 37202  }
 37203  
 37204  var apVfs [20]uintptr
 37205  var nVfs int32 = 0
 37206  
 37207  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37208  	var i int32
 37209  	for i = 0; i < int32(uint32(unsafe.Sizeof(apVfs))/uint32(unsafe.Sizeof(uintptr(0)))); i++ {
 37210  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 37211  		if apVfs[i] == uintptr(0) {
 37212  			break
 37213  		}
 37214  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 37215  	}
 37216  	nVfs = i
 37217  	return TCL_OK
 37218  }
 37219  
 37220  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37221  	var i int32
 37222  	for i = nVfs - 1; i >= 0; i-- {
 37223  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 37224  	}
 37225  	return TCL_OK
 37226  }
 37227  
 37228  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37229  	bp := tls.Alloc(40)
 37230  	defer tls.Free(40)
 37231  
 37232  	*(*int32)(unsafe.Pointer(bp + 36)) = 0
 37233  
 37234  	var rc int32
 37235  	_ = rc
 37236  
 37237  	if objc != 2 {
 37238  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37239  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37240  		return TCL_ERROR
 37241  	}
 37242  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 37243  		return TCL_ERROR
 37244  	}
 37245  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+36)
 37246  
 37247  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+36)
 37248  
 37249  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+36)
 37250  
 37251  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+36)
 37252  
 37253  	return TCL_OK
 37254  }
 37255  
 37256  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37257  	bp := tls.Alloc(72)
 37258  	defer tls.Free(72)
 37259  
 37260  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 37261  
 37262  	var rc int32
 37263  
 37264  	if objc != 2 {
 37265  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37266  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 37267  		return TCL_ERROR
 37268  	}
 37269  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 37270  		return TCL_ERROR
 37271  	}
 37272  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+68)
 37273  	if rc != 0 {
 37274  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37275  		return TCL_ERROR
 37276  	}
 37277  	if *(*int32)(unsafe.Pointer(bp + 68)) != 0 {
 37278  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 37279  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 68))), uintptr(0)), ts+4894, 0))
 37280  		return TCL_ERROR
 37281  	}
 37282  	return TCL_OK
 37283  }
 37284  
 37285  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37286  	bp := tls.Alloc(116)
 37287  	defer tls.Free(116)
 37288  
 37289  	var zDb uintptr
 37290  
 37291  	var rc int32
 37292  
 37293  	if objc != 3 && objc != 2 {
 37294  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 37295  		return TCL_ERROR
 37296  	}
 37297  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+8) != 0 {
 37298  		return TCL_ERROR
 37299  	}
 37300  	if objc == 3 {
 37301  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37302  	} else {
 37303  		zDb = uintptr(0)
 37304  	}
 37305  
 37306  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+12)
 37307  	if rc != 0 {
 37308  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37309  		return TCL_ERROR
 37310  	} else {
 37311  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+16, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 12))))
 37312  		tcl.XTcl_SetResult(tls, interp, bp+16, uintptr(1))
 37313  		return TCL_OK
 37314  	}
 37315  	return int32(0)
 37316  }
 37317  
 37318  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37319  	bp := tls.Alloc(8)
 37320  	defer tls.Free(8)
 37321  
 37322  	var zDb uintptr
 37323  
 37324  	var rc int32
 37325  
 37326  	if objc != 4 {
 37327  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37328  		return TCL_ERROR
 37329  	}
 37330  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 ||
 37331  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4) != 0 {
 37332  		return TCL_ERROR
 37333  	}
 37334  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37335  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 37336  		zDb = uintptr(0)
 37337  	}
 37338  
 37339  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+4)
 37340  	if rc != 0 {
 37341  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37342  		return TCL_ERROR
 37343  	}
 37344  	return TCL_OK
 37345  }
 37346  
 37347  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37348  	bp := tls.Alloc(12)
 37349  	defer tls.Free(12)
 37350  
 37351  	var zDb uintptr
 37352  
 37353  	var rc int32
 37354  
 37355  	if objc != 4 {
 37356  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 37357  		return TCL_ERROR
 37358  	}
 37359  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 ||
 37360  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4) != 0 {
 37361  		return TCL_ERROR
 37362  	}
 37363  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37364  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 37365  		zDb = uintptr(0)
 37366  	}
 37367  
 37368  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+4)
 37369  	if rc != 0 {
 37370  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37371  		return TCL_ERROR
 37372  	}
 37373  	return TCL_OK
 37374  }
 37375  
 37376  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37377  	bp := tls.Alloc(36)
 37378  	defer tls.Free(36)
 37379  
 37380  	if objc != 3 {
 37381  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37382  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 37383  		return TCL_ERROR
 37384  	}
 37385  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 37386  		return TCL_ERROR
 37387  	}
 37388  
 37389  	return TCL_OK
 37390  }
 37391  
 37392  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37393  	bp := tls.Alloc(172)
 37394  	defer tls.Free(172)
 37395  
 37396  	var rc int32
 37397  
 37398  	if objc != 3 {
 37399  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37400  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37401  		return TCL_ERROR
 37402  	}
 37403  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 37404  		return TCL_ERROR
 37405  	}
 37406  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+68) != 0 {
 37407  		return TCL_ERROR
 37408  	}
 37409  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+68)
 37410  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 68))))
 37411  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+72, uintptr(0)))
 37412  	return TCL_OK
 37413  }
 37414  
 37415  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37416  	bp := tls.Alloc(172)
 37417  	defer tls.Free(172)
 37418  
 37419  	var rc int32
 37420  
 37421  	if objc != 3 {
 37422  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37423  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 37424  		return TCL_ERROR
 37425  	}
 37426  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 37427  		return TCL_ERROR
 37428  	}
 37429  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+68) != 0 {
 37430  		return TCL_ERROR
 37431  	}
 37432  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+68)
 37433  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 68))))
 37434  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+72, uintptr(0)))
 37435  	return TCL_OK
 37436  }
 37437  
 37438  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37439  	bp := tls.Alloc(56)
 37440  	defer tls.Free(56)
 37441  
 37442  	var zDbName uintptr = ts + 85
 37443  	*(*uintptr)(unsafe.Pointer(bp + 52)) = uintptr(0)
 37444  
 37445  	if objc != 2 && objc != 3 {
 37446  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37447  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37448  		return TCL_ERROR
 37449  	}
 37450  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 37451  		return TCL_ERROR
 37452  	}
 37453  	if objc == 3 {
 37454  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37455  	}
 37456  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+52)
 37457  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 52)), uintptr(0)))
 37458  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 52)))
 37459  	return TCL_OK
 37460  }
 37461  
 37462  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37463  	bp := tls.Alloc(8)
 37464  	defer tls.Free(8)
 37465  
 37466  	var zDbName uintptr = ts + 85
 37467  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 37468  	var rc int32
 37469  
 37470  	if objc != 3 {
 37471  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 37472  		return TCL_ERROR
 37473  	}
 37474  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 ||
 37475  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 37476  		return TCL_ERROR
 37477  	}
 37478  
 37479  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+4)
 37480  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 37481  	return TCL_OK
 37482  }
 37483  
 37484  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37485  	bp := tls.Alloc(56)
 37486  	defer tls.Free(56)
 37487  
 37488  	var zDbName uintptr = ts + 85
 37489  	*(*uintptr)(unsafe.Pointer(bp + 52)) = uintptr(0)
 37490  
 37491  	if objc != 2 && objc != 3 {
 37492  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37493  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37494  		return TCL_ERROR
 37495  	}
 37496  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0 {
 37497  		return TCL_ERROR
 37498  	}
 37499  	if objc == 3 {
 37500  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37501  	}
 37502  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+52)
 37503  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 52)), uintptr(0)))
 37504  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 52)))
 37505  	return TCL_OK
 37506  }
 37507  
 37508  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37509  	bp := tls.Alloc(40)
 37510  	defer tls.Free(40)
 37511  
 37512  	var zName uintptr = ts + 85
 37513  	*(*int32)(unsafe.Pointer(bp + 36)) = 0
 37514  	var rc int32 = SQLITE_OK
 37515  
 37516  	if objc != 2 && objc != 3 {
 37517  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37518  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 37519  		return TCL_ERROR
 37520  	}
 37521  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 37522  		return TCL_ERROR
 37523  	}
 37524  	if objc == 3 {
 37525  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37526  	}
 37527  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+36)
 37528  	if rc != SQLITE_OK {
 37529  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37530  		return TCL_ERROR
 37531  	}
 37532  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 36))))
 37533  	return TCL_OK
 37534  }
 37535  
 37536  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37537  	var pVfs uintptr
 37538  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 37539  	if objc != 1 {
 37540  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 37541  		return TCL_ERROR
 37542  	}
 37543  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 37544  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 37545  	}
 37546  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37547  	return TCL_OK
 37548  }
 37549  
 37550  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37551  	bp := tls.Alloc(64)
 37552  	defer tls.Free(64)
 37553  
 37554  	var rc int32
 37555  	var i int32
 37556  	var id int32 = 0
 37557  
 37558  	var zId uintptr
 37559  
 37560  	if objc != 4 {
 37561  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 37562  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 37563  		return TCL_ERROR
 37564  	}
 37565  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+56) != 0 {
 37566  		return TCL_ERROR
 37567  	}
 37568  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37569  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aId))/uint32(unsafe.Sizeof(struct {
 37570  		FzName uintptr
 37571  		Fid    int32
 37572  	}{})); i++ {
 37573  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 37574  			id = aId[i].Fid
 37575  			break
 37576  		}
 37577  	}
 37578  	if uint32(i) >= uint32(unsafe.Sizeof(aId))/uint32(unsafe.Sizeof(struct {
 37579  		FzName uintptr
 37580  		Fid    int32
 37581  	}{})) {
 37582  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 37583  		return TCL_ERROR
 37584  	}
 37585  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+60) != 0 {
 37586  		return TCL_ERROR
 37587  	}
 37588  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 60)))
 37589  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 37590  	return TCL_OK
 37591  }
 37592  
 37593  var aId = [14]struct {
 37594  	FzName uintptr
 37595  	Fid    int32
 37596  }{
 37597  	{FzName: ts + 17883},
 37598  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 37599  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 37600  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 37601  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 37602  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 37603  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 37604  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 37605  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 37606  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 37607  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 37608  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 37609  	{FzName: ts + 18186, Fid: -1},
 37610  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 37611  }
 37612  
 37613  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37614  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 37615  	_ = rc
 37616  
 37617  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 37618  
 37619  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 37620  	return TCL_OK
 37621  }
 37622  
 37623  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37624  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 37625  	return TCL_OK
 37626  }
 37627  
 37628  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37629  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 37630  	return TCL_OK
 37631  }
 37632  
 37633  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37634  	bp := tls.Alloc(24)
 37635  	defer tls.Free(24)
 37636  
 37637  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 37638  	*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
 37639  	if objc != 2 && objc != 3 {
 37640  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 37641  		return TCL_ERROR
 37642  	}
 37643  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 37644  		return TCL_ERROR
 37645  	}
 37646  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+20) != 0 {
 37647  		return TCL_ERROR
 37648  	}
 37649  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 20))))
 37650  	return TCL_OK
 37651  }
 37652  
 37653  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37654  	bp := tls.Alloc(12)
 37655  	defer tls.Free(12)
 37656  
 37657  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37658  	if objc != 2 {
 37659  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 37660  		return TCL_ERROR
 37661  	}
 37662  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 37663  		return TCL_ERROR
 37664  	}
 37665  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 37666  	return TCL_OK
 37667  }
 37668  
 37669  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37670  	bp := tls.Alloc(8)
 37671  	defer tls.Free(8)
 37672  
 37673  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 37674  	return TCL_OK
 37675  }
 37676  
 37677  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37678  	bp := tls.Alloc(8)
 37679  	defer tls.Free(8)
 37680  
 37681  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 37682  	return TCL_OK
 37683  }
 37684  
 37685  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37686  	bp := tls.Alloc(16)
 37687  	defer tls.Free(16)
 37688  
 37689  	var pRet uintptr
 37690  
 37691  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 37692  
 37693  	pRet = tcl.XTcl_NewObj(tls)
 37694  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 37695  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 37696  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 37697  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 37698  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 37699  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 37700  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 37701  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 37702  
 37703  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37704  
 37705  	return TCL_OK
 37706  }
 37707  
 37708  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 37709  	var ii int32
 37710  	for ii = 0; ii < nArg; ii++ {
 37711  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*4)), ts+13692, -1, TCL_EVAL_GLOBAL)
 37712  	}
 37713  }
 37714  
 37715  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37716  	bp := tls.Alloc(4)
 37717  	defer tls.Free(4)
 37718  
 37719  	var rc int32
 37720  
 37721  	if objc != 2 {
 37722  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37723  		return TCL_ERROR
 37724  	}
 37725  
 37726  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 37727  		return TCL_ERROR
 37728  	}
 37729  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 37730  		f func(*libc.TLS, uintptr, int32)
 37731  	}{test_unlock_notify_cb})), interp)
 37732  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37733  	return TCL_OK
 37734  }
 37735  
 37736  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37737  	bp := tls.Alloc(4)
 37738  	defer tls.Free(4)
 37739  
 37740  	var zDb uintptr = uintptr(0)
 37741  
 37742  	var rc int32
 37743  
 37744  	if objc != 3 && objc != 2 {
 37745  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 37746  		return TCL_ERROR
 37747  	}
 37748  
 37749  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 37750  		return TCL_ERROR
 37751  	}
 37752  	if objc == 3 {
 37753  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 37754  	}
 37755  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 37756  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37757  	return TCL_OK
 37758  }
 37759  
 37760  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37761  	bp := tls.Alloc(68)
 37762  	defer tls.Free(68)
 37763  
 37764  	var zDb uintptr = uintptr(0)
 37765  
 37766  	var rc int32
 37767  
 37768  	*(*int32)(unsafe.Pointer(bp + 60)) = -555
 37769  	*(*int32)(unsafe.Pointer(bp + 64)) = -555
 37770  	var pRet uintptr
 37771  
 37772  	*(*[5]uintptr)(unsafe.Pointer(bp + 40)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 37773  
 37774  	if objc != 3 && objc != 4 {
 37775  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 37776  		return TCL_ERROR
 37777  	}
 37778  
 37779  	if objc == 4 {
 37780  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 37781  	}
 37782  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 || TCL_OK != tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) &&
 37783  		TCL_OK != tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+18328, 0, bp+36) {
 37784  		return TCL_ERROR
 37785  	}
 37786  
 37787  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 36)), bp+60, bp+64)
 37788  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 37789  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37790  		tcl.XTcl_ResetResult(tls, interp)
 37791  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 37792  		return TCL_ERROR
 37793  	}
 37794  
 37795  	pRet = tcl.XTcl_NewObj(tls)
 37796  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 37797  		if rc == SQLITE_BUSY {
 37798  			return 1
 37799  		}
 37800  		return 0
 37801  	}()))
 37802  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 60))))
 37803  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 64))))
 37804  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37805  
 37806  	return TCL_OK
 37807  }
 37808  
 37809  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37810  	bp := tls.Alloc(8)
 37811  	defer tls.Free(8)
 37812  
 37813  	var rc int32
 37814  
 37815  	if objc != 3 {
 37816  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 37817  		return TCL_ERROR
 37818  	}
 37819  
 37820  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 ||
 37821  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 37822  		return TCL_ERROR
 37823  	}
 37824  
 37825  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 37826  	tcl.XTcl_ResetResult(tls, interp)
 37827  	if rc != SQLITE_OK {
 37828  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37829  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 37830  		return TCL_ERROR
 37831  	}
 37832  
 37833  	return TCL_OK
 37834  }
 37835  
 37836  type LogCallback = struct {
 37837  	FpInterp uintptr
 37838  	FpObj    uintptr
 37839  }
 37840  
 37841  var logcallback = LogCallback{}
 37842  
 37843  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 37844  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 37845  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 37846  	tcl.XTcl_ListObjAppendElement(tls,
 37847  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 37848  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 37849  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 37850  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37851  		var _objPtr uintptr = pNew
 37852  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37853  			tcl.XTclFreeObj(tls, _objPtr)
 37854  		}
 37855  	}
 37856  }
 37857  
 37858  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37859  	bp := tls.Alloc(32)
 37860  	defer tls.Free(32)
 37861  
 37862  	if objc > 2 {
 37863  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 37864  		return TCL_ERROR
 37865  	}
 37866  	if logcallback.FpObj != 0 {
 37867  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37868  			var _objPtr uintptr = logcallback.FpObj
 37869  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37870  				tcl.XTclFreeObj(tls, _objPtr)
 37871  			}
 37872  		}
 37873  		logcallback.FpObj = uintptr(0)
 37874  		logcallback.FpInterp = uintptr(0)
 37875  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 37876  	}
 37877  	if objc > 1 {
 37878  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*4))
 37879  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 37880  		logcallback.FpInterp = interp
 37881  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 37882  			f func(*libc.TLS, uintptr, int32, uintptr)
 37883  		}{xLogcallback})), uintptr(0)))
 37884  	}
 37885  	return TCL_OK
 37886  }
 37887  
 37888  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37889  	bp := tls.Alloc(80)
 37890  	defer tls.Free(80)
 37891  
 37892  	if objc < 2 {
 37893  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 37894  		return TCL_ERROR
 37895  	}
 37896  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+48) != 0) {
 37897  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 37898  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 37899  		return TCL_ERROR
 37900  	}
 37901  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 37902  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 37903  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 37904  		return TCL_ERROR
 37905  	}
 37906  	return (*struct {
 37907  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 37908  	})(unsafe.Pointer(&struct{ uintptr }{(*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjProc})).f(tls, (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjClientData, interp, objc-1, objv+uintptr(1)*4)
 37909  }
 37910  
 37911  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 37912  	bp := tls.Alloc(44)
 37913  	defer tls.Free(44)
 37914  
 37915  	var zSql uintptr
 37916  	var zExplain uintptr
 37917  
 37918  	var rc int32
 37919  
 37920  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 37921  	if zSql == uintptr(0) {
 37922  		return SQLITE_ERROR
 37923  	}
 37924  
 37925  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 37926  	if zExplain == uintptr(0) {
 37927  		return SQLITE_NOMEM
 37928  	}
 37929  
 37930  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 37931  	sqlite3.Xsqlite3_free(tls, zExplain)
 37932  	if rc != SQLITE_OK {
 37933  		return rc
 37934  	}
 37935  
 37936  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 37937  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 37938  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 37939  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 37940  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 37941  
 37942  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 37943  	}
 37944  
 37945  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 37946  }
 37947  
 37948  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37949  	bp := tls.Alloc(4)
 37950  	defer tls.Free(4)
 37951  
 37952  	var rc int32
 37953  
 37954  	if objc != 2 {
 37955  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37956  		return TCL_ERROR
 37957  	}
 37958  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 37959  		return TCL_ERROR
 37960  	}
 37961  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37962  
 37963  	libc.Xfflush(tls, libc.Xstdout)
 37964  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37965  	return TCL_OK
 37966  }
 37967  
 37968  type timex = struct {
 37969  	Fmodes     uint32
 37970  	Foffset    int32
 37971  	Ffreq      int32
 37972  	Fmaxerror  int32
 37973  	Festerror  int32
 37974  	Fstatus    int32
 37975  	Fconstant  int32
 37976  	Fprecision int32
 37977  	Ftolerance int32
 37978  	Ftime      struct {
 37979  		Ftv_sec  int32
 37980  		Ftv_usec int32
 37981  	}
 37982  	Ftick    int32
 37983  	Fppsfreq int32
 37984  	Fjitter  int32
 37985  	Fshift   int32
 37986  	Fstabil  int32
 37987  	Fjitcnt  int32
 37988  	Fcalcnt  int32
 37989  	Ferrcnt  int32
 37990  	Fstbcnt  int32
 37991  	Ftai     int32
 37992  	__84     uint32
 37993  	__88     uint32
 37994  	__92     uint32
 37995  	__96     uint32
 37996  	__100    uint32
 37997  	__104    uint32
 37998  	__108    uint32
 37999  	__112    uint32
 38000  	__116    uint32
 38001  	__120    uint32
 38002  	__124    uint32
 38003  }
 38004  
 38005  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 38006  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 38007  	var pTm uintptr = aliasTM
 38008  	var altT time_t
 38009  	var iJD sqlite3_int64
 38010  	var Z int32
 38011  	var A int32
 38012  	var B int32
 38013  	var C int32
 38014  	var D int32
 38015  	var E int32
 38016  	var X1 int32
 38017  	var S int32
 38018  
 38019  	if t/86400&1 != 0 {
 38020  		altT = t + 1800
 38021  	} else {
 38022  		altT = t - 1800
 38023  	}
 38024  	iJD = int64(altT) + 210866760000
 38025  	Z = int32((iJD + int64(43200)) / int64(86400))
 38026  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 38027  	A = Z + 1 + A - A/4
 38028  	B = A + 1524
 38029  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 38030  	D = 36525 * (C & 32767) / 100
 38031  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 38032  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 38033  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 38034  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 38035  		if E < 14 {
 38036  			return E - 2
 38037  		}
 38038  		return E - 14
 38039  	}()
 38040  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 38041  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 38042  			return C - 4716
 38043  		}
 38044  		return C - 4715
 38045  	}() - 1900
 38046  	S = int32((iJD + int64(43200)) % int64(86400))
 38047  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 38048  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 38049  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 38050  	return libc.Bool32(t == 959609760)
 38051  }
 38052  
 38053  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38054  	bp := tls.Alloc(136)
 38055  	defer tls.Free(136)
 38056  
 38057  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 38058  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 38059  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 38060  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 38061  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 38062  	}
 38063  
 38064  	var iFlag int32
 38065  	var rc int32
 38066  
 38067  	if objc < 2 {
 38068  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 38069  		return TCL_ERROR
 38070  	}
 38071  
 38072  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 38073  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+104)
 38074  	if rc != TCL_OK {
 38075  		return rc
 38076  	}
 38077  
 38078  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fi
 38079  	switch iFlag {
 38080  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 38081  		{
 38082  			*(*uintptr)(unsafe.Pointer(bp + 108)) = uintptr(0)
 38083  			if objc != 3 {
 38084  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 38085  				return TCL_ERROR
 38086  			}
 38087  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+108) != 0 {
 38088  				return TCL_ERROR
 38089  			}
 38090  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 108))))
 38091  			break
 38092  
 38093  		}
 38094  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 38095  		{
 38096  			if objc != 3 {
 38097  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 38098  				return TCL_ERROR
 38099  			}
 38100  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+112) != 0 {
 38101  				return TCL_ERROR
 38102  			}
 38103  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 112)), *(*uintptr)(unsafe.Pointer(&struct {
 38104  				f func(*libc.TLS, uintptr, uintptr) int32
 38105  			}{testLocaltime}))))
 38106  			break
 38107  
 38108  		}
 38109  
 38110  	case SQLITE_TESTCTRL_SORTER_MMAP:
 38111  		{
 38112  			if objc != 4 {
 38113  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 38114  				return TCL_ERROR
 38115  			}
 38116  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+116) != 0 {
 38117  				return TCL_ERROR
 38118  			}
 38119  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+120) != 0 {
 38120  				return TCL_ERROR
 38121  			}
 38122  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 116)), *(*int32)(unsafe.Pointer(bp + 120))))
 38123  			break
 38124  
 38125  		}
 38126  
 38127  	case SQLITE_TESTCTRL_IMPOSTER:
 38128  		{
 38129  			var zDbName uintptr
 38130  
 38131  			if objc != 6 {
 38132  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 38133  				return TCL_ERROR
 38134  			}
 38135  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+124) != 0 {
 38136  				return TCL_ERROR
 38137  			}
 38138  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 38139  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+128) != 0 {
 38140  				return TCL_ERROR
 38141  			}
 38142  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*4)), bp+132) != 0 {
 38143  				return TCL_ERROR
 38144  			}
 38145  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_IMPOSTER, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 124)), zDbName, *(*int32)(unsafe.Pointer(bp + 128)), *(*int32)(unsafe.Pointer(bp + 132))))
 38146  			break
 38147  
 38148  		}
 38149  	}
 38150  
 38151  	tcl.XTcl_ResetResult(tls, interp)
 38152  	return TCL_OK
 38153  }
 38154  
 38155  type Verb = struct {
 38156  	FzName uintptr
 38157  	Fi     int32
 38158  }
 38159  
 38160  type rlim_t = uint64
 38161  type rlim64_t = uint64
 38162  
 38163  type rlimit = struct {
 38164  	Frlim_cur rlim_t
 38165  	Frlim_max rlim_t
 38166  }
 38167  
 38168  type rlimit64 = struct {
 38169  	Frlim_cur rlim64_t
 38170  	Frlim_max rlim64_t
 38171  }
 38172  
 38173  type rusage = struct {
 38174  	Fru_utime struct {
 38175  		Ftv_sec  int32
 38176  		Ftv_usec int32
 38177  	}
 38178  	Fru_stime struct {
 38179  		Ftv_sec  int32
 38180  		Ftv_usec int32
 38181  	}
 38182  	F__16 struct{ Fru_maxrss int32 }
 38183  	F__20 struct{ Fru_ixrss int32 }
 38184  	F__24 struct{ Fru_idrss int32 }
 38185  	F__28 struct{ Fru_isrss int32 }
 38186  	F__32 struct{ Fru_minflt int32 }
 38187  	F__36 struct{ Fru_majflt int32 }
 38188  	F__40 struct{ Fru_nswap int32 }
 38189  	F__44 struct{ Fru_inblock int32 }
 38190  	F__48 struct{ Fru_oublock int32 }
 38191  	F__52 struct{ Fru_msgsnd int32 }
 38192  	F__56 struct{ Fru_msgrcv int32 }
 38193  	F__60 struct{ Fru_nsignals int32 }
 38194  	F__64 struct{ Fru_nvcsw int32 }
 38195  	F__68 struct{ Fru_nivcsw int32 }
 38196  }
 38197  
 38198  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38199  	bp := tls.Alloc(1144)
 38200  	defer tls.Free(1144)
 38201  
 38202  	libc.Xmemset(tls, bp+48, 0, uint32(unsafe.Sizeof(rusage{})))
 38203  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 38204  
 38205  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]int8{})), bp+120,
 38206  		ts+18566,
 38207  		libc.VaList(bp, (*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec, (*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec,
 38208  			(*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec, (*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec,
 38209  			*(*int32)(unsafe.Pointer(bp + 48 + 32)), *(*int32)(unsafe.Pointer(bp + 48 + 36))))
 38210  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+120, -1))
 38211  	return TCL_OK
 38212  }
 38213  
 38214  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38215  	bp := tls.Alloc(64)
 38216  	defer tls.Free(64)
 38217  
 38218  	var i int32
 38219  
 38220  	var zOpt uintptr
 38221  
 38222  	var mask int32 = 0
 38223  
 38224  	if objc != 4 {
 38225  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 38226  		return TCL_ERROR
 38227  	}
 38228  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+56) != 0 {
 38229  		return TCL_ERROR
 38230  	}
 38231  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+60) != 0 {
 38232  		return TCL_ERROR
 38233  	}
 38234  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38235  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aOpt))/uint32(unsafe.Sizeof(struct {
 38236  		FzOptName uintptr
 38237  		Fmask     int32
 38238  	}{})); i++ {
 38239  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 38240  			mask = aOpt[i].Fmask
 38241  			break
 38242  		}
 38243  	}
 38244  	if *(*int32)(unsafe.Pointer(bp + 60)) != 0 {
 38245  		mask = ^mask
 38246  	}
 38247  	if uint32(i) >= uint32(unsafe.Sizeof(aOpt))/uint32(unsafe.Sizeof(struct {
 38248  		FzOptName uintptr
 38249  		Fmask     int32
 38250  	}{})) {
 38251  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 38252  			uintptr(0)))
 38253  		for i = 0; uint32(i) < uint32(unsafe.Sizeof(aOpt))/uint32(unsafe.Sizeof(struct {
 38254  			FzOptName uintptr
 38255  			Fmask     int32
 38256  		}{})); i++ {
 38257  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 38258  		}
 38259  		return TCL_ERROR
 38260  	}
 38261  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 38262  	return TCL_OK
 38263  }
 38264  
 38265  var aOpt = [14]struct {
 38266  	FzOptName uintptr
 38267  	Fmask     int32
 38268  }{
 38269  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 38270  	{FzOptName: ts + 18686},
 38271  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 38272  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 38273  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 38274  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 38275  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 38276  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 38277  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 38278  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 38279  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 38280  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 38281  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 38282  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 38283  }
 38284  
 38285  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38286  	bp := tls.Alloc(72)
 38287  	defer tls.Free(72)
 38288  
 38289  	var zName uintptr
 38290  	var i int32
 38291  	var j int32
 38292  	var rc int32
 38293  	*(*uintptr)(unsafe.Pointer(bp + 68)) = uintptr(0)
 38294  	if objc < 3 {
 38295  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 38296  		return TCL_ERROR
 38297  	}
 38298  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 38299  		return TCL_ERROR
 38300  	}
 38301  	for j = 2; j < objc; j++ {
 38302  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*4)))
 38303  		for i = 0; i < int32(uint32(unsafe.Sizeof(aExtension))/uint32(unsafe.Sizeof(struct {
 38304  			FzExtName uintptr
 38305  			FpInit    uintptr
 38306  		}{}))); i++ {
 38307  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 38308  				break
 38309  			}
 38310  		}
 38311  		if i >= int32(uint32(unsafe.Sizeof(aExtension))/uint32(unsafe.Sizeof(struct {
 38312  			FzExtName uintptr
 38313  			FpInit    uintptr
 38314  		}{}))) {
 38315  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 38316  			return TCL_ERROR
 38317  		}
 38318  		if aExtension[i].FpInit != 0 {
 38319  			rc = (*struct {
 38320  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 38321  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+68, uintptr(0))
 38322  		} else {
 38323  			rc = SQLITE_OK
 38324  		}
 38325  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 68)) != 0 {
 38326  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 68)),
 38327  				uintptr(0)))
 38328  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 68)))
 38329  			return TCL_ERROR
 38330  		}
 38331  	}
 38332  	return TCL_OK
 38333  }
 38334  
 38335  var aExtension = [22]struct {
 38336  	FzExtName uintptr
 38337  	FpInit    uintptr
 38338  }{
 38339  	{FzExtName: ts + 18912, FpInit: 0},
 38340  	{FzExtName: ts + 18919, FpInit: 0},
 38341  	{FzExtName: ts + 4060, FpInit: 0},
 38342  	{FzExtName: ts + 18929, FpInit: 0},
 38343  	{FzExtName: ts + 4815, FpInit: 0},
 38344  	{FzExtName: ts + 4838, FpInit: 0},
 38345  	{FzExtName: ts + 4896, FpInit: 0},
 38346  	{FzExtName: ts + 4974, FpInit: 0},
 38347  	{FzExtName: ts + 18937, FpInit: 0},
 38348  	{FzExtName: ts + 5483, FpInit: 0},
 38349  	{FzExtName: ts + 5507, FpInit: 0},
 38350  	{FzExtName: ts + 18944, FpInit: 0},
 38351  	{FzExtName: ts + 6087, FpInit: 0},
 38352  	{FzExtName: ts + 6162, FpInit: 0},
 38353  	{FzExtName: ts + 6535, FpInit: 0},
 38354  	{FzExtName: ts + 6831, FpInit: 0},
 38355  	{FzExtName: ts + 6846, FpInit: 0},
 38356  	{FzExtName: ts + 18953, FpInit: 0},
 38357  	{FzExtName: ts + 18960, FpInit: 0},
 38358  	{FzExtName: ts + 18969, FpInit: 0},
 38359  	{FzExtName: ts + 8921, FpInit: 0},
 38360  	{FzExtName: ts + 9463, FpInit: 0},
 38361  }
 38362  
 38363  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38364  	bp := tls.Alloc(4)
 38365  	defer tls.Free(4)
 38366  
 38367  	if objc != 2 {
 38368  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 38369  		return TCL_ERROR
 38370  	}
 38371  
 38372  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 38373  		return TCL_ERROR
 38374  	}
 38375  
 38376  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 38377  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 38378  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt32(-1)
 38379  		}
 38380  	} else {
 38381  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt32(-1) {
 38382  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 38383  		}
 38384  	}
 38385  
 38386  	tcl.XTcl_ResetResult(tls, interp)
 38387  	return TCL_OK
 38388  }
 38389  
 38390  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38391  	bp := tls.Alloc(68)
 38392  	defer tls.Free(68)
 38393  
 38394  	var zSql1 uintptr
 38395  	var zSql2 uintptr
 38396  
 38397  	var iStep int32
 38398  	var iCksum1 uint32
 38399  	var iCksum2 uint32
 38400  	var rc int32
 38401  	var iB int32
 38402  
 38403  	var a int32
 38404  	var a1 int32
 38405  	iCksum1 = uint32(0)
 38406  	iCksum2 = uint32(0)
 38407  
 38408  	if !(objc != 5) {
 38409  		goto __1
 38410  	}
 38411  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 38412  	return TCL_ERROR
 38413  __1:
 38414  	;
 38415  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+56) != 0) {
 38416  		goto __2
 38417  	}
 38418  	return TCL_ERROR
 38419  __2:
 38420  	;
 38421  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38422  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+60) != 0) {
 38423  		goto __3
 38424  	}
 38425  	return TCL_ERROR
 38426  __3:
 38427  	;
 38428  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 38429  
 38430  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+64, uintptr(0))
 38431  	if !(rc != SQLITE_OK) {
 38432  		goto __4
 38433  	}
 38434  	goto sql_error
 38435  __4:
 38436  	;
 38437  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) - 1
 38438  	iStep = 0
 38439  __5:
 38440  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 60)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))) {
 38441  		goto __7
 38442  	}
 38443  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 38444  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), iB)) {
 38445  		goto __8
 38446  	}
 38447  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 38448  	return TCL_ERROR
 38449  __8:
 38450  	;
 38451  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 38452  	goto __6
 38453  __6:
 38454  	iStep++
 38455  	goto __5
 38456  	goto __7
 38457  __7:
 38458  	;
 38459  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 38460  	if !(rc != SQLITE_OK) {
 38461  		goto __9
 38462  	}
 38463  	goto sql_error
 38464  __9:
 38465  	;
 38466  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+64, uintptr(0))
 38467  	if !(rc != SQLITE_OK) {
 38468  		goto __10
 38469  	}
 38470  	goto sql_error
 38471  __10:
 38472  	;
 38473  	iStep = 0
 38474  __11:
 38475  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))) {
 38476  		goto __13
 38477  	}
 38478  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 38479  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 38480  	goto __12
 38481  __12:
 38482  	iStep++
 38483  	goto __11
 38484  	goto __13
 38485  __13:
 38486  	;
 38487  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 38488  	if !(rc != SQLITE_OK) {
 38489  		goto __14
 38490  	}
 38491  	goto sql_error
 38492  __14:
 38493  	;
 38494  	if !(iCksum1 != iCksum2) {
 38495  		goto __15
 38496  	}
 38497  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 38498  	return TCL_ERROR
 38499  __15:
 38500  	;
 38501  	return TCL_OK
 38502  sql_error:
 38503  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 38504  	return TCL_ERROR
 38505  }
 38506  
 38507  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 38508  	bp := tls.Alloc(44)
 38509  	defer tls.Free(44)
 38510  
 38511  	var xyz int32
 38512  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 38513  	var j int32
 38514  
 38515  	var a uintptr
 38516  	if objc != 2 {
 38517  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 38518  		return TCL_ERROR
 38519  	}
 38520  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 38521  		return TCL_ERROR
 38522  	}
 38523  	switch *(*int32)(unsafe.Pointer(bp)) {
 38524  	case 1:
 38525  		{
 38526  			xyz = 0x7fffff00 - i
 38527  			xyz = xyz + 0x100
 38528  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 38529  			break
 38530  
 38531  		}
 38532  	case 2:
 38533  		{
 38534  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 38535  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 38536  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 38537  			}
 38538  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 38539  			break
 38540  
 38541  		}
 38542  	case 3:
 38543  		{
 38544  			a = libc.Xmalloc(tls, uint32(unsafe.Sizeof(int32(0)))*uint32(10))
 38545  			for j = 0; j < 10; j++ {
 38546  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 38547  			}
 38548  			libc.Xfree(tls, a)
 38549  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 38550  			break
 38551  
 38552  		}
 38553  	case 4:
 38554  		{
 38555  			tcl.XTcl_Panic(tls, ts+19049, 0)
 38556  			break
 38557  
 38558  		}
 38559  	}
 38560  	return TCL_OK
 38561  }
 38562  
 38563  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38564  	bp := tls.Alloc(32)
 38565  	defer tls.Free(32)
 38566  
 38567  	var zDb uintptr
 38568  
 38569  	if objc != 2 {
 38570  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38571  		return TCL_ERROR
 38572  	}
 38573  
 38574  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 38575  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 38576  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 38577  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 38578  	}
 38579  	return TCL_OK
 38580  }
 38581  
 38582  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38583  	bp := tls.Alloc(24)
 38584  	defer tls.Free(24)
 38585  
 38586  	var i int32
 38587  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 38588  	var zSetting uintptr
 38589  
 38590  	if objc != 4 && objc != 3 {
 38591  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 38592  		return TCL_ERROR
 38593  	}
 38594  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 {
 38595  		return TCL_ERROR
 38596  	}
 38597  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38598  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 38599  		zSetting += uintptr(7)
 38600  	}
 38601  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 38602  		zSetting += uintptr(9)
 38603  	}
 38604  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 38605  		zSetting += uintptr(7)
 38606  	}
 38607  	for i = 0; i < int32(uint32(unsafe.Sizeof(aSetting))/uint32(unsafe.Sizeof(struct {
 38608  		FzName uintptr
 38609  		FeVal  int32
 38610  	}{}))); i++ {
 38611  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 38612  			break
 38613  		}
 38614  	}
 38615  	if i >= int32(uint32(unsafe.Sizeof(aSetting))/uint32(unsafe.Sizeof(struct {
 38616  		FzName uintptr
 38617  		FeVal  int32
 38618  	}{}))) {
 38619  		tcl.XTcl_SetObjResult(tls, interp,
 38620  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 38621  		return TCL_ERROR
 38622  	}
 38623  	if objc == 4 {
 38624  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+20) != 0 {
 38625  			return TCL_ERROR
 38626  		}
 38627  	} else {
 38628  		*(*int32)(unsafe.Pointer(bp + 20)) = -1
 38629  	}
 38630  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 20)), bp+20))
 38631  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 38632  	return TCL_OK
 38633  }
 38634  
 38635  var aSetting = [14]struct {
 38636  	FzName uintptr
 38637  	FeVal  int32
 38638  }{
 38639  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 38640  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 38641  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 38642  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 38643  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 38644  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 38645  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 38646  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 38647  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 38648  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 38649  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 38650  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 38651  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 38652  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 38653  }
 38654  
 38655  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38656  	bp := tls.Alloc(4)
 38657  	defer tls.Free(4)
 38658  
 38659  	var zSchema uintptr
 38660  	var iTxn int32
 38661  
 38662  	if objc != 2 && objc != 3 {
 38663  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 38664  		return TCL_ERROR
 38665  	}
 38666  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 38667  		return TCL_ERROR
 38668  	}
 38669  	if objc == 3 {
 38670  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38671  	} else {
 38672  		zSchema = uintptr(0)
 38673  	}
 38674  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 38675  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 38676  	return TCL_OK
 38677  }
 38678  
 38679  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38680  	bp := tls.Alloc(12)
 38681  	defer tls.Free(12)
 38682  
 38683  	var rc int32
 38684  
 38685  	if objc != 2 {
 38686  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38687  		return TCL_ERROR
 38688  	} else {
 38689  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+8) != 0 {
 38690  			return TCL_ERROR
 38691  		}
 38692  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 38693  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38694  		return TCL_OK
 38695  	}
 38696  	return int32(0)
 38697  }
 38698  
 38699  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38700  	bp := tls.Alloc(4)
 38701  	defer tls.Free(4)
 38702  
 38703  	if objc != 2 && objc != 3 {
 38704  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 38705  		return TCL_ERROR
 38706  	} else {
 38707  		var rc int32
 38708  
 38709  		var zDb uintptr = uintptr(0)
 38710  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 38711  			return TCL_ERROR
 38712  		}
 38713  		if objc == 3 {
 38714  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38715  		}
 38716  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38717  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 38718  		return TCL_OK
 38719  	}
 38720  	return int32(0)
 38721  }
 38722  
 38723  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38724  	bp := tls.Alloc(20)
 38725  	defer tls.Free(20)
 38726  
 38727  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 38728  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 4)) = int64(0)
 38729  	var aData uintptr = uintptr(0)
 38730  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 38731  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 38732  	var rc int32
 38733  
 38734  	if objc != 4 {
 38735  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 38736  		return TCL_ERROR
 38737  	}
 38738  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 38739  		return TCL_ERROR
 38740  	}
 38741  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 38742  		return TCL_ERROR
 38743  	}
 38744  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+12)
 38745  
 38746  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+16)
 38747  	rc = (*struct {
 38748  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 38749  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 16)))).FpMethods)).FxWrite})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aData, *(*int32)(unsafe.Pointer(bp + 12)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 4)))
 38750  
 38751  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38752  	return TCL_OK
 38753  }
 38754  
 38755  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38756  	if objc != 1 {
 38757  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38758  		return TCL_ERROR
 38759  	} else {
 38760  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 38761  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38762  	}
 38763  	return TCL_OK
 38764  }
 38765  
 38766  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38767  	if objc != 1 {
 38768  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38769  		return TCL_ERROR
 38770  	} else {
 38771  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 38772  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38773  	}
 38774  	return TCL_OK
 38775  }
 38776  
 38777  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38778  	bp := tls.Alloc(296)
 38779  	defer tls.Free(296)
 38780  
 38781  	var zIn uintptr = uintptr(0)
 38782  	var a uintptr = uintptr(0)
 38783  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 38784  	var lineno int32 = 0
 38785  	var i int32
 38786  	var iNext int32
 38787  	var iOffset int32 = 0
 38788  
 38789  	var rc int32
 38790  
 38791  	if objc != 2 {
 38792  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 38793  		return TCL_ERROR
 38794  	}
 38795  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 38796  	for i = 0; *(*int8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 38797  		lineno++
 38798  		for iNext = i; *(*int8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 38799  		}
 38800  		if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 38801  			iNext++
 38802  		}
 38803  		for int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 38804  			i++
 38805  		}
 38806  		if a == uintptr(0) {
 38807  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 38808  			if rc != 2 {
 38809  				continue
 38810  			}
 38811  			if *(*int32)(unsafe.Pointer(bp + 220)) < 512 || *(*int32)(unsafe.Pointer(bp + 220)) > 65536 || *(*int32)(unsafe.Pointer(bp + 220))&(*(*int32)(unsafe.Pointer(bp + 220))-1) != 0 {
 38812  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 38813  				return TCL_ERROR
 38814  			}
 38815  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 38816  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 38817  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 38818  				return TCL_ERROR
 38819  			}
 38820  			a = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 216))))
 38821  			if a == uintptr(0) {
 38822  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 38823  				return TCL_ERROR
 38824  			}
 38825  			libc.Xmemset(tls, a, 0, uint32(*(*int32)(unsafe.Pointer(bp + 216))))
 38826  			continue
 38827  		}
 38828  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 38829  		if rc == 2 {
 38830  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 38831  			continue
 38832  		}
 38833  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 38834  			libc.VaList(bp+80, bp+224, bp+232, bp+232+1*4, bp+232+2*4, bp+232+3*4, bp+232+4*4, bp+232+5*4, bp+232+6*4, bp+232+7*4,
 38835  				bp+232+8*4, bp+232+9*4, bp+232+10*4, bp+232+11*4, bp+232+12*4, bp+232+13*4, bp+232+14*4, bp+232+15*4))
 38836  		if rc == 17 {
 38837  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 38838  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 38839  				var ii int32
 38840  				for ii = 0; ii < 16; ii++ {
 38841  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 38842  				}
 38843  			}
 38844  			continue
 38845  		}
 38846  	}
 38847  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 38848  	libc.Xfree(tls, a)
 38849  	return TCL_OK
 38850  }
 38851  
 38852  type AutovacPageData1 = struct {
 38853  	Finterp  uintptr
 38854  	FzScript uintptr
 38855  }
 38856  
 38857  type AutovacPageData = AutovacPageData1
 38858  
 38859  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 38860  	bp := tls.Alloc(340)
 38861  	defer tls.Free(340)
 38862  
 38863  	var pData uintptr = pClientData
 38864  
 38865  	tcl.XTcl_DStringInit(tls, bp+24)
 38866  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 38867  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 38868  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+236, ts+17791, libc.VaList(bp, nFilePages))
 38869  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+236)
 38870  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+236, ts+17791, libc.VaList(bp+8, nFreePages))
 38871  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+236)
 38872  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+236, ts+17791, libc.VaList(bp+16, nBytePerPage))
 38873  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+236)
 38874  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 38875  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 38876  	tcl.XTcl_DStringFree(tls, bp+24)
 38877  	*(*uint32)(unsafe.Pointer(bp + 336)) = nFreePages
 38878  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+336)
 38879  	return *(*uint32)(unsafe.Pointer(bp + 336))
 38880  }
 38881  
 38882  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38883  	bp := tls.Alloc(1044)
 38884  	defer tls.Free(1044)
 38885  
 38886  	var pData uintptr
 38887  
 38888  	var rc int32
 38889  	var zScript uintptr
 38890  	if objc != 2 && objc != 3 {
 38891  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 38892  		return TCL_ERROR
 38893  	}
 38894  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+40) != 0 {
 38895  		return TCL_ERROR
 38896  	}
 38897  	if objc == 3 {
 38898  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 38899  	} else {
 38900  		zScript = uintptr(0)
 38901  	}
 38902  	if zScript != 0 {
 38903  		var nScript size_t = libc.Xstrlen(tls, zScript)
 38904  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(AutovacPageData{}))+nScript+uint32(1)))
 38905  		if pData == uintptr(0) {
 38906  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 38907  			return TCL_ERROR
 38908  		}
 38909  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 38910  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*8
 38911  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+size_t(1))
 38912  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 38913  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 38914  		}{test_autovacuum_pages_callback})),
 38915  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 38916  	} else {
 38917  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 38918  	}
 38919  	if rc != 0 {
 38920  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+44,
 38921  			ts+19513, libc.VaList(bp+16, rc))
 38922  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+44, uintptr(0)))
 38923  		return TCL_ERROR
 38924  	}
 38925  	return TCL_OK
 38926  }
 38927  
 38928  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 38929  	var i int32
 38930  
 38931  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd1))/uint32(unsafe.Sizeof(struct {
 38932  		FzName uintptr
 38933  		FxProc uintptr
 38934  	}{})); i++ {
 38935  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 38936  	}
 38937  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd1))/uint32(unsafe.Sizeof(struct {
 38938  		FzName      uintptr
 38939  		FxProc      uintptr
 38940  		FclientData uintptr
 38941  	}{})); i++ {
 38942  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 38943  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 38944  	}
 38945  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 38946  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 38947  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 38948  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 38949  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 38950  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 38951  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 38952  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 38953  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 38954  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 38955  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 38956  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 38957  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 38958  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 38959  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 38960  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 38961  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 38962  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 38963  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 38964  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 38965  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 38966  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 38967  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 38968  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 38969  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 38970  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 38971  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 38972  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38973  	{
 38974  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 38975  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38976  
 38977  	}
 38978  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 38979  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 38980  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 38981  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 38982  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 38983  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 38984  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 38985  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 38986  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 38987  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 38988  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 38989  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38990  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 38991  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38992  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 38993  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 38994  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 38995  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 38996  	return TCL_OK
 38997  }
 38998  
 38999  var iZero int32 = 0
 39000  var aCmd1 = [39]struct {
 39001  	FzName uintptr
 39002  	FxProc uintptr
 39003  }{
 39004  	{FzName: ts + 20074, FxProc: 0},
 39005  	{FzName: ts + 20083, FxProc: 0},
 39006  	{FzName: ts + 20092, FxProc: 0},
 39007  	{FzName: ts + 20112, FxProc: 0},
 39008  	{FzName: ts + 20134, FxProc: 0},
 39009  	{FzName: ts + 20155, FxProc: 0},
 39010  	{FzName: ts + 20175, FxProc: 0},
 39011  	{FzName: ts + 20196, FxProc: 0},
 39012  	{FzName: ts + 20220, FxProc: 0},
 39013  	{FzName: ts + 20243, FxProc: 0},
 39014  	{FzName: ts + 20266, FxProc: 0},
 39015  	{FzName: ts + 20292, FxProc: 0},
 39016  	{FzName: ts + 20315, FxProc: 0},
 39017  	{FzName: ts + 20338, FxProc: 0},
 39018  	{FzName: ts + 20359, FxProc: 0},
 39019  	{FzName: ts + 20385, FxProc: 0},
 39020  	{FzName: ts + 20405, FxProc: 0},
 39021  	{FzName: ts + 20422, FxProc: 0},
 39022  	{FzName: ts + 20435, FxProc: 0},
 39023  	{FzName: ts + 20451, FxProc: 0},
 39024  	{FzName: ts + 20476, FxProc: 0},
 39025  	{FzName: ts + 20490, FxProc: 0},
 39026  	{FzName: ts + 20507, FxProc: 0},
 39027  	{FzName: ts + 20531, FxProc: 0},
 39028  	{FzName: ts + 20556, FxProc: 0},
 39029  	{FzName: ts + 20577, FxProc: 0},
 39030  	{FzName: ts + 20607, FxProc: 0},
 39031  	{FzName: ts + 20620, FxProc: 0},
 39032  	{FzName: ts + 20632, FxProc: 0},
 39033  	{FzName: ts + 20643, FxProc: 0},
 39034  	{FzName: ts + 20655, FxProc: 0},
 39035  	{FzName: ts + 20669, FxProc: 0},
 39036  	{FzName: ts + 20687, FxProc: 0},
 39037  	{FzName: ts + 20710, FxProc: 0},
 39038  	{FzName: ts + 20734, FxProc: 0},
 39039  	{FzName: ts + 20757, FxProc: 0},
 39040  	{FzName: ts + 20778, FxProc: 0},
 39041  	{FzName: ts + 20785, FxProc: 0},
 39042  	{FzName: ts + 20800, FxProc: 0},
 39043  }
 39044  var aObjCmd1 = [165]struct {
 39045  	FzName      uintptr
 39046  	FxProc      uintptr
 39047  	FclientData uintptr
 39048  }{
 39049  	{FzName: ts + 20823, FxProc: 0},
 39050  	{FzName: ts + 20841, FxProc: 0},
 39051  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 39052  	{FzName: ts + 20872, FxProc: 0},
 39053  	{FzName: ts + 20893, FxProc: 0},
 39054  	{FzName: ts + 20920, FxProc: 0},
 39055  	{FzName: ts + 20934, FxProc: 0},
 39056  	{FzName: ts + 20950, FxProc: 0},
 39057  	{FzName: ts + 20967, FxProc: 0},
 39058  	{FzName: ts + 20982, FxProc: 0},
 39059  	{FzName: ts + 20999, FxProc: 0},
 39060  	{FzName: ts + 21021, FxProc: 0},
 39061  	{FzName: ts + 21045, FxProc: 0},
 39062  	{FzName: ts + 21064, FxProc: 0},
 39063  	{FzName: ts + 21084, FxProc: 0},
 39064  	{FzName: ts + 21102, FxProc: 0},
 39065  	{FzName: ts + 21120, FxProc: 0},
 39066  	{FzName: ts + 21140, FxProc: 0},
 39067  	{FzName: ts + 21158, FxProc: 0},
 39068  	{FzName: ts + 21189, FxProc: 0},
 39069  	{FzName: ts + 21223, FxProc: 0},
 39070  	{FzName: ts + 21243, FxProc: 0},
 39071  	{FzName: ts + 21272, FxProc: 0},
 39072  	{FzName: ts + 21300, FxProc: 0},
 39073  	{FzName: ts + 21329, FxProc: 0},
 39074  	{FzName: ts + 21352, FxProc: 0},
 39075  	{FzName: ts + 21366, FxProc: 0},
 39076  	{FzName: ts + 21382, FxProc: 0},
 39077  	{FzName: ts + 21407, FxProc: 0},
 39078  	{FzName: ts + 21422, FxProc: 0},
 39079  	{FzName: ts + 21443, FxProc: 0},
 39080  	{FzName: ts + 21460, FxProc: 0},
 39081  	{FzName: ts + 21473, FxProc: 0},
 39082  	{FzName: ts + 21488, FxProc: 0},
 39083  	{FzName: ts + 21504, FxProc: 0},
 39084  	{FzName: ts + 21523, FxProc: 0},
 39085  	{FzName: ts + 21541, FxProc: 0},
 39086  	{FzName: ts + 21557, FxProc: 0},
 39087  	{FzName: ts + 21575, FxProc: 0},
 39088  	{FzName: ts + 21594, FxProc: 0},
 39089  	{FzName: ts + 21613, FxProc: 0},
 39090  	{FzName: ts + 21637, FxProc: 0},
 39091  	{FzName: ts + 21658, FxProc: 0},
 39092  	{FzName: ts + 21675, FxProc: 0},
 39093  	{FzName: ts + 21695, FxProc: 0},
 39094  	{FzName: ts + 21709, FxProc: 0},
 39095  	{FzName: ts + 21725, FxProc: 0},
 39096  	{FzName: ts + 21751, FxProc: 0},
 39097  	{FzName: ts + 21767, FxProc: 0},
 39098  	{FzName: ts + 21780, FxProc: 0},
 39099  	{FzName: ts + 21792, FxProc: 0},
 39100  	{FzName: ts + 21813, FxProc: 0},
 39101  	{FzName: ts + 21831, FxProc: 0},
 39102  	{FzName: ts + 21853, FxProc: 0},
 39103  	{FzName: ts + 21876, FxProc: 0},
 39104  	{FzName: ts + 21894, FxProc: 0},
 39105  	{FzName: ts + 21912, FxProc: 0},
 39106  	{FzName: ts + 21935, FxProc: 0},
 39107  	{FzName: ts + 21961, FxProc: 0},
 39108  	{FzName: ts + 21983, FxProc: 0},
 39109  	{FzName: ts + 22004, FxProc: 0},
 39110  	{FzName: ts + 22024, FxProc: 0},
 39111  	{FzName: ts + 22044, FxProc: 0},
 39112  	{FzName: ts + 22068, FxProc: 0},
 39113  	{FzName: ts + 22094, FxProc: 0},
 39114  	{FzName: ts + 22120, FxProc: 0},
 39115  	{FzName: ts + 22143, FxProc: 0},
 39116  	{FzName: ts + 22167, FxProc: 0},
 39117  	{FzName: ts + 22190, FxProc: 0},
 39118  	{FzName: ts + 22220, FxProc: 0},
 39119  	{FzName: ts + 22250, FxProc: 0},
 39120  	{FzName: ts + 22264, FxProc: 0},
 39121  	{FzName: ts + 22292, FxProc: 0},
 39122  	{FzName: ts + 22308, FxProc: 0},
 39123  	{FzName: ts + 22327, FxProc: 0},
 39124  	{FzName: ts + 22344, FxProc: 0},
 39125  	{FzName: ts + 22354, FxProc: 0},
 39126  	{FzName: ts + 22374, FxProc: 0},
 39127  	{FzName: ts + 22397, FxProc: 0},
 39128  	{FzName: ts + 22421, FxProc: 0},
 39129  	{FzName: ts + 22442, FxProc: 0},
 39130  	{FzName: ts + 22454, FxProc: 0},
 39131  	{FzName: ts + 22475, FxProc: 0},
 39132  	{FzName: ts + 22494, FxProc: 0},
 39133  	{FzName: ts + 22514, FxProc: 0},
 39134  	{FzName: ts + 22534, FxProc: 0},
 39135  	{FzName: ts + 22556, FxProc: 0},
 39136  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 39137  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 39138  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 39139  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 39140  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 39141  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 39142  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 39143  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 39144  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 39145  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 39146  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 39147  	{FzName: ts + 22830, FxProc: 0},
 39148  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 39149  	{FzName: ts + 22886,
 39150  		FxProc: 0, FclientData: 0},
 39151  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 39152  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 39153  	{FzName: ts + 22974, FxProc: 0},
 39154  	{FzName: ts + 23002, FxProc: 0},
 39155  	{FzName: ts + 23025, FxProc: 0},
 39156  	{FzName: ts + 23043, FxProc: 0},
 39157  	{FzName: ts + 23059, FxProc: 0},
 39158  	{FzName: ts + 23077, FxProc: 0},
 39159  	{FzName: ts + 23096, FxProc: 0},
 39160  	{FzName: ts + 23115, FxProc: 0},
 39161  	{FzName: ts + 23133, FxProc: 0},
 39162  	{FzName: ts + 23161, FxProc: 0},
 39163  	{FzName: ts + 23189, FxProc: 0},
 39164  	{FzName: ts + 23217, FxProc: 0},
 39165  	{FzName: ts + 23244, FxProc: 0},
 39166  	{FzName: ts + 23270, FxProc: 0},
 39167  	{FzName: ts + 23295, FxProc: 0},
 39168  	{FzName: ts + 23328, FxProc: 0},
 39169  	{FzName: ts + 23349, FxProc: 0},
 39170  	{FzName: ts + 23375, FxProc: 0},
 39171  	{FzName: ts + 23401, FxProc: 0},
 39172  	{FzName: ts + 23430, FxProc: 0},
 39173  	{FzName: ts + 23447, FxProc: 0},
 39174  	{FzName: ts + 23474, FxProc: 0},
 39175  	{FzName: ts + 23491, FxProc: 0},
 39176  	{FzName: ts + 23515, FxProc: 0},
 39177  	{FzName: ts + 23533, FxProc: 0},
 39178  	{FzName: ts + 23559, FxProc: 0},
 39179  	{FzName: ts + 23579, FxProc: 0},
 39180  	{FzName: ts + 23597, FxProc: 0},
 39181  	{FzName: ts + 23625, FxProc: 0},
 39182  	{FzName: ts + 23653, FxProc: 0},
 39183  	{FzName: ts + 23679, FxProc: 0},
 39184  	{FzName: ts + 23709, FxProc: 0},
 39185  	{FzName: ts + 23729, FxProc: 0},
 39186  	{FzName: ts + 23742, FxProc: 0},
 39187  	{FzName: ts + 23764, FxProc: 0},
 39188  	{FzName: ts + 23787, FxProc: 0},
 39189  	{FzName: ts + 23813, FxProc: 0},
 39190  	{FzName: ts + 23840, FxProc: 0},
 39191  	{FzName: ts + 23857, FxProc: 0},
 39192  	{FzName: ts + 23882, FxProc: 0},
 39193  	{FzName: ts + 23903, FxProc: 0},
 39194  	{FzName: ts + 23913, FxProc: 0},
 39195  	{FzName: ts + 23935, FxProc: 0},
 39196  	{FzName: ts + 23956, FxProc: 0},
 39197  	{FzName: ts + 23981, FxProc: 0},
 39198  	{FzName: ts + 24004, FxProc: 0},
 39199  	{FzName: ts + 24025, FxProc: 0},
 39200  	{FzName: ts + 24047, FxProc: 0},
 39201  	{FzName: ts + 24069, FxProc: 0},
 39202  	{FzName: ts + 24090, FxProc: 0},
 39203  	{FzName: ts + 24115, FxProc: 0},
 39204  	{FzName: ts + 24141, FxProc: 0},
 39205  	{FzName: ts + 24168, FxProc: 0},
 39206  	{FzName: ts + 24194, FxProc: 0},
 39207  	{FzName: ts + 24218, FxProc: 0},
 39208  	{FzName: ts + 24237, FxProc: 0},
 39209  	{FzName: ts + 24255, FxProc: 0},
 39210  	{FzName: ts + 24280, FxProc: 0},
 39211  	{FzName: ts + 24305, FxProc: 0},
 39212  	{FzName: ts + 24318, FxProc: 0},
 39213  	{FzName: ts + 24332, FxProc: 0},
 39214  	{FzName: ts + 24358, FxProc: 0},
 39215  }
 39216  var bitmask_size int32 = int32(uint32(unsafe.Sizeof(Bitmask(0))) * uint32(8))
 39217  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 39218  var query_plan uintptr = ts + 24386
 39219  
 39220  var test_pagesize int32 = 1024
 39221  
 39222  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 39223  	return
 39224  }
 39225  
 39226  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39227  	bp := tls.Alloc(184)
 39228  	defer tls.Free(184)
 39229  
 39230  	var rc int32
 39231  
 39232  	if argc != 3 {
 39233  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39234  			ts+24412, 0))
 39235  		return TCL_ERROR
 39236  	}
 39237  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+72) != 0 {
 39238  		return TCL_ERROR
 39239  	}
 39240  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+76, *(*uintptr)(unsafe.Pointer(argv + 1*4)), 0, 0,
 39241  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 39242  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 39243  	if rc != SQLITE_OK {
 39244  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39245  		return TCL_ERROR
 39246  	}
 39247  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 76)), *(*int32)(unsafe.Pointer(bp + 72)))
 39248  	*(*u32)(unsafe.Pointer(bp + 80)) = u32(test_pagesize)
 39249  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 76)), bp+80, -1)
 39250  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+84, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 76))))
 39251  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+84, 0))
 39252  	return TCL_OK
 39253  }
 39254  
 39255  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39256  	bp := tls.Alloc(48)
 39257  	defer tls.Free(48)
 39258  
 39259  	var pPager uintptr
 39260  	var rc int32
 39261  	if argc != 2 {
 39262  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39263  			ts+24430, 0))
 39264  		return TCL_ERROR
 39265  	}
 39266  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39267  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 39268  	if rc != SQLITE_OK {
 39269  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39270  		return TCL_ERROR
 39271  	}
 39272  	return TCL_OK
 39273  }
 39274  
 39275  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39276  	bp := tls.Alloc(48)
 39277  	defer tls.Free(48)
 39278  
 39279  	var pPager uintptr
 39280  	var rc int32
 39281  	if argc != 2 {
 39282  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39283  			ts+24430, 0))
 39284  		return TCL_ERROR
 39285  	}
 39286  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39287  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 39288  	if rc != SQLITE_OK {
 39289  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39290  		return TCL_ERROR
 39291  	}
 39292  	return TCL_OK
 39293  }
 39294  
 39295  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39296  	bp := tls.Alloc(64)
 39297  	defer tls.Free(64)
 39298  
 39299  	var pPager uintptr
 39300  	var rc int32
 39301  	if argc != 2 {
 39302  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39303  			ts+24430, 0))
 39304  		return TCL_ERROR
 39305  	}
 39306  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39307  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 39308  	if rc != SQLITE_OK {
 39309  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39310  		return TCL_ERROR
 39311  	}
 39312  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 39313  	if rc != SQLITE_OK {
 39314  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39315  		return TCL_ERROR
 39316  	}
 39317  	return TCL_OK
 39318  }
 39319  
 39320  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39321  	bp := tls.Alloc(48)
 39322  	defer tls.Free(48)
 39323  
 39324  	var pPager uintptr
 39325  	var rc int32
 39326  	if argc != 2 {
 39327  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39328  			ts+24430, 0))
 39329  		return TCL_ERROR
 39330  	}
 39331  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39332  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 39333  	if rc != SQLITE_OK {
 39334  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39335  		return TCL_ERROR
 39336  	}
 39337  	return TCL_OK
 39338  }
 39339  
 39340  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39341  	bp := tls.Alloc(48)
 39342  	defer tls.Free(48)
 39343  
 39344  	var pPager uintptr
 39345  	var rc int32
 39346  	if argc != 2 {
 39347  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39348  			ts+24430, 0))
 39349  		return TCL_ERROR
 39350  	}
 39351  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39352  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 39353  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39354  	if rc != SQLITE_OK {
 39355  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39356  		return TCL_ERROR
 39357  	}
 39358  	return TCL_OK
 39359  }
 39360  
 39361  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39362  	bp := tls.Alloc(48)
 39363  	defer tls.Free(48)
 39364  
 39365  	var pPager uintptr
 39366  	var rc int32
 39367  	if argc != 2 {
 39368  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39369  			ts+24430, 0))
 39370  		return TCL_ERROR
 39371  	}
 39372  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39373  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 39374  	if rc != SQLITE_OK {
 39375  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39376  		return TCL_ERROR
 39377  	}
 39378  	return TCL_OK
 39379  }
 39380  
 39381  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39382  	bp := tls.Alloc(140)
 39383  	defer tls.Free(140)
 39384  
 39385  	var pPager uintptr
 39386  	var i int32
 39387  	var a uintptr
 39388  	if argc != 2 {
 39389  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39390  			ts+24430, 0))
 39391  		return TCL_ERROR
 39392  	}
 39393  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39394  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 39395  	for i = 0; i < 9; i++ {
 39396  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 39397  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39398  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39399  	}
 39400  	return TCL_OK
 39401  }
 39402  
 39403  var zName = [9]uintptr{
 39404  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39405  	ts + 24448, ts + 24452, ts + 24457,
 39406  }
 39407  
 39408  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39409  	bp := tls.Alloc(160)
 39410  	defer tls.Free(160)
 39411  
 39412  	var pPager uintptr
 39413  
 39414  	if argc != 2 {
 39415  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39416  			ts+24430, 0))
 39417  		return TCL_ERROR
 39418  	}
 39419  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39420  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 39421  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 39422  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39423  	return TCL_OK
 39424  }
 39425  
 39426  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39427  	bp := tls.Alloc(180)
 39428  	defer tls.Free(180)
 39429  
 39430  	var pPager uintptr
 39431  
 39432  	*(*uintptr)(unsafe.Pointer(bp + 76)) = uintptr(0)
 39433  
 39434  	var rc int32
 39435  	if argc != 3 {
 39436  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39437  			ts+24462, 0))
 39438  		return TCL_ERROR
 39439  	}
 39440  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39441  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+72) != 0 {
 39442  		return TCL_ERROR
 39443  	}
 39444  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 39445  	if rc == SQLITE_OK {
 39446  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+76, 0)
 39447  	}
 39448  	if rc != SQLITE_OK {
 39449  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39450  		return TCL_ERROR
 39451  	}
 39452  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+80, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 76))))
 39453  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 39454  	return TCL_OK
 39455  }
 39456  
 39457  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39458  	bp := tls.Alloc(160)
 39459  	defer tls.Free(160)
 39460  
 39461  	var pPager uintptr
 39462  
 39463  	var pPage uintptr
 39464  
 39465  	if argc != 3 {
 39466  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39467  			ts+24462, 0))
 39468  		return TCL_ERROR
 39469  	}
 39470  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39471  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+56) != 0 {
 39472  		return TCL_ERROR
 39473  	}
 39474  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 39475  	if pPage != 0 {
 39476  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 39477  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 39478  	}
 39479  	return TCL_OK
 39480  }
 39481  
 39482  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39483  	bp := tls.Alloc(36)
 39484  	defer tls.Free(36)
 39485  
 39486  	var pPager uintptr
 39487  
 39488  	if argc != 3 {
 39489  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39490  			ts+24462, 0))
 39491  		return TCL_ERROR
 39492  	}
 39493  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39494  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+32) != 0 {
 39495  		return TCL_ERROR
 39496  	}
 39497  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 39498  	return TCL_OK
 39499  }
 39500  
 39501  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39502  	bp := tls.Alloc(32)
 39503  	defer tls.Free(32)
 39504  
 39505  	var pPage uintptr
 39506  	if argc != 2 {
 39507  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39508  			ts+24472, 0))
 39509  		return TCL_ERROR
 39510  	}
 39511  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39512  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 39513  	return TCL_OK
 39514  }
 39515  
 39516  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39517  	bp := tls.Alloc(148)
 39518  	defer tls.Free(148)
 39519  
 39520  	var pPage uintptr
 39521  	if argc != 2 {
 39522  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39523  			ts+24472, 0))
 39524  		return TCL_ERROR
 39525  	}
 39526  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39527  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint32(unsafe.Sizeof([100]int8{})))
 39528  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 39529  	return TCL_OK
 39530  }
 39531  
 39532  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39533  	bp := tls.Alloc(156)
 39534  	defer tls.Free(156)
 39535  
 39536  	var pPage uintptr
 39537  	if argc != 2 {
 39538  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39539  			ts+24472, 0))
 39540  		return TCL_ERROR
 39541  	}
 39542  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39543  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 39544  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39545  	return TCL_OK
 39546  }
 39547  
 39548  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39549  	bp := tls.Alloc(48)
 39550  	defer tls.Free(48)
 39551  
 39552  	var pPage uintptr
 39553  	var pData uintptr
 39554  	var rc int32
 39555  	if argc != 3 {
 39556  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39557  			ts+24479, 0))
 39558  		return TCL_ERROR
 39559  	}
 39560  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39561  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 39562  	if rc != SQLITE_OK {
 39563  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39564  		return TCL_ERROR
 39565  	}
 39566  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 39567  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*4)), uint32(test_pagesize-1))
 39568  	*(*int8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = int8(0)
 39569  	return TCL_OK
 39570  }
 39571  
 39572  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39573  	bp := tls.Alloc(88)
 39574  	defer tls.Free(88)
 39575  
 39576  	var pVfs uintptr
 39577  	*(*uintptr)(unsafe.Pointer(bp + 84)) = uintptr(0)
 39578  	var rc int32
 39579  
 39580  	var offset i64
 39581  	var zFile uintptr
 39582  	var nFile int32
 39583  	if argc != 3 {
 39584  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39585  			ts+24491, 0))
 39586  		return TCL_ERROR
 39587  	}
 39588  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+80) != 0 {
 39589  		return TCL_ERROR
 39590  	}
 39591  
 39592  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39593  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 39594  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 39595  	if zFile == uintptr(0) {
 39596  		return TCL_ERROR
 39597  	}
 39598  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*4)), uint32(nFile+1))
 39599  	*(*int8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = int8(0)
 39600  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+84,
 39601  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 39602  	if rc != 0 {
 39603  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39604  		sqlite3.Xsqlite3_free(tls, zFile)
 39605  		return TCL_ERROR
 39606  	}
 39607  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 39608  	offset = offset * int64(1024*1024)
 39609  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 84)), ts+24524, 14, offset)
 39610  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 84)))
 39611  	sqlite3.Xsqlite3_free(tls, zFile)
 39612  	if rc != 0 {
 39613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39614  		return TCL_ERROR
 39615  	}
 39616  	return TCL_OK
 39617  }
 39618  
 39619  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39620  	bp := tls.Alloc(44)
 39621  	defer tls.Free(44)
 39622  
 39623  	var rc int32
 39624  	if argc != 2 {
 39625  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39626  			ts+24553, uintptr(0)))
 39627  		return TCL_ERROR
 39628  	}
 39629  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+40) != 0 {
 39630  		return TCL_ERROR
 39631  	}
 39632  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 39633  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39634  	return TCL_OK
 39635  }
 39636  
 39637  var faultSimInterp uintptr = uintptr(0)
 39638  var faultSimScriptSize int32 = 0
 39639  var faultSimScript uintptr
 39640  
 39641  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 39642  	bp := tls.Alloc(38)
 39643  	defer tls.Free(38)
 39644  
 39645  	var i int32
 39646  	var isNeg int32
 39647  	var rc int32
 39648  	if x == 0 {
 39649  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint32(2))
 39650  	} else {
 39651  		if x < 0 {
 39652  			isNeg = 1
 39653  			x = -x
 39654  		} else {
 39655  			isNeg = 0
 39656  		}
 39657  		*(*int8)(unsafe.Pointer(bp + 8 + 29)) = int8(0)
 39658  		i = int32(uint32(unsafe.Sizeof([30]int8{})) - uint32(2))
 39659  	__1:
 39660  		if !(i > 0 && x > 0) {
 39661  			goto __3
 39662  		}
 39663  		{
 39664  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8(x%10 + '0')
 39665  
 39666  		}
 39667  		goto __2
 39668  	__2:
 39669  		i--
 39670  		x = x / 10
 39671  		goto __1
 39672  		goto __3
 39673  	__3:
 39674  		;
 39675  		if isNeg != 0 {
 39676  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = int8('-')
 39677  		}
 39678  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint32(unsafe.Sizeof([30]int8{}))-uint32(i))
 39679  	}
 39680  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 39681  	if rc != 0 {
 39682  		libc.Xfprintf(tls, libc.Xstderr, ts+24568, libc.VaList(bp, faultSimScript))
 39683  		rc = SQLITE_ERROR
 39684  	} else {
 39685  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 39686  	}
 39687  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 39688  	return rc
 39689  }
 39690  
 39691  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39692  	bp := tls.Alloc(64)
 39693  	defer tls.Free(64)
 39694  
 39695  	var zScript uintptr
 39696  	var nScript int32
 39697  	var rc int32
 39698  	if argc != 1 && argc != 2 {
 39699  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39700  			ts+24604, uintptr(0)))
 39701  	}
 39702  	if argc == 2 {
 39703  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 39704  	} else {
 39705  		zScript = ts + 584
 39706  	}
 39707  	nScript = int32(libc.Xstrlen(tls, zScript))
 39708  	if faultSimScript != 0 {
 39709  		libc.Xfree(tls, faultSimScript)
 39710  		faultSimScript = uintptr(0)
 39711  	}
 39712  	if nScript == 0 {
 39713  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 39714  	} else {
 39715  		faultSimScript = libc.Xmalloc(tls, uint32(nScript+100))
 39716  		if faultSimScript == uintptr(0) {
 39717  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 39718  			return SQLITE_ERROR
 39719  		}
 39720  		libc.Xmemcpy(tls, faultSimScript, zScript, uint32(nScript))
 39721  		*(*int8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = int8(' ')
 39722  		faultSimScriptSize = nScript + 1
 39723  		faultSimInterp = interp
 39724  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{faultSimCallback}))))
 39725  	}
 39726  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39727  	return SQLITE_OK
 39728  }
 39729  
 39730  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39731  	bp := tls.Alloc(452)
 39732  	defer tls.Free(452)
 39733  
 39734  	var rc int32
 39735  	var nProg int32 = 0
 39736  
 39737  	var z uintptr
 39738  	if argc != 3 {
 39739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39740  			ts+24613, uintptr(0)))
 39741  	}
 39742  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+48) != 0 {
 39743  		return TCL_ERROR
 39744  	}
 39745  	z = *(*uintptr)(unsafe.Pointer(argv + 2*4))
 39746  	for nProg < 99 && *(*int8)(unsafe.Pointer(z)) != 0 {
 39747  		for *(*int8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0) {
 39748  			z++
 39749  		}
 39750  		if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 39751  			break
 39752  		}
 39753  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 39754  		for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 39755  			z++
 39756  		}
 39757  	}
 39758  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 39759  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 39760  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39761  	return TCL_OK
 39762  }
 39763  
 39764  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 39765  	var i int32
 39766  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd2))/uint32(unsafe.Sizeof(struct {
 39767  		FzName uintptr
 39768  		FxProc uintptr
 39769  	}{})); i++ {
 39770  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 39771  	}
 39772  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 39773  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 39774  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 39775  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 39776  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 39777  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 39778  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 39779  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 39780  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 39781  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 39782  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 39783  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 39784  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 39785  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39786  	return TCL_OK
 39787  }
 39788  
 39789  var aCmd2 = [20]struct {
 39790  	FzName uintptr
 39791  	FxProc uintptr
 39792  }{
 39793  	{FzName: ts + 24780, FxProc: 0},
 39794  	{FzName: ts + 24791, FxProc: 0},
 39795  	{FzName: ts + 24803, FxProc: 0},
 39796  	{FzName: ts + 24816, FxProc: 0},
 39797  	{FzName: ts + 24831, FxProc: 0},
 39798  	{FzName: ts + 24848, FxProc: 0},
 39799  	{FzName: ts + 24866, FxProc: 0},
 39800  	{FzName: ts + 24886, FxProc: 0},
 39801  	{FzName: ts + 24898, FxProc: 0},
 39802  	{FzName: ts + 24914, FxProc: 0},
 39803  	{FzName: ts + 24923, FxProc: 0},
 39804  	{FzName: ts + 24935, FxProc: 0},
 39805  	{FzName: ts + 24946, FxProc: 0},
 39806  	{FzName: ts + 24956, FxProc: 0},
 39807  	{FzName: ts + 24967, FxProc: 0},
 39808  	{FzName: ts + 24979, FxProc: 0},
 39809  	{FzName: ts + 24994, FxProc: 0},
 39810  	{FzName: ts + 25008, FxProc: 0},
 39811  	{FzName: ts + 25033, FxProc: 0},
 39812  	{FzName: ts + 25067, FxProc: 0},
 39813  }
 39814  
 39815  type Btree = Btree1
 39816  type BtCursor = BtCursor1
 39817  type BtShared = BtShared1
 39818  
 39819  type MemPage1 = struct {
 39820  	FisInit          u8
 39821  	FintKey          u8
 39822  	FintKeyLeaf      u8
 39823  	F__ccgo_pad1     [1]byte
 39824  	Fpgno            Pgno
 39825  	Fleaf            u8
 39826  	FhdrOffset       u8
 39827  	FchildPtrSize    u8
 39828  	Fmax1bytePayload u8
 39829  	FnOverflow       u8
 39830  	F__ccgo_pad2     [1]byte
 39831  	FmaxLocal        u16
 39832  	FminLocal        u16
 39833  	FcellOffset      u16
 39834  	FnFree           int32
 39835  	FnCell           u16
 39836  	FmaskPage        u16
 39837  	FaiOvfl          [4]u16
 39838  	FapOvfl          [4]uintptr
 39839  	FpBt             uintptr
 39840  	FaData           uintptr
 39841  	FaDataEnd        uintptr
 39842  	FaCellIdx        uintptr
 39843  	FaDataOfst       uintptr
 39844  	FpDbPage         uintptr
 39845  	FxCellSize       uintptr
 39846  	FxParseCell      uintptr
 39847  }
 39848  
 39849  type MemPage = MemPage1
 39850  type BtLock1 = struct {
 39851  	FpBtree      uintptr
 39852  	FiTable      Pgno
 39853  	FeLock       u8
 39854  	F__ccgo_pad1 [3]byte
 39855  	FpNext       uintptr
 39856  }
 39857  
 39858  type BtLock = BtLock1
 39859  type CellInfo1 = struct {
 39860  	FnKey     i64
 39861  	FpPayload uintptr
 39862  	FnPayload u32
 39863  	FnLocal   u16
 39864  	FnSize    u16
 39865  }
 39866  
 39867  type CellInfo = CellInfo1
 39868  
 39869  type IntegrityCk1 = struct {
 39870  	FpBt       uintptr
 39871  	FpPager    uintptr
 39872  	FaPgRef    uintptr
 39873  	FnPage     Pgno
 39874  	FmxErr     int32
 39875  	FnErr      int32
 39876  	FbOomFault int32
 39877  	FzPfx      uintptr
 39878  	Fv1        Pgno
 39879  	Fv2        int32
 39880  	FerrMsg    StrAccum
 39881  	Fheap      uintptr
 39882  	Fdb        uintptr
 39883  }
 39884  
 39885  type IntegrityCk = IntegrityCk1
 39886  
 39887  var sDb sqlite31
 39888  var nRefSqlite3 int32 = 0
 39889  
 39890  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39891  	bp := tls.Alloc(180)
 39892  	defer tls.Free(180)
 39893  
 39894  	var rc int32
 39895  
 39896  	var n int32
 39897  	var zFilename uintptr
 39898  	if argc != 3 {
 39899  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39900  			ts+25102, 0))
 39901  		return TCL_ERROR
 39902  	}
 39903  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+72) != 0 {
 39904  		return TCL_ERROR
 39905  	}
 39906  	nRefSqlite3++
 39907  	if nRefSqlite3 == 1 {
 39908  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39909  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 39910  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 39911  	}
 39912  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 39913  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 39914  	if zFilename == uintptr(0) {
 39915  		return TCL_ERROR
 39916  	}
 39917  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*4)), uint32(n+1))
 39918  	*(*int8)(unsafe.Pointer(zFilename + uintptr(n+1))) = int8(0)
 39919  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+76, 0,
 39920  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 39921  	sqlite3.Xsqlite3_free(tls, zFilename)
 39922  	if rc != SQLITE_OK {
 39923  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39924  		return TCL_ERROR
 39925  	}
 39926  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 76)), *(*int32)(unsafe.Pointer(bp + 72)))
 39927  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+80, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 76))))
 39928  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 39929  	return TCL_OK
 39930  }
 39931  
 39932  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39933  	bp := tls.Alloc(48)
 39934  	defer tls.Free(48)
 39935  
 39936  	var pBt uintptr
 39937  	var rc int32
 39938  	if argc != 2 {
 39939  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39940  			ts+24430, 0))
 39941  		return TCL_ERROR
 39942  	}
 39943  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39944  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 39945  	if rc != SQLITE_OK {
 39946  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39947  		return TCL_ERROR
 39948  	}
 39949  	nRefSqlite3--
 39950  	if nRefSqlite3 == 0 {
 39951  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 39952  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 39953  		sDb.Fmutex = uintptr(0)
 39954  		sDb.FpVfs = uintptr(0)
 39955  	}
 39956  	return TCL_OK
 39957  }
 39958  
 39959  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39960  	bp := tls.Alloc(48)
 39961  	defer tls.Free(48)
 39962  
 39963  	var pBt uintptr
 39964  	var rc int32
 39965  	if argc != 2 {
 39966  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39967  			ts+24430, 0))
 39968  		return TCL_ERROR
 39969  	}
 39970  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39971  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39972  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 39973  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39974  	if rc != SQLITE_OK {
 39975  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39976  		return TCL_ERROR
 39977  	}
 39978  	return TCL_OK
 39979  }
 39980  
 39981  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39982  	bp := tls.Alloc(140)
 39983  	defer tls.Free(140)
 39984  
 39985  	var pBt uintptr
 39986  	var i int32
 39987  	var a uintptr
 39988  
 39989  	if argc != 2 {
 39990  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39991  			ts+24430, 0))
 39992  		return TCL_ERROR
 39993  	}
 39994  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 39995  
 39996  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39997  
 39998  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39999  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40000  	for i = 0; i < 11; i++ {
 40001  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 40002  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 40003  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 40004  	}
 40005  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40006  
 40007  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40008  	return TCL_OK
 40009  }
 40010  
 40011  var zName1 = [11]uintptr{
 40012  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 40013  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 40014  }
 40015  
 40016  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40017  	bp := tls.Alloc(110)
 40018  	defer tls.Free(110)
 40019  
 40020  	var pBt uintptr
 40021  
 40022  	var pCur uintptr
 40023  	var rc int32 = SQLITE_OK
 40024  
 40025  	if argc != 4 {
 40026  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40027  			ts+25137, 0))
 40028  		return TCL_ERROR
 40029  	}
 40030  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40031  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+72) != 0 {
 40032  		return TCL_ERROR
 40033  	}
 40034  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*4)), bp+76) != 0 {
 40035  		return TCL_ERROR
 40036  	}
 40037  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 40038  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 40039  	}
 40040  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40041  	libc.Xmemset(tls, pCur, 0, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 40042  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40043  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40044  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 40045  	if rc == SQLITE_OK {
 40046  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 40047  	}
 40048  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40049  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40050  	if rc != 0 {
 40051  		tcl.XTcl_Free(tls, pCur)
 40052  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40053  		return TCL_ERROR
 40054  	}
 40055  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 40056  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 40057  	return SQLITE_OK
 40058  }
 40059  
 40060  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40061  	bp := tls.Alloc(48)
 40062  	defer tls.Free(48)
 40063  
 40064  	var pCur uintptr
 40065  	var rc int32
 40066  
 40067  	if argc != 2 {
 40068  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40069  			ts+24430, 0))
 40070  		return TCL_ERROR
 40071  	}
 40072  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40073  	{
 40074  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 40075  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40076  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40077  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 40078  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40079  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40080  
 40081  	}
 40082  	tcl.XTcl_Free(tls, pCur)
 40083  	if rc != 0 {
 40084  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40085  		return TCL_ERROR
 40086  	}
 40087  	return SQLITE_OK
 40088  }
 40089  
 40090  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40091  	bp := tls.Alloc(172)
 40092  	defer tls.Free(172)
 40093  
 40094  	var pCur uintptr
 40095  	var rc int32
 40096  	var res int32 = 0
 40097  
 40098  	if argc != 2 {
 40099  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40100  			ts+24430, 0))
 40101  		return TCL_ERROR
 40102  	}
 40103  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40104  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40105  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 40106  	if rc == SQLITE_DONE {
 40107  		res = 1
 40108  		rc = SQLITE_OK
 40109  	}
 40110  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40111  	if rc != 0 {
 40112  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40113  		return TCL_ERROR
 40114  	}
 40115  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 40116  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40117  	return SQLITE_OK
 40118  }
 40119  
 40120  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40121  	bp := tls.Alloc(176)
 40122  	defer tls.Free(176)
 40123  
 40124  	var pCur uintptr
 40125  	var rc int32
 40126  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 40127  
 40128  	if argc != 2 {
 40129  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40130  			ts+24430, 0))
 40131  		return TCL_ERROR
 40132  	}
 40133  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40134  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40135  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 40136  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40137  	if rc != 0 {
 40138  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 40139  		return TCL_ERROR
 40140  	}
 40141  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 40142  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 40143  	return SQLITE_OK
 40144  }
 40145  
 40146  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40147  	bp := tls.Alloc(106)
 40148  	defer tls.Free(106)
 40149  
 40150  	var pCur uintptr
 40151  	var rc int32
 40152  
 40153  	if argc != 2 {
 40154  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40155  			ts+24430, 0))
 40156  		return TCL_ERROR
 40157  	}
 40158  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40159  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40160  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 40161  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40162  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 40163  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40164  	return SQLITE_OK
 40165  }
 40166  
 40167  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40168  	bp := tls.Alloc(106)
 40169  	defer tls.Free(106)
 40170  
 40171  	var pCur uintptr
 40172  	var n u32
 40173  
 40174  	if argc != 2 {
 40175  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40176  			ts+24430, 0))
 40177  		return TCL_ERROR
 40178  	}
 40179  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40180  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40181  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 40182  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40183  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 40184  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 40185  	return SQLITE_OK
 40186  }
 40187  
 40188  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40189  	bp := tls.Alloc(512)
 40190  	defer tls.Free(512)
 40191  
 40192  	var in u64
 40193  
 40194  	var n1 int32
 40195  	var n2 int32
 40196  	var i int32
 40197  	var j int32
 40198  
 40199  	if argc != 5 {
 40200  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40201  			ts+25161, 0))
 40202  		return TCL_ERROR
 40203  	}
 40204  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+184) != 0 {
 40205  		return TCL_ERROR
 40206  	}
 40207  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+188) != 0 {
 40208  		return TCL_ERROR
 40209  	}
 40210  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*4)), bp+192) != 0 {
 40211  		return TCL_ERROR
 40212  	}
 40213  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*4)), bp+196) != 0 {
 40214  		return TCL_ERROR
 40215  	}
 40216  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 40217  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 40218  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 40219  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 40220  		if n1 > 9 || n1 < 1 {
 40221  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40222  				ts+25196, libc.VaList(bp+32, n1))
 40223  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 40224  			return TCL_ERROR
 40225  		}
 40226  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+500))
 40227  		if n1 != n2 {
 40228  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40229  				ts+25246, libc.VaList(bp+56, n1, n2))
 40230  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 40231  			return TCL_ERROR
 40232  		}
 40233  		if in != *(*u64)(unsafe.Pointer(bp + 500)) {
 40234  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40235  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 500))))
 40236  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 40237  			return TCL_ERROR
 40238  		}
 40239  		if in&uint64(0xffffffff) == in {
 40240  			n2 = int32(func() uint8 {
 40241  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 40242  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 508)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 40243  				}
 40244  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+508)
 40245  			}())
 40246  			*(*u64)(unsafe.Pointer(bp + 500)) = u64(*(*u32)(unsafe.Pointer(bp + 508)))
 40247  			if n1 != n2 {
 40248  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40249  					ts+25333,
 40250  					libc.VaList(bp+120, n1, n2))
 40251  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 40252  				return TCL_ERROR
 40253  			}
 40254  			if in != *(*u64)(unsafe.Pointer(bp + 500)) {
 40255  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 40256  					ts+25383,
 40257  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 500))))
 40258  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 40259  				return TCL_ERROR
 40260  			}
 40261  		}
 40262  
 40263  		for j = 0; j < 19; j++ {
 40264  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+500)
 40265  		}
 40266  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 40267  	}
 40268  	return TCL_OK
 40269  }
 40270  
 40271  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40272  	bp := tls.Alloc(204)
 40273  	defer tls.Free(204)
 40274  
 40275  	var db uintptr
 40276  	var pBt uintptr
 40277  	var iDb int32 = 0
 40278  
 40279  	if argc != 2 && argc != 3 {
 40280  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40281  			ts+25439, 0))
 40282  		return TCL_ERROR
 40283  	}
 40284  
 40285  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)), bp+72) {
 40286  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+11945, 0))
 40287  		return TCL_ERROR
 40288  	}
 40289  	if argc == 3 {
 40290  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 40291  	}
 40292  
 40293  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 40294  
 40295  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*16)).FpBt
 40296  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+104, ts+9889, libc.VaList(bp+64, pBt))
 40297  	tcl.XTcl_SetResult(tls, interp, bp+104, uintptr(1))
 40298  	return TCL_OK
 40299  }
 40300  
 40301  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40302  	bp := tls.Alloc(32)
 40303  	defer tls.Free(32)
 40304  
 40305  	var pBt uintptr
 40306  	var res int32
 40307  	var pFile uintptr
 40308  
 40309  	if argc != 2 {
 40310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40311  			ts+24430, 0))
 40312  		return TCL_ERROR
 40313  	}
 40314  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40315  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40316  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40317  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 40318  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 40319  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40320  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40321  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 40322  	return SQLITE_OK
 40323  }
 40324  
 40325  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40326  	bp := tls.Alloc(36)
 40327  	defer tls.Free(36)
 40328  
 40329  	var pBt uintptr
 40330  
 40331  	if argc != 3 {
 40332  		tcl.XTcl_AppendResult(tls,
 40333  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 40334  		return TCL_ERROR
 40335  	}
 40336  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40337  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+32) != 0 {
 40338  		return TCL_ERROR
 40339  	}
 40340  
 40341  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40342  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 40343  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 40344  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 40345  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 40346  	return TCL_OK
 40347  }
 40348  
 40349  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 40350  	bp := tls.Alloc(52)
 40351  	defer tls.Free(52)
 40352  
 40353  	var pCur uintptr
 40354  
 40355  	if objc != 4 && objc != 3 {
 40356  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 40357  		return TCL_ERROR
 40358  	}
 40359  
 40360  	libc.Xmemset(tls, bp+16, 0, uint32(unsafe.Sizeof(BtreePayload{})))
 40361  	if objc == 4 {
 40362  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+48) != 0 {
 40363  			return TCL_ERROR
 40364  		}
 40365  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 48)))
 40366  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+16+24)
 40367  	} else {
 40368  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+48)
 40369  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 48)))
 40370  	}
 40371  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 40372  
 40373  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40374  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40375  	*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 40376  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 40377  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 40378  
 40379  	tcl.XTcl_ResetResult(tls, interp)
 40380  	if *(*int32)(unsafe.Pointer(bp + 48)) != 0 {
 40381  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 48))), 0))
 40382  		return TCL_ERROR
 40383  	}
 40384  	return TCL_OK
 40385  }
 40386  
 40387  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 40388  	var i int32
 40389  
 40390  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd3))/uint32(unsafe.Sizeof(struct {
 40391  		FzName uintptr
 40392  		FxProc uintptr
 40393  	}{})); i++ {
 40394  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 40395  	}
 40396  
 40397  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 40398  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 40399  	}{btree_insert})), uintptr(0), uintptr(0))
 40400  
 40401  	return TCL_OK
 40402  }
 40403  
 40404  var aCmd3 = [14]struct {
 40405  	FzName uintptr
 40406  	FxProc uintptr
 40407  }{
 40408  	{FzName: ts + 25525, FxProc: 0},
 40409  	{FzName: ts + 25536, FxProc: 0},
 40410  	{FzName: ts + 25548, FxProc: 0},
 40411  	{FzName: ts + 25572, FxProc: 0},
 40412  	{FzName: ts + 25590, FxProc: 0},
 40413  	{FzName: ts + 25603, FxProc: 0},
 40414  	{FzName: ts + 25622, FxProc: 0},
 40415  	{FzName: ts + 25633, FxProc: 0},
 40416  	{FzName: ts + 25643, FxProc: 0},
 40417  	{FzName: ts + 25662, FxProc: 0},
 40418  	{FzName: ts + 25674, FxProc: 0},
 40419  	{FzName: ts + 25692, FxProc: 0},
 40420  	{FzName: ts + 25706, FxProc: 0},
 40421  	{FzName: ts + 25720, FxProc: 0},
 40422  }
 40423  
 40424  type sched_param = struct{ Fsched_priority int32 }
 40425  
 40426  type cpu_set_t = struct{ F__bits [32]uint32 }
 40427  
 40428  type _pthread_cleanup_buffer = struct {
 40429  	F__routine    uintptr
 40430  	F__arg        uintptr
 40431  	F__canceltype int32
 40432  	F__prev       uintptr
 40433  }
 40434  
 40435  type __pthread_cleanup_frame = struct {
 40436  	F__cancel_routine uintptr
 40437  	F__cancel_arg     uintptr
 40438  	F__do_it          int32
 40439  	F__cancel_type    int32
 40440  }
 40441  
 40442  type Thread = struct {
 40443  	FzFilename  uintptr
 40444  	FxOp        uintptr
 40445  	FzArg       uintptr
 40446  	Fopnum      int32
 40447  	Fbusy       int32
 40448  	Fcompleted  int32
 40449  	Fdb         uintptr
 40450  	FpStmt      uintptr
 40451  	FzErr       uintptr
 40452  	FzStaticErr uintptr
 40453  	Frc         int32
 40454  	Fargc       int32
 40455  	Fargv       [100]uintptr
 40456  	Fcolv       [100]uintptr
 40457  }
 40458  
 40459  var threadset [26]Thread
 40460  
 40461  func test_barrier(tls *libc.TLS) {
 40462  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 40463  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 40464  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 40465  }
 40466  
 40467  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 40468  	var p uintptr = pArg
 40469  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40470  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40471  	}
 40472  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+24)
 40473  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 40474  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 40475  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40476  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40477  	}
 40478  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40479  	test_barrier(tls)
 40480  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 40481  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40482  		libc.Xsched_yield(tls)
 40483  	}
 40484  	test_barrier(tls)
 40485  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 40486  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40487  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40488  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40489  		}
 40490  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 40491  		test_barrier(tls)
 40492  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40493  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40494  			libc.Xsched_yield(tls)
 40495  		}
 40496  		test_barrier(tls)
 40497  	}
 40498  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40499  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40500  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40501  	}
 40502  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 40503  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 40504  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 40505  	}
 40506  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 40507  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 40508  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 40509  	}
 40510  	test_barrier(tls)
 40511  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 40512  	sqlite3.Xsqlite3_thread_cleanup(tls)
 40513  	return uintptr(0)
 40514  }
 40515  
 40516  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 40517  	bp := tls.Alloc(16)
 40518  	defer tls.Free(16)
 40519  
 40520  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zArg)))))*2)))&int32(_ISupper) != 0) {
 40521  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 40522  		return -1
 40523  	}
 40524  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 40525  }
 40526  
 40527  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40528  	bp := tls.Alloc(92)
 40529  	defer tls.Free(92)
 40530  
 40531  	var i int32
 40532  
 40533  	var rc int32
 40534  
 40535  	if argc != 3 {
 40536  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40537  			ts+25780, 0))
 40538  		return TCL_ERROR
 40539  	}
 40540  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40541  	if i < 0 {
 40542  		return TCL_ERROR
 40543  	}
 40544  	if threadset[i].Fbusy != 0 {
 40545  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+25801, 0))
 40546  		return TCL_ERROR
 40547  	}
 40548  	threadset[i].Fbusy = 1
 40549  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40550  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 40551  	threadset[i].Fopnum = 1
 40552  	threadset[i].Fcompleted = 0
 40553  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 40554  		f func(*libc.TLS, uintptr) uintptr
 40555  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40556  	if rc != 0 {
 40557  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 40558  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 40559  		threadset[i].Fbusy = 0
 40560  		return TCL_ERROR
 40561  	}
 40562  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 40563  	return TCL_OK
 40564  }
 40565  
 40566  func test_thread_wait(tls *libc.TLS, p uintptr) {
 40567  	test_barrier(tls)
 40568  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 40569  		libc.Xsched_yield(tls)
 40570  	}
 40571  	test_barrier(tls)
 40572  }
 40573  
 40574  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40575  	bp := tls.Alloc(48)
 40576  	defer tls.Free(48)
 40577  
 40578  	var i int32
 40579  
 40580  	if argc != 2 {
 40581  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40582  			ts+25849, 0))
 40583  		return TCL_ERROR
 40584  	}
 40585  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40586  	if i < 0 {
 40587  		return TCL_ERROR
 40588  	}
 40589  	if !(threadset[i].Fbusy != 0) {
 40590  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40591  		return TCL_ERROR
 40592  	}
 40593  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40594  	return TCL_OK
 40595  }
 40596  
 40597  func test_stop_thread(tls *libc.TLS, p uintptr) {
 40598  	test_thread_wait(tls, p)
 40599  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 40600  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 40601  	test_thread_wait(tls, p)
 40602  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 40603  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 40604  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 40605  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 40606  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 40607  }
 40608  
 40609  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40610  	bp := tls.Alloc(48)
 40611  	defer tls.Free(48)
 40612  
 40613  	var i int32
 40614  
 40615  	if argc != 2 {
 40616  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40617  			ts+25849, 0))
 40618  		return TCL_ERROR
 40619  	}
 40620  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*4))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*4)) + 1))) == 0 {
 40621  		for i = 0; i < N_THREAD; i++ {
 40622  			if threadset[i].Fbusy != 0 {
 40623  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40624  			}
 40625  		}
 40626  	} else {
 40627  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40628  		if i < 0 {
 40629  			return TCL_ERROR
 40630  		}
 40631  		if !(threadset[i].Fbusy != 0) {
 40632  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40633  			return TCL_ERROR
 40634  		}
 40635  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40636  	}
 40637  	return TCL_OK
 40638  }
 40639  
 40640  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40641  	bp := tls.Alloc(172)
 40642  	defer tls.Free(172)
 40643  
 40644  	var i int32
 40645  
 40646  	if argc != 2 {
 40647  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40648  			ts+25849, 0))
 40649  		return TCL_ERROR
 40650  	}
 40651  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40652  	if i < 0 {
 40653  		return TCL_ERROR
 40654  	}
 40655  	if !(threadset[i].Fbusy != 0) {
 40656  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40657  		return TCL_ERROR
 40658  	}
 40659  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40660  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 40661  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40662  	return TCL_OK
 40663  }
 40664  
 40665  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40666  	bp := tls.Alloc(84)
 40667  	defer tls.Free(84)
 40668  
 40669  	var i int32
 40670  
 40671  	if argc != 3 {
 40672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40673  			ts+25868, 0))
 40674  		return TCL_ERROR
 40675  	}
 40676  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40677  	if i < 0 {
 40678  		return TCL_ERROR
 40679  	}
 40680  	if !(threadset[i].Fbusy != 0) {
 40681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40682  		return TCL_ERROR
 40683  	}
 40684  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+80) != 0 {
 40685  		return TCL_ERROR
 40686  	}
 40687  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40688  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40689  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40690  		return TCL_ERROR
 40691  	}
 40692  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset)) + uintptr(i)*848 + 48 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)), 0))
 40693  	return TCL_OK
 40694  }
 40695  
 40696  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40697  	bp := tls.Alloc(84)
 40698  	defer tls.Free(84)
 40699  
 40700  	var i int32
 40701  
 40702  	if argc != 3 {
 40703  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40704  			ts+25868, 0))
 40705  		return TCL_ERROR
 40706  	}
 40707  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40708  	if i < 0 {
 40709  		return TCL_ERROR
 40710  	}
 40711  	if !(threadset[i].Fbusy != 0) {
 40712  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40713  		return TCL_ERROR
 40714  	}
 40715  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+80) != 0 {
 40716  		return TCL_ERROR
 40717  	}
 40718  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40719  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40720  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40721  		return TCL_ERROR
 40722  	}
 40723  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset)) + uintptr(i)*848 + 448 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)), 0))
 40724  	return TCL_OK
 40725  }
 40726  
 40727  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40728  	bp := tls.Alloc(64)
 40729  	defer tls.Free(64)
 40730  
 40731  	var i int32
 40732  	var zName uintptr
 40733  
 40734  	if argc != 2 {
 40735  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40736  			ts+25849, 0))
 40737  		return TCL_ERROR
 40738  	}
 40739  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40740  	if i < 0 {
 40741  		return TCL_ERROR
 40742  	}
 40743  	if !(threadset[i].Fbusy != 0) {
 40744  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40745  		return TCL_ERROR
 40746  	}
 40747  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40748  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 40749  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 40750  	return TCL_OK
 40751  }
 40752  
 40753  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40754  	bp := tls.Alloc(64)
 40755  	defer tls.Free(64)
 40756  
 40757  	var i int32
 40758  
 40759  	if argc != 2 {
 40760  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40761  			ts+25849, 0))
 40762  		return TCL_ERROR
 40763  	}
 40764  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40765  	if i < 0 {
 40766  		return TCL_ERROR
 40767  	}
 40768  	if !(threadset[i].Fbusy != 0) {
 40769  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40770  		return TCL_ERROR
 40771  	}
 40772  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40773  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 40774  	return TCL_OK
 40775  }
 40776  
 40777  func do_compile(tls *libc.TLS, p uintptr) {
 40778  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 40779  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25901)
 40780  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40781  		return
 40782  	}
 40783  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40784  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40785  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40786  	}
 40787  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+28, uintptr(0))
 40788  }
 40789  
 40790  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40791  	bp := tls.Alloc(56)
 40792  	defer tls.Free(56)
 40793  
 40794  	var i int32
 40795  	if argc != 3 {
 40796  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40797  			ts+25921, 0))
 40798  		return TCL_ERROR
 40799  	}
 40800  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40801  	if i < 0 {
 40802  		return TCL_ERROR
 40803  	}
 40804  	if !(threadset[i].Fbusy != 0) {
 40805  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40806  		return TCL_ERROR
 40807  	}
 40808  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40809  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 40810  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40811  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 40812  	test_barrier(tls)
 40813  	threadset[i].Fopnum++
 40814  	return TCL_OK
 40815  }
 40816  
 40817  func do_step(tls *libc.TLS, p uintptr) {
 40818  	var i int32
 40819  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40820  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25929)
 40821  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40822  		return
 40823  	}
 40824  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40825  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 40826  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40827  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 40828  			*(*uintptr)(unsafe.Pointer(p + 48 + uintptr(i)*4)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40829  		}
 40830  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 40831  			*(*uintptr)(unsafe.Pointer(p + 448 + uintptr(i)*4)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40832  		}
 40833  	}
 40834  }
 40835  
 40836  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40837  	bp := tls.Alloc(48)
 40838  	defer tls.Free(48)
 40839  
 40840  	var i int32
 40841  	if argc != 2 {
 40842  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40843  			ts+25958, 0))
 40844  		return TCL_ERROR
 40845  	}
 40846  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40847  	if i < 0 {
 40848  		return TCL_ERROR
 40849  	}
 40850  	if !(threadset[i].Fbusy != 0) {
 40851  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40852  		return TCL_ERROR
 40853  	}
 40854  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40855  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 40856  	test_barrier(tls)
 40857  	threadset[i].Fopnum++
 40858  	return TCL_OK
 40859  }
 40860  
 40861  func do_finalize(tls *libc.TLS, p uintptr) {
 40862  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40863  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25929)
 40864  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40865  		return
 40866  	}
 40867  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40868  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40869  }
 40870  
 40871  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40872  	bp := tls.Alloc(48)
 40873  	defer tls.Free(48)
 40874  
 40875  	var i int32
 40876  	if argc != 2 {
 40877  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40878  			ts+25958, 0))
 40879  		return TCL_ERROR
 40880  	}
 40881  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40882  	if i < 0 {
 40883  		return TCL_ERROR
 40884  	}
 40885  	if !(threadset[i].Fbusy != 0) {
 40886  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40887  		return TCL_ERROR
 40888  	}
 40889  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40890  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 40891  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40892  	threadset[i].FzArg = uintptr(0)
 40893  	test_barrier(tls)
 40894  	threadset[i].Fopnum++
 40895  	return TCL_OK
 40896  }
 40897  
 40898  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40899  	bp := tls.Alloc(64)
 40900  	defer tls.Free(64)
 40901  
 40902  	var i int32
 40903  	var j int32
 40904  	var temp uintptr
 40905  	if argc != 3 {
 40906  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40907  			ts+25963, 0))
 40908  		return TCL_ERROR
 40909  	}
 40910  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40911  	if i < 0 {
 40912  		return TCL_ERROR
 40913  	}
 40914  	if !(threadset[i].Fbusy != 0) {
 40915  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40916  		return TCL_ERROR
 40917  	}
 40918  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40919  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 40920  	if j < 0 {
 40921  		return TCL_ERROR
 40922  	}
 40923  	if !(threadset[j].Fbusy != 0) {
 40924  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 40925  		return TCL_ERROR
 40926  	}
 40927  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*848)
 40928  	temp = threadset[i].Fdb
 40929  	threadset[i].Fdb = threadset[j].Fdb
 40930  	threadset[j].Fdb = temp
 40931  	return TCL_OK
 40932  }
 40933  
 40934  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40935  	bp := tls.Alloc(164)
 40936  	defer tls.Free(164)
 40937  
 40938  	var i int32
 40939  
 40940  	if argc != 2 {
 40941  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40942  			ts+25849, 0))
 40943  		return TCL_ERROR
 40944  	}
 40945  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40946  	if i < 0 {
 40947  		return TCL_ERROR
 40948  	}
 40949  	if !(threadset[i].Fbusy != 0) {
 40950  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40951  		return TCL_ERROR
 40952  	}
 40953  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40954  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 40955  	threadset[i].Fdb = uintptr(0)
 40956  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40957  	return TCL_OK
 40958  }
 40959  
 40960  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40961  	bp := tls.Alloc(48)
 40962  	defer tls.Free(48)
 40963  
 40964  	var i int32
 40965  	if argc != 3 {
 40966  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40967  			ts+25972, 0))
 40968  		return TCL_ERROR
 40969  	}
 40970  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40971  	if i < 0 {
 40972  		return TCL_ERROR
 40973  	}
 40974  	if !(threadset[i].Fbusy != 0) {
 40975  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40976  		return TCL_ERROR
 40977  	}
 40978  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 40979  
 40980  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 40981  	return TCL_OK
 40982  }
 40983  
 40984  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40985  	bp := tls.Alloc(164)
 40986  	defer tls.Free(164)
 40987  
 40988  	var i int32
 40989  
 40990  	if argc != 2 {
 40991  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40992  			ts+25849, 0))
 40993  		return TCL_ERROR
 40994  	}
 40995  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 40996  	if i < 0 {
 40997  		return TCL_ERROR
 40998  	}
 40999  	if !(threadset[i].Fbusy != 0) {
 41000  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41001  		return TCL_ERROR
 41002  	}
 41003  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*848)
 41004  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 41005  	threadset[i].FpStmt = uintptr(0)
 41006  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 41007  	return TCL_OK
 41008  }
 41009  
 41010  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 41011  	var i int32
 41012  
 41013  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd4))/uint32(unsafe.Sizeof(struct {
 41014  		FzName uintptr
 41015  		FxProc uintptr
 41016  	}{})); i++ {
 41017  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 41018  	}
 41019  	return TCL_OK
 41020  }
 41021  
 41022  var aCmd4 = [15]struct {
 41023  	FzName uintptr
 41024  	FxProc uintptr
 41025  }{
 41026  	{FzName: ts + 25979, FxProc: 0},
 41027  	{FzName: ts + 25993, FxProc: 0},
 41028  	{FzName: ts + 26005, FxProc: 0},
 41029  	{FzName: ts + 26017, FxProc: 0},
 41030  	{FzName: ts + 26029, FxProc: 0},
 41031  	{FzName: ts + 26041, FxProc: 0},
 41032  	{FzName: ts + 26056, FxProc: 0},
 41033  	{FzName: ts + 26070, FxProc: 0},
 41034  	{FzName: ts + 26083, FxProc: 0},
 41035  	{FzName: ts + 26098, FxProc: 0},
 41036  	{FzName: ts + 26110, FxProc: 0},
 41037  	{FzName: ts + 26126, FxProc: 0},
 41038  	{FzName: ts + 26138, FxProc: 0},
 41039  	{FzName: ts + 26152, FxProc: 0},
 41040  	{FzName: ts + 26166, FxProc: 0},
 41041  }
 41042  
 41043  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41044  	bp := tls.Alloc(4)
 41045  	defer tls.Free(4)
 41046  
 41047  	var bytes uintptr
 41048  	var pRet uintptr
 41049  
 41050  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp)
 41051  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 41052  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 41053  	return TCL_OK
 41054  }
 41055  
 41056  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41057  	bp := tls.Alloc(80)
 41058  	defer tls.Free(80)
 41059  
 41060  	var i int32
 41061  
 41062  	if objc != 3 {
 41063  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41064  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 41065  		return TCL_ERROR
 41066  	}
 41067  
 41068  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+32) != 0 {
 41069  		return TCL_ERROR
 41070  	}
 41071  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+36) != 0 {
 41072  		return TCL_ERROR
 41073  	}
 41074  
 41075  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 41076  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 41077  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 41078  
 41079  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 41080  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 41081  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 41082  		}
 41083  	}
 41084  
 41085  	return TCL_OK
 41086  }
 41087  
 41088  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 41089  	bp := tls.Alloc(64)
 41090  	defer tls.Free(64)
 41091  
 41092  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 41093  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 41094  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 41095  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 41096  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 41097  		{},
 41098  	}
 41099  	var pEnc uintptr
 41100  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 41101  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 8 {
 41102  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 41103  			break
 41104  		}
 41105  	}
 41106  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 41107  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 41108  	}
 41109  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 41110  		return u8(SQLITE_UTF16LE)
 41111  	}
 41112  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 41113  }
 41114  
 41115  type EncName = struct {
 41116  	FzName       uintptr
 41117  	Fenc         u8
 41118  	F__ccgo_pad1 [3]byte
 41119  }
 41120  
 41121  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41122  	bp := tls.Alloc(44)
 41123  	defer tls.Free(44)
 41124  
 41125  	var enc_from u8
 41126  	var enc_to u8
 41127  	var pVal uintptr
 41128  	var z uintptr
 41129  
 41130  	var xDel uintptr = uintptr(0)
 41131  
 41132  	if objc != 4 && objc != 5 {
 41133  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 41134  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 41135  			ts+26267, 0))
 41136  		return TCL_ERROR
 41137  	}
 41138  	if objc == 5 {
 41139  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 41140  	}
 41141  
 41142  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 41143  	if !(enc_from != 0) {
 41144  		return TCL_ERROR
 41145  	}
 41146  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 41147  	if !(enc_to != 0) {
 41148  		return TCL_ERROR
 41149  	}
 41150  
 41151  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 41152  
 41153  	if int32(enc_from) == SQLITE_UTF8 {
 41154  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 41155  		if objc == 5 {
 41156  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 41157  		}
 41158  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41159  	} else {
 41160  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+40)
 41161  		if objc == 5 {
 41162  			var zTmp uintptr = z
 41163  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 41164  			libc.Xmemcpy(tls, z, zTmp, uint32(*(*int32)(unsafe.Pointer(bp + 40))))
 41165  		}
 41166  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 41167  	}
 41168  
 41169  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 41170  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 41171  		if int32(enc_to) == SQLITE_UTF8 {
 41172  			return 1
 41173  		}
 41174  		return 2
 41175  	}()
 41176  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 41177  
 41178  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 41179  
 41180  	return TCL_OK
 41181  }
 41182  
 41183  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41184  	sqlite3.Xsqlite3UtfSelfTest(tls)
 41185  	return SQLITE_OK
 41186  }
 41187  
 41188  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 41189  	var i int32
 41190  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd5))/uint32(unsafe.Sizeof(struct {
 41191  		FzName uintptr
 41192  		FxProc uintptr
 41193  	}{})); i++ {
 41194  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 41195  	}
 41196  	return SQLITE_OK
 41197  }
 41198  
 41199  var aCmd5 = [4]struct {
 41200  	FzName uintptr
 41201  	FxProc uintptr
 41202  }{
 41203  	{FzName: ts + 26302, FxProc: 0},
 41204  	{FzName: ts + 26311, FxProc: 0},
 41205  	{FzName: ts + 26331, FxProc: 0},
 41206  	{FzName: ts + 26346, FxProc: 0},
 41207  }
 41208  
 41209  type CrashFile1 = struct {
 41210  	FpMethod   uintptr
 41211  	FpRealFile uintptr
 41212  	FzName     uintptr
 41213  	Fflags     int32
 41214  	FzData     uintptr
 41215  	FnData     int32
 41216  	FiSize     i64
 41217  }
 41218  
 41219  type CrashFile = CrashFile1
 41220  type CrashGlobal1 = struct {
 41221  	FpWriteList             uintptr
 41222  	FpWriteListEnd          uintptr
 41223  	FiSectorSize            int32
 41224  	FiDeviceCharacteristics int32
 41225  	FiCrash                 int32
 41226  	FzCrashFile             [500]int8
 41227  }
 41228  
 41229  type CrashGlobal = CrashGlobal1
 41230  type WriteBuffer1 = struct {
 41231  	FiOffset i64
 41232  	FnBuf    int32
 41233  	FzBuf    uintptr
 41234  	FpFile   uintptr
 41235  	FpNext   uintptr
 41236  }
 41237  
 41238  type WriteBuffer = WriteBuffer1
 41239  
 41240  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 41241  
 41242  var sqlite3CrashTestEnable int32 = 0
 41243  
 41244  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 41245  	return tcl.XTcl_AttemptAlloc(tls, size_t(nByte))
 41246  }
 41247  
 41248  func crash_free(tls *libc.TLS, p uintptr) {
 41249  	tcl.XTcl_Free(tls, p)
 41250  }
 41251  
 41252  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 41253  	return tcl.XTcl_AttemptRealloc(tls, p, size_t(n))
 41254  }
 41255  
 41256  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 41257  	var rc int32 = SQLITE_OK
 41258  	var iSkip int32 = 0
 41259  	if iAmt-i64(iSkip) > int64(0) {
 41260  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 41261  	}
 41262  	return rc
 41263  }
 41264  
 41265  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 41266  	bp := tls.Alloc(16)
 41267  	defer tls.Free(16)
 41268  
 41269  	var rc int32 = SQLITE_OK
 41270  	var iDc int32 = g.FiDeviceCharacteristics
 41271  	var pWrite uintptr
 41272  	var ppPtr uintptr
 41273  
 41274  	var pFinal uintptr = uintptr(0)
 41275  	if !(isCrash != 0) {
 41276  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41277  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 41278  				pFinal = pWrite
 41279  			}
 41280  		}
 41281  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 41282  		var nWrite int32 = 0
 41283  
 41284  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41285  			nWrite++
 41286  		}
 41287  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 41288  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 41289  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 41290  				return -1 * *(*int32)(unsafe.Pointer(bp))
 41291  			}
 41292  			return *(*int32)(unsafe.Pointer(bp))
 41293  		}() % nWrite
 41294  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41295  			*(*int32)(unsafe.Pointer(bp))--
 41296  		}
 41297  		pFinal = pWrite
 41298  	}
 41299  
 41300  	ppPtr = uintptr(unsafe.Pointer(&g))
 41301  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 41302  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 41303  
 41304  		var eAction int32 = 0
 41305  		if !(isCrash != 0) {
 41306  			eAction = 2
 41307  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 41308  				eAction = 1
 41309  			}
 41310  		} else {
 41311  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 41312  
 41313  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 41314  				*(*int8)(unsafe.Pointer(bp + 4)) &= int8(0x01)
 41315  			}
 41316  
 41317  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 41318  				*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 41319  			}
 41320  
 41321  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41322  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 41323  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 41324  					*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 41325  				}
 41326  			}
 41327  
 41328  			if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 41329  				eAction = 3
 41330  			} else {
 41331  				eAction = func() int32 {
 41332  					if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 41333  						return 2
 41334  					}
 41335  					return 1
 41336  				}()
 41337  			}
 41338  		}
 41339  
 41340  		switch eAction {
 41341  		case 1:
 41342  			{
 41343  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 41344  					rc = writeDbFile(tls,
 41345  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41346  				} else {
 41347  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 41348  				}
 41349  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 41350  				crash_free(tls, pWrite)
 41351  				break
 41352  
 41353  			}
 41354  		case 2:
 41355  			{
 41356  				ppPtr = pWrite + 20
 41357  				break
 41358  
 41359  			}
 41360  		case 3:
 41361  			{
 41362  				var zGarbage uintptr
 41363  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 41364  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 41365  
 41366  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 41367  				if zGarbage != 0 {
 41368  					var i sqlite3_int64
 41369  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 41370  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 41371  						rc = writeDbFile(tls,
 41372  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 41373  					}
 41374  					crash_free(tls, zGarbage)
 41375  				} else {
 41376  					rc = SQLITE_NOMEM
 41377  				}
 41378  
 41379  				ppPtr = pWrite + 20
 41380  				break
 41381  
 41382  			}
 41383  
 41384  		default:
 41385  		}
 41386  
 41387  		if pWrite == pFinal {
 41388  			break
 41389  		}
 41390  	}
 41391  
 41392  	if rc == SQLITE_OK && isCrash != 0 {
 41393  		libc.Xexit(tls, -1)
 41394  	}
 41395  
 41396  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 41397  	}
 41398  	g.FpWriteListEnd = pWrite
 41399  
 41400  	return rc
 41401  }
 41402  
 41403  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 41404  	var pNew uintptr
 41405  
 41406  	pNew = crash_malloc(tls, int32(uint32(unsafe.Sizeof(WriteBuffer{}))+uint32(nBuf)))
 41407  	if pNew == uintptr(0) {
 41408  		libc.Xfprintf(tls, libc.Xstderr, ts+26365, 0)
 41409  	}
 41410  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(WriteBuffer{}))+uint32(nBuf))
 41411  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 41412  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 41413  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 41414  	if zBuf != 0 {
 41415  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*24
 41416  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint32(nBuf))
 41417  	}
 41418  
 41419  	if g.FpWriteList != 0 {
 41420  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 41421  	} else {
 41422  		g.FpWriteList = pNew
 41423  	}
 41424  	g.FpWriteListEnd = pNew
 41425  
 41426  	return SQLITE_OK
 41427  }
 41428  
 41429  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 41430  	var pCrash uintptr = pFile
 41431  	writeListSync(tls, pCrash, 0)
 41432  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 41433  	return SQLITE_OK
 41434  }
 41435  
 41436  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41437  	var pCrash uintptr = pFile
 41438  	var nCopy int32 = func() int32 {
 41439  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 41440  			return int32(i64(iAmt))
 41441  		}
 41442  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 41443  	}()
 41444  
 41445  	if nCopy > 0 {
 41446  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint32(nCopy))
 41447  	}
 41448  
 41449  	if nCopy < iAmt {
 41450  		return SQLITE_IOERR | int32(2)<<8
 41451  	}
 41452  
 41453  	return SQLITE_OK
 41454  }
 41455  
 41456  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 41457  	var pCrash uintptr = pFile
 41458  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41459  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 41460  	}
 41461  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 41462  		var zNew uintptr
 41463  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 41464  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 41465  		if !(zNew != 0) {
 41466  			return SQLITE_NOMEM
 41467  		}
 41468  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint32(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 41469  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 41470  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 41471  	}
 41472  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint32(iAmt))
 41473  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 41474  }
 41475  
 41476  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 41477  	var pCrash uintptr = pFile
 41478  
 41479  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 41480  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 41481  	}
 41482  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 41483  }
 41484  
 41485  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 41486  	var pCrash uintptr = pFile
 41487  	var isCrash int32 = 0
 41488  
 41489  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 41490  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 20
 41491  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 41492  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 41493  
 41494  	if nCrashFile > 0 && int32(*(*int8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 41495  		nCrashFile--
 41496  		if nName > nCrashFile {
 41497  			nName = nCrashFile
 41498  		}
 41499  	}
 41500  
 41501  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint32(nName)) {
 41502  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 41503  			isCrash = 1
 41504  		}
 41505  	}
 41506  
 41507  	return writeListSync(tls, pCrash, isCrash)
 41508  }
 41509  
 41510  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 41511  	var pCrash uintptr = pFile
 41512  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 41513  	return SQLITE_OK
 41514  }
 41515  
 41516  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41517  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41518  }
 41519  
 41520  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 41521  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 41522  }
 41523  
 41524  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 41525  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 41526  }
 41527  
 41528  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 41529  	if op == SQLITE_FCNTL_SIZE_HINT {
 41530  		var pCrash uintptr = pFile
 41531  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 41532  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 41533  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 41534  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 41535  			}
 41536  		}
 41537  		return SQLITE_OK
 41538  	}
 41539  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 41540  }
 41541  
 41542  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 41543  	return g.FiSectorSize
 41544  }
 41545  
 41546  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 41547  	return g.FiDeviceCharacteristics
 41548  }
 41549  
 41550  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 41551  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41552  	return (*struct {
 41553  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 41554  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 41555  }
 41556  
 41557  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 41558  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41559  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmBarrier})).f(tls, pReal)
 41560  }
 41561  
 41562  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 41563  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41564  	return (*struct {
 41565  		f func(*libc.TLS, uintptr, int32) int32
 41566  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 41567  }
 41568  
 41569  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 41570  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 41571  	return (*struct {
 41572  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 41573  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 41574  }
 41575  
 41576  var CrashFileVtab = sqlite3_io_methods{
 41577  	FiVersion:               2,
 41578  	FxClose:                 0,
 41579  	FxRead:                  0,
 41580  	FxWrite:                 0,
 41581  	FxTruncate:              0,
 41582  	FxSync:                  0,
 41583  	FxFileSize:              0,
 41584  	FxLock:                  0,
 41585  	FxUnlock:                0,
 41586  	FxCheckReservedLock:     0,
 41587  	FxFileControl:           0,
 41588  	FxSectorSize:            0,
 41589  	FxDeviceCharacteristics: 0,
 41590  	FxShmMap:                0,
 41591  	FxShmLock:               0,
 41592  	FxShmBarrier:            0,
 41593  	FxShmUnmap:              0,
 41594  }
 41595  
 41596  type crashAppData = struct{ FpOrig uintptr }
 41597  
 41598  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 41599  	bp := tls.Alloc(8)
 41600  	defer tls.Free(8)
 41601  
 41602  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41603  	var rc int32
 41604  	var pWrapper uintptr = pFile
 41605  	var pReal uintptr = pWrapper + 1*32
 41606  
 41607  	libc.Xmemset(tls, pWrapper, 0, uint32(unsafe.Sizeof(CrashFile{})))
 41608  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 41609  
 41610  	if rc == SQLITE_OK {
 41611  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 41612  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 41613  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 41614  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 41615  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 41616  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 41617  	}
 41618  	if rc == SQLITE_OK {
 41619  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 41620  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 41621  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 41622  			var iOff i64
 41623  
 41624  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint32((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 41625  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 41626  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 41627  				if nRead > 512 {
 41628  					nRead = 512
 41629  				}
 41630  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 41631  			}
 41632  		} else {
 41633  			rc = SQLITE_NOMEM
 41634  		}
 41635  	}
 41636  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 41637  		sqlite3.Xsqlite3OsClose(tls, pFile)
 41638  	}
 41639  	return rc
 41640  }
 41641  
 41642  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 41643  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41644  	return (*struct {
 41645  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 41646  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 41647  }
 41648  
 41649  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 41650  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41651  	return (*struct {
 41652  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41653  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 41654  }
 41655  
 41656  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 41657  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41658  	return (*struct {
 41659  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41660  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 41661  }
 41662  
 41663  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 41664  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41665  	return (*struct {
 41666  		f func(*libc.TLS, uintptr, uintptr) uintptr
 41667  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 41668  }
 41669  
 41670  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 41671  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41672  	(*struct {
 41673  		f func(*libc.TLS, uintptr, int32, uintptr)
 41674  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 41675  }
 41676  
 41677  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 41678  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41679  	return (*struct {
 41680  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 41681  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 41682  }
 41683  
 41684  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 41685  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41686  	(*struct {
 41687  		f func(*libc.TLS, uintptr, uintptr)
 41688  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 41689  }
 41690  
 41691  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 41692  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41693  	return (*struct {
 41694  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41695  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 41696  }
 41697  
 41698  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 41699  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41700  	return (*struct {
 41701  		f func(*libc.TLS, uintptr, int32) int32
 41702  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 41703  }
 41704  
 41705  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 41706  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41707  	return (*struct {
 41708  		f func(*libc.TLS, uintptr, uintptr) int32
 41709  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 41710  }
 41711  
 41712  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 41713  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41714  	return (*struct {
 41715  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41716  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 41717  }
 41718  
 41719  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 41720  	bp := tls.Alloc(196)
 41721  	defer tls.Free(196)
 41722  
 41723  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 80)) = [14]DeviceFlag{
 41724  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 41725  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 41726  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 41727  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 41728  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 41729  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 41730  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 41731  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 41732  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 41733  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 41734  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 41735  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 41736  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 41737  		{},
 41738  	}
 41739  	var i int32
 41740  	var iDc int32 = 0
 41741  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 41742  	var setSectorsize int32 = 0
 41743  	var setDeviceChar int32 = 0
 41744  
 41745  	for i = 0; i < objc; i = i + 2 {
 41746  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp+64)
 41747  
 41748  		if (*(*int32)(unsafe.Pointer(bp + 64)) > 11 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26542, zOpt, uint32(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) &&
 41749  			(*(*int32)(unsafe.Pointer(bp + 64)) > 16 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26554, zOpt, uint32(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) {
 41750  			tcl.XTcl_AppendResult(tls, interp,
 41751  				libc.VaList(bp, ts+26571, zOpt,
 41752  					ts+26585, 0))
 41753  			return TCL_ERROR
 41754  		}
 41755  		if i == objc-1 {
 41756  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 41757  			return TCL_ERROR
 41758  		}
 41759  
 41760  		if int32(*(*int8)(unsafe.Pointer(zOpt + 1))) == 's' {
 41761  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+68) != 0 {
 41762  				return TCL_ERROR
 41763  			}
 41764  			setSectorsize = 1
 41765  		} else {
 41766  			var j int32
 41767  
 41768  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+72, bp+76) != 0 {
 41769  				return TCL_ERROR
 41770  			}
 41771  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 41772  				var rc int32
 41773  
 41774  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 76)) + uintptr(j)*4)))
 41775  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 41776  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 41777  
 41778  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 41779  					interp, pFlag, bp+80, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+192)
 41780  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 41781  					var _objPtr uintptr = pFlag
 41782  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 41783  						tcl.XTclFreeObj(tls, _objPtr)
 41784  					}
 41785  				}
 41786  				if rc != 0 {
 41787  					return TCL_ERROR
 41788  				}
 41789  
 41790  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+80+uintptr(*(*int32)(unsafe.Pointer(bp + 192)))*8)).FiValue
 41791  			}
 41792  			setDeviceChar = 1
 41793  		}
 41794  	}
 41795  
 41796  	if setDeviceChar != 0 {
 41797  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 41798  	}
 41799  	if setSectorsize != 0 {
 41800  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 41801  	}
 41802  
 41803  	return TCL_OK
 41804  }
 41805  
 41806  type DeviceFlag = struct {
 41807  	FzName  uintptr
 41808  	FiValue int32
 41809  }
 41810  
 41811  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41812  	if objc != 1 {
 41813  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41814  		return TCL_ERROR
 41815  	}
 41816  	writeListSync(tls, uintptr(0), 1)
 41817  
 41818  	return TCL_OK
 41819  }
 41820  
 41821  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41822  	bp := tls.Alloc(8)
 41823  	defer tls.Free(8)
 41824  
 41825  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 41826  
 41827  	if objc != 2 && objc != 3 {
 41828  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 41829  		return TCL_ERROR
 41830  	}
 41831  
 41832  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 41833  		return TCL_ERROR
 41834  	}
 41835  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 41836  		return TCL_ERROR
 41837  	}
 41838  
 41839  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 41840  		return TCL_OK
 41841  	}
 41842  
 41843  	if crashVfs.FpAppData == uintptr(0) {
 41844  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 41845  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 41846  		crashVfs.FpAppData = pOriginalVfs
 41847  		crashVfs.FszOsFile = int32(uint32(unsafe.Sizeof(CrashFile{})) + uint32((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 41848  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 41849  	} else {
 41850  		crashVfs.FpAppData = uintptr(0)
 41851  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 41852  	}
 41853  
 41854  	return TCL_OK
 41855  }
 41856  
 41857  var crashVfs = sqlite3_vfs{
 41858  	FiVersion:      2,
 41859  	FzName:         ts + 26694,
 41860  	FxOpen:         0,
 41861  	FxDelete:       0,
 41862  	FxAccess:       0,
 41863  	FxFullPathname: 0,
 41864  	FxDlOpen:       0,
 41865  	FxDlError:      0,
 41866  	FxDlSym:        0,
 41867  	FxDlClose:      0,
 41868  	FxRandomness:   0,
 41869  	FxSleep:        0,
 41870  	FxCurrentTime:  0,
 41871  	FxGetLastError: 0,
 41872  }
 41873  
 41874  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41875  	bp := tls.Alloc(48)
 41876  	defer tls.Free(48)
 41877  
 41878  	var zCrashFile uintptr
 41879  
 41880  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 41881  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 41882  
 41883  	if !(objc < 3) {
 41884  		goto __1
 41885  	}
 41886  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 41887  	goto error
 41888  __1:
 41889  	;
 41890  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*4)), bp+32)
 41891  	if !(uint32(*(*int32)(unsafe.Pointer(bp + 32))) >= uint32(unsafe.Sizeof([500]int8{}))) {
 41892  		goto __2
 41893  	}
 41894  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 41895  	goto error
 41896  __2:
 41897  	;
 41898  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*4)), bp+36) != 0) {
 41899  		goto __3
 41900  	}
 41901  	goto error
 41902  __3:
 41903  	;
 41904  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*4, bp+40, bp+44) != 0) {
 41905  		goto __4
 41906  	}
 41907  	return TCL_ERROR
 41908  __4:
 41909  	;
 41910  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 41911  		goto __5
 41912  	}
 41913  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 41914  __5:
 41915  	;
 41916  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 41917  		goto __6
 41918  	}
 41919  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 41920  __6:
 41921  	;
 41922  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 41923  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+20, zCrashFile, uint32(*(*int32)(unsafe.Pointer(bp + 32))+1))
 41924  	sqlite3CrashTestEnable = 1
 41925  	return TCL_OK
 41926  
 41927  error:
 41928  	return TCL_ERROR
 41929  }
 41930  
 41931  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41932  	bp := tls.Alloc(8)
 41933  	defer tls.Free(8)
 41934  
 41935  	*(*int32)(unsafe.Pointer(bp)) = -1
 41936  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 41937  
 41938  	if processDevSymArgs(tls, interp, objc-1, objv+1*4, bp, bp+4) != 0 {
 41939  		return TCL_ERROR
 41940  	}
 41941  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 41942  
 41943  	return TCL_OK
 41944  }
 41945  
 41946  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41947  	bp := tls.Alloc(4)
 41948  	defer tls.Free(4)
 41949  
 41950  	*(*int32)(unsafe.Pointer(bp)) = 0
 41951  
 41952  	if objc != 2 {
 41953  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 41954  		return TCL_ERROR
 41955  	}
 41956  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 41957  		return TCL_ERROR
 41958  	}
 41959  
 41960  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 41961  	return TCL_OK
 41962  }
 41963  
 41964  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41965  	if objc != 1 {
 41966  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41967  		return TCL_ERROR
 41968  	}
 41969  
 41970  	devsym_unregister(tls)
 41971  	return TCL_OK
 41972  }
 41973  
 41974  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41975  	bp := tls.Alloc(48)
 41976  	defer tls.Free(48)
 41977  
 41978  	var zParent uintptr = uintptr(0)
 41979  
 41980  	if objc != 2 && objc != 3 {
 41981  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 41982  		return TCL_ERROR
 41983  	}
 41984  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 41985  	if objc == 3 {
 41986  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 41987  			tcl.XTcl_AppendResult(tls, interp,
 41988  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 41989  			return TCL_ERROR
 41990  		}
 41991  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 41992  	}
 41993  
 41994  	if !(int32(*(*int8)(unsafe.Pointer(zParent))) != 0) {
 41995  		zParent = uintptr(0)
 41996  	}
 41997  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 41998  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 41999  		return TCL_ERROR
 42000  	}
 42001  
 42002  	return TCL_OK
 42003  }
 42004  
 42005  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 42006  	if objc != 1 {
 42007  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 42008  		return TCL_ERROR
 42009  	}
 42010  
 42011  	jt_unregister(tls)
 42012  	return TCL_OK
 42013  }
 42014  
 42015  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 42016  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 42017  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42018  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 42019  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 42020  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42021  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 42022  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 42023  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42024  	}{crashNowCmd})), uintptr(0), uintptr(0))
 42025  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 42026  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42027  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 42028  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 42029  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42030  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 42031  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 42032  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42033  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 42034  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 42035  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42036  	}{jtObjCmd})), uintptr(0), uintptr(0))
 42037  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 42038  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 42039  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 42040  	return TCL_OK
 42041  }
 42042  
 42043  type Thread1 = struct {
 42044  	FzFilename  uintptr
 42045  	FxOp        uintptr
 42046  	FzArg       uintptr
 42047  	Fopnum      int32
 42048  	Fbusy       int32
 42049  	Fcompleted  int32
 42050  	Fdb         uintptr
 42051  	FpStmt      uintptr
 42052  	FzErr       uintptr
 42053  	FzStaticErr uintptr
 42054  	Frc         int32
 42055  	Fargc       int32
 42056  	Fargv       [100]uintptr
 42057  	Fcolv       [100]uintptr
 42058  	FnServer    int32
 42059  }
 42060  
 42061  var threadset1 [26]Thread1
 42062  
 42063  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 42064  	var p uintptr = pArg
 42065  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42066  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42067  	}
 42068  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+24)
 42069  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 42070  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 42071  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42072  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42073  	}
 42074  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42075  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 42076  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42077  		libc.Xsched_yield(tls)
 42078  	}
 42079  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 42080  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42081  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42082  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42083  		}
 42084  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 42085  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42086  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42087  			libc.Xsched_yield(tls)
 42088  		}
 42089  	}
 42090  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42091  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42092  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42093  	}
 42094  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 42095  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 42096  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 42097  	}
 42098  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 42099  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 42100  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 42101  	}
 42102  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 42103  	sqlite3.Xsqlite3_thread_cleanup(tls)
 42104  	return uintptr(0)
 42105  }
 42106  
 42107  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 42108  	bp := tls.Alloc(16)
 42109  	defer tls.Free(16)
 42110  
 42111  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(int32(*(*uint16)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(libc.X__ctype_b_loc(tls))) + uintptr(int32(uint8(*(*int8)(unsafe.Pointer(zArg)))))*2)))&int32(_ISupper) != 0) {
 42112  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 42113  		return -1
 42114  	}
 42115  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 42116  }
 42117  
 42118  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42119  	bp := tls.Alloc(92)
 42120  	defer tls.Free(92)
 42121  
 42122  	var i int32
 42123  
 42124  	var rc int32
 42125  
 42126  	if argc != 3 {
 42127  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42128  			ts+25780, 0))
 42129  		return TCL_ERROR
 42130  	}
 42131  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42132  	if i < 0 {
 42133  		return TCL_ERROR
 42134  	}
 42135  	if threadset1[i].Fbusy != 0 {
 42136  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+25801, 0))
 42137  		return TCL_ERROR
 42138  	}
 42139  	threadset1[i].Fbusy = 1
 42140  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42141  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 42142  	threadset1[i].Fopnum = 1
 42143  	threadset1[i].Fcompleted = 0
 42144  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 42145  		f func(*libc.TLS, uintptr) uintptr
 42146  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42147  	if rc != 0 {
 42148  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 42149  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 42150  		threadset1[i].Fbusy = 0
 42151  		return TCL_ERROR
 42152  	}
 42153  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 42154  	if threadset1[i].FnServer == 0 {
 42155  		threadset1[i].FnServer = 1
 42156  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852+848)
 42157  	}
 42158  	return TCL_OK
 42159  }
 42160  
 42161  func client_wait(tls *libc.TLS, p uintptr) {
 42162  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 42163  		libc.Xsched_yield(tls)
 42164  	}
 42165  }
 42166  
 42167  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42168  	bp := tls.Alloc(48)
 42169  	defer tls.Free(48)
 42170  
 42171  	var i int32
 42172  
 42173  	if argc != 2 {
 42174  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42175  			ts+25849, 0))
 42176  		return TCL_ERROR
 42177  	}
 42178  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42179  	if i < 0 {
 42180  		return TCL_ERROR
 42181  	}
 42182  	if !(threadset1[i].Fbusy != 0) {
 42183  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42184  		return TCL_ERROR
 42185  	}
 42186  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42187  	return TCL_OK
 42188  }
 42189  
 42190  func stop_thread(tls *libc.TLS, p uintptr) {
 42191  	client_wait(tls, p)
 42192  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 42193  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 42194  	client_wait(tls, p)
 42195  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 42196  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 42197  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 42198  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 42199  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 42200  }
 42201  
 42202  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42203  	bp := tls.Alloc(48)
 42204  	defer tls.Free(48)
 42205  
 42206  	var i int32
 42207  
 42208  	if argc != 2 {
 42209  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42210  			ts+25849, 0))
 42211  		return TCL_ERROR
 42212  	}
 42213  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*4))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*4)) + 1))) == 0 {
 42214  		for i = 0; i < N_THREAD; i++ {
 42215  			if threadset1[i].Fbusy != 0 {
 42216  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42217  			}
 42218  		}
 42219  	} else {
 42220  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42221  		if i < 0 {
 42222  			return TCL_ERROR
 42223  		}
 42224  		if !(threadset1[i].Fbusy != 0) {
 42225  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42226  			return TCL_ERROR
 42227  		}
 42228  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42229  	}
 42230  
 42231  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 42232  	}
 42233  	if i >= N_THREAD {
 42234  		sqlite3_server_stop(tls)
 42235  		for 1 != 0 {
 42236  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 42237  			}
 42238  			if i == N_THREAD {
 42239  				break
 42240  			}
 42241  			libc.Xsched_yield(tls)
 42242  		}
 42243  	}
 42244  	return TCL_OK
 42245  }
 42246  
 42247  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42248  	bp := tls.Alloc(172)
 42249  	defer tls.Free(172)
 42250  
 42251  	var i int32
 42252  
 42253  	if argc != 2 {
 42254  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42255  			ts+25849, 0))
 42256  		return TCL_ERROR
 42257  	}
 42258  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42259  	if i < 0 {
 42260  		return TCL_ERROR
 42261  	}
 42262  	if !(threadset1[i].Fbusy != 0) {
 42263  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42264  		return TCL_ERROR
 42265  	}
 42266  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42267  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 42268  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 42269  	return TCL_OK
 42270  }
 42271  
 42272  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42273  	bp := tls.Alloc(84)
 42274  	defer tls.Free(84)
 42275  
 42276  	var i int32
 42277  
 42278  	if argc != 3 {
 42279  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42280  			ts+25868, 0))
 42281  		return TCL_ERROR
 42282  	}
 42283  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42284  	if i < 0 {
 42285  		return TCL_ERROR
 42286  	}
 42287  	if !(threadset1[i].Fbusy != 0) {
 42288  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42289  		return TCL_ERROR
 42290  	}
 42291  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+80) != 0 {
 42292  		return TCL_ERROR
 42293  	}
 42294  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42295  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42296  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42297  		return TCL_ERROR
 42298  	}
 42299  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset1)) + uintptr(i)*852 + 48 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)), 0))
 42300  	return TCL_OK
 42301  }
 42302  
 42303  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42304  	bp := tls.Alloc(84)
 42305  	defer tls.Free(84)
 42306  
 42307  	var i int32
 42308  
 42309  	if argc != 3 {
 42310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42311  			ts+25868, 0))
 42312  		return TCL_ERROR
 42313  	}
 42314  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42315  	if i < 0 {
 42316  		return TCL_ERROR
 42317  	}
 42318  	if !(threadset1[i].Fbusy != 0) {
 42319  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42320  		return TCL_ERROR
 42321  	}
 42322  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)), bp+80) != 0 {
 42323  		return TCL_ERROR
 42324  	}
 42325  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42326  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 42327  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 42328  		return TCL_ERROR
 42329  	}
 42330  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset1)) + uintptr(i)*852 + 448 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*4)), 0))
 42331  	return TCL_OK
 42332  }
 42333  
 42334  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42335  	bp := tls.Alloc(64)
 42336  	defer tls.Free(64)
 42337  
 42338  	var i int32
 42339  	var zName uintptr
 42340  
 42341  	if argc != 2 {
 42342  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42343  			ts+25849, 0))
 42344  		return TCL_ERROR
 42345  	}
 42346  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42347  	if i < 0 {
 42348  		return TCL_ERROR
 42349  	}
 42350  	if !(threadset1[i].Fbusy != 0) {
 42351  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42352  		return TCL_ERROR
 42353  	}
 42354  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42355  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 42356  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 42357  	return TCL_OK
 42358  }
 42359  
 42360  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42361  	bp := tls.Alloc(64)
 42362  	defer tls.Free(64)
 42363  
 42364  	var i int32
 42365  
 42366  	if argc != 2 {
 42367  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42368  			ts+25849, 0))
 42369  		return TCL_ERROR
 42370  	}
 42371  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42372  	if i < 0 {
 42373  		return TCL_ERROR
 42374  	}
 42375  	if !(threadset1[i].Fbusy != 0) {
 42376  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42377  		return TCL_ERROR
 42378  	}
 42379  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42380  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 42381  	return TCL_OK
 42382  }
 42383  
 42384  func do_compile1(tls *libc.TLS, p uintptr) {
 42385  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 42386  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25901)
 42387  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42388  		return
 42389  	}
 42390  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 42391  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42392  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42393  	}
 42394  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+28, uintptr(0))
 42395  }
 42396  
 42397  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42398  	bp := tls.Alloc(56)
 42399  	defer tls.Free(56)
 42400  
 42401  	var i int32
 42402  	if argc != 3 {
 42403  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42404  			ts+25921, 0))
 42405  		return TCL_ERROR
 42406  	}
 42407  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42408  	if i < 0 {
 42409  		return TCL_ERROR
 42410  	}
 42411  	if !(threadset1[i].Fbusy != 0) {
 42412  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42413  		return TCL_ERROR
 42414  	}
 42415  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42416  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 42417  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42418  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 42419  	threadset1[i].Fopnum++
 42420  	return TCL_OK
 42421  }
 42422  
 42423  func do_step1(tls *libc.TLS, p uintptr) {
 42424  	var i int32
 42425  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42426  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25929)
 42427  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42428  		return
 42429  	}
 42430  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42431  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 42432  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42433  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 42434  			*(*uintptr)(unsafe.Pointer(p + 48 + uintptr(i)*4)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42435  		}
 42436  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 42437  			*(*uintptr)(unsafe.Pointer(p + 448 + uintptr(i)*4)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 42438  		}
 42439  	}
 42440  }
 42441  
 42442  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42443  	bp := tls.Alloc(48)
 42444  	defer tls.Free(48)
 42445  
 42446  	var i int32
 42447  	if argc != 2 {
 42448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42449  			ts+25958, 0))
 42450  		return TCL_ERROR
 42451  	}
 42452  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42453  	if i < 0 {
 42454  		return TCL_ERROR
 42455  	}
 42456  	if !(threadset1[i].Fbusy != 0) {
 42457  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42458  		return TCL_ERROR
 42459  	}
 42460  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42461  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 42462  	threadset1[i].Fopnum++
 42463  	return TCL_OK
 42464  }
 42465  
 42466  func do_finalize1(tls *libc.TLS, p uintptr) {
 42467  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42468  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25929)
 42469  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42470  		return
 42471  	}
 42472  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42473  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42474  }
 42475  
 42476  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42477  	bp := tls.Alloc(48)
 42478  	defer tls.Free(48)
 42479  
 42480  	var i int32
 42481  	if argc != 2 {
 42482  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42483  			ts+25958, 0))
 42484  		return TCL_ERROR
 42485  	}
 42486  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42487  	if i < 0 {
 42488  		return TCL_ERROR
 42489  	}
 42490  	if !(threadset1[i].Fbusy != 0) {
 42491  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42492  		return TCL_ERROR
 42493  	}
 42494  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42495  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 42496  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42497  	threadset1[i].FzArg = uintptr(0)
 42498  	threadset1[i].Fopnum++
 42499  	return TCL_OK
 42500  }
 42501  
 42502  func do_reset(tls *libc.TLS, p uintptr) {
 42503  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 42504  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+36, ts+25929)
 42505  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 42506  		return
 42507  	}
 42508  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 42509  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 42510  }
 42511  
 42512  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42513  	bp := tls.Alloc(48)
 42514  	defer tls.Free(48)
 42515  
 42516  	var i int32
 42517  	if argc != 2 {
 42518  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42519  			ts+25958, 0))
 42520  		return TCL_ERROR
 42521  	}
 42522  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42523  	if i < 0 {
 42524  		return TCL_ERROR
 42525  	}
 42526  	if !(threadset1[i].Fbusy != 0) {
 42527  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42528  		return TCL_ERROR
 42529  	}
 42530  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42531  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 42532  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 42533  	threadset1[i].FzArg = uintptr(0)
 42534  	threadset1[i].Fopnum++
 42535  	return TCL_OK
 42536  }
 42537  
 42538  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 42539  	bp := tls.Alloc(64)
 42540  	defer tls.Free(64)
 42541  
 42542  	var i int32
 42543  	var j int32
 42544  	var temp uintptr
 42545  	if argc != 3 {
 42546  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 42547  			ts+25963, 0))
 42548  		return TCL_ERROR
 42549  	}
 42550  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 42551  	if i < 0 {
 42552  		return TCL_ERROR
 42553  	}
 42554  	if !(threadset1[i].Fbusy != 0) {
 42555  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 42556  		return TCL_ERROR
 42557  	}
 42558  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*852)
 42559  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 42560  	if j < 0 {
 42561  		return TCL_ERROR
 42562  	}
 42563  	if !(threadset1[j].Fbusy != 0) {
 42564  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 42565  		return TCL_ERROR
 42566  	}
 42567  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*852)
 42568  	temp = threadset1[i].Fdb
 42569  	threadset1[i].Fdb = threadset1[j].Fdb
 42570  	threadset1[j].Fdb = temp
 42571  	return TCL_OK
 42572  }
 42573  
 42574  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 42575  	var i int32
 42576  
 42577  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd6))/uint32(unsafe.Sizeof(struct {
 42578  		FzName uintptr
 42579  		FxProc uintptr
 42580  	}{})); i++ {
 42581  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 42582  	}
 42583  	return TCL_OK
 42584  }
 42585  
 42586  var aCmd6 = [13]struct {
 42587  	FzName uintptr
 42588  	FxProc uintptr
 42589  }{
 42590  	{FzName: ts + 26987, FxProc: 0},
 42591  	{FzName: ts + 27001, FxProc: 0},
 42592  	{FzName: ts + 27013, FxProc: 0},
 42593  	{FzName: ts + 27025, FxProc: 0},
 42594  	{FzName: ts + 27037, FxProc: 0},
 42595  	{FzName: ts + 27049, FxProc: 0},
 42596  	{FzName: ts + 27064, FxProc: 0},
 42597  	{FzName: ts + 27078, FxProc: 0},
 42598  	{FzName: ts + 27091, FxProc: 0},
 42599  	{FzName: ts + 27106, FxProc: 0},
 42600  	{FzName: ts + 27118, FxProc: 0},
 42601  	{FzName: ts + 27131, FxProc: 0},
 42602  	{FzName: ts + 27147, FxProc: 0},
 42603  }
 42604  
 42605  type echo_vtab1 = struct {
 42606  	Fbase          sqlite3_vtab
 42607  	Finterp        uintptr
 42608  	Fdb            uintptr
 42609  	FisPattern     int32
 42610  	FinTransaction int32
 42611  	FzThis         uintptr
 42612  	FzTableName    uintptr
 42613  	FzLogName      uintptr
 42614  	FnCol          int32
 42615  	FaIndex        uintptr
 42616  	FaCol          uintptr
 42617  }
 42618  
 42619  type echo_vtab = echo_vtab1
 42620  type echo_cursor1 = struct {
 42621  	Fbase  sqlite3_vtab_cursor
 42622  	FpStmt uintptr
 42623  }
 42624  
 42625  type echo_cursor = echo_cursor1
 42626  
 42627  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 42628  	bp := tls.Alloc(152)
 42629  	defer tls.Free(152)
 42630  
 42631  	var zErr uintptr
 42632  
 42633  	*(*int8)(unsafe.Pointer(bp + 24 + 127)) = int8(0)
 42634  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 42635  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 42636  	if zErr != 0 {
 42637  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 42638  	}
 42639  	return libc.Bool32(zErr != uintptr(0))
 42640  }
 42641  
 42642  func dequoteString(tls *libc.TLS, z uintptr) {
 42643  	var quote int32
 42644  	var i int32
 42645  	var j int32
 42646  	if z == uintptr(0) {
 42647  		return
 42648  	}
 42649  	quote = int32(*(*int8)(unsafe.Pointer(z)))
 42650  	switch quote {
 42651  	case '\'':
 42652  		break
 42653  	case '"':
 42654  		break
 42655  	case '`':
 42656  		break
 42657  	case '[':
 42658  		quote = ']'
 42659  		break
 42660  	default:
 42661  		return
 42662  	}
 42663  	i = 1
 42664  	j = 0
 42665  	for ; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 42666  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 42667  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 42668  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(quote)
 42669  				i++
 42670  			} else {
 42671  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(0)
 42672  				break
 42673  			}
 42674  		} else {
 42675  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 42676  		}
 42677  	}
 42678  }
 42679  
 42680  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 42681  	bp := tls.Alloc(20)
 42682  	defer tls.Free(20)
 42683  
 42684  	var aCol uintptr
 42685  	var zSql uintptr
 42686  
 42687  	var rc int32
 42688  	var nCol int32
 42689  	var zName uintptr
 42690  	var ii int32
 42691  	var nBytes int32
 42692  	var zSpace uintptr
 42693  	aCol = uintptr(0)
 42694  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42695  	rc = SQLITE_OK
 42696  	nCol = 0
 42697  
 42698  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 42699  	if !!(zSql != 0) {
 42700  		goto __1
 42701  	}
 42702  	rc = SQLITE_NOMEM
 42703  	goto out
 42704  __1:
 42705  	;
 42706  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42707  	sqlite3.Xsqlite3_free(tls, zSql)
 42708  
 42709  	if !(rc == SQLITE_OK) {
 42710  		goto __2
 42711  	}
 42712  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42713  
 42714  	nBytes = int32(uint32(unsafe.Sizeof(uintptr(0))) * uint32(nCol))
 42715  	ii = 0
 42716  __3:
 42717  	if !(ii < nCol) {
 42718  		goto __5
 42719  	}
 42720  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 42721  	if !!(zName != 0) {
 42722  		goto __6
 42723  	}
 42724  	rc = SQLITE_NOMEM
 42725  	goto out
 42726  __6:
 42727  	;
 42728  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 42729  	goto __4
 42730  __4:
 42731  	ii++
 42732  	goto __3
 42733  	goto __5
 42734  __5:
 42735  	;
 42736  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 42737  	if !!(aCol != 0) {
 42738  		goto __7
 42739  	}
 42740  	rc = SQLITE_NOMEM
 42741  	goto out
 42742  __7:
 42743  	;
 42744  	zSpace = aCol + uintptr(nCol)*4
 42745  	ii = 0
 42746  __8:
 42747  	if !(ii < nCol) {
 42748  		goto __10
 42749  	}
 42750  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*4)) = zSpace
 42751  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 42752  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 42753  	goto __9
 42754  __9:
 42755  	ii++
 42756  	goto __8
 42757  	goto __10
 42758  __10:
 42759  	;
 42760  __2:
 42761  	;
 42762  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 42763  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 42764  
 42765  out:
 42766  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42767  	return rc
 42768  }
 42769  
 42770  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 42771  	bp := tls.Alloc(24)
 42772  	defer tls.Free(24)
 42773  
 42774  	var aIndex uintptr
 42775  	var rc int32
 42776  	var zSql uintptr
 42777  	var cid int32
 42778  	var zIdx uintptr
 42779  
 42780  	var rc2 int32
 42781  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42782  	aIndex = uintptr(0)
 42783  
 42784  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(uint32(unsafe.Sizeof(int32(0)))*uint32(nCol)))
 42785  	if !!(aIndex != 0) {
 42786  		goto __1
 42787  	}
 42788  	rc = SQLITE_NOMEM
 42789  	goto get_index_array_out
 42790  __1:
 42791  	;
 42792  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 42793  	if !!(zSql != 0) {
 42794  		goto __2
 42795  	}
 42796  	rc = SQLITE_NOMEM
 42797  	goto get_index_array_out
 42798  __2:
 42799  	;
 42800  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42801  	sqlite3.Xsqlite3_free(tls, zSql)
 42802  
 42803  __3:
 42804  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 42805  		goto __4
 42806  	}
 42807  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 42808  	*(*uintptr)(unsafe.Pointer(bp + 20)) = uintptr(0)
 42809  	if !(zIdx == uintptr(0)) {
 42810  		goto __5
 42811  	}
 42812  	goto __3
 42813  __5:
 42814  	;
 42815  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 42816  	if !!(zSql != 0) {
 42817  		goto __6
 42818  	}
 42819  	rc = SQLITE_NOMEM
 42820  	goto get_index_array_out
 42821  __6:
 42822  	;
 42823  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+20, uintptr(0))
 42824  	sqlite3.Xsqlite3_free(tls, zSql)
 42825  	if !(*(*uintptr)(unsafe.Pointer(bp + 20)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 20))) == SQLITE_ROW) {
 42826  		goto __7
 42827  	}
 42828  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 20)), 1)
 42829  
 42830  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 42831  __7:
 42832  	;
 42833  	if !(*(*uintptr)(unsafe.Pointer(bp + 20)) != 0) {
 42834  		goto __8
 42835  	}
 42836  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 42837  __8:
 42838  	;
 42839  	if !(rc != SQLITE_OK) {
 42840  		goto __9
 42841  	}
 42842  	goto get_index_array_out
 42843  __9:
 42844  	;
 42845  	goto __3
 42846  __4:
 42847  	;
 42848  get_index_array_out:
 42849  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 42850  		goto __10
 42851  	}
 42852  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42853  	if !(rc == SQLITE_OK) {
 42854  		goto __11
 42855  	}
 42856  	rc = rc2
 42857  __11:
 42858  	;
 42859  __10:
 42860  	;
 42861  	if !(rc != SQLITE_OK) {
 42862  		goto __12
 42863  	}
 42864  	sqlite3.Xsqlite3_free(tls, aIndex)
 42865  	aIndex = uintptr(0)
 42866  __12:
 42867  	;
 42868  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 42869  	return rc
 42870  }
 42871  
 42872  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 42873  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 42874  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 42875  		if zArg != 0 {
 42876  			return zArg
 42877  		}
 42878  		return ts + 584
 42879  	}(), flags)
 42880  }
 42881  
 42882  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 42883  	bp := tls.Alloc(4)
 42884  	defer tls.Free(4)
 42885  
 42886  	var rc int32 = SQLITE_OK
 42887  
 42888  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 42889  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 42890  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 42891  			ts+27276,
 42892  			-1, bp, uintptr(0))
 42893  		if rc == SQLITE_OK {
 42894  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 42895  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 42896  				var rc2 int32
 42897  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 42898  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 42899  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42900  				if rc == SQLITE_OK {
 42901  					rc = rc2
 42902  				}
 42903  			} else {
 42904  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42905  				if rc == SQLITE_OK {
 42906  					rc = SQLITE_ERROR
 42907  				}
 42908  			}
 42909  			if rc == SQLITE_OK {
 42910  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+48, pVtab+40)
 42911  			}
 42912  			if rc == SQLITE_OK {
 42913  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+44)
 42914  			}
 42915  		}
 42916  	}
 42917  
 42918  	return rc
 42919  }
 42920  
 42921  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 42922  	var p uintptr = pVtab
 42923  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 42924  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 42925  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 42926  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 42927  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 42928  	sqlite3.Xsqlite3_free(tls, p)
 42929  	return 0
 42930  }
 42931  
 42932  type EchoModule1 = struct {
 42933  	Finterp uintptr
 42934  	Fdb     uintptr
 42935  }
 42936  
 42937  type EchoModule = EchoModule1
 42938  
 42939  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42940  	bp := tls.Alloc(32)
 42941  	defer tls.Free(32)
 42942  
 42943  	var rc int32
 42944  	var i int32
 42945  	var pVtab uintptr
 42946  
 42947  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 42948  	if !(pVtab != 0) {
 42949  		return SQLITE_NOMEM
 42950  	}
 42951  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 42952  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 42953  
 42954  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*4))))
 42955  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 42956  		echoDestructor(tls, pVtab)
 42957  		return SQLITE_NOMEM
 42958  	}
 42959  
 42960  	if argc > 3 {
 42961  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*4))))
 42962  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42963  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*int8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 42964  			var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*4)), (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName+1))
 42965  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42966  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 42967  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 42968  		}
 42969  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 42970  			echoDestructor(tls, pVtab)
 42971  			return SQLITE_NOMEM
 42972  		}
 42973  	}
 42974  
 42975  	for i = 0; i < argc; i++ {
 42976  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 42977  	}
 42978  
 42979  	rc = echoDeclareVtab(tls, pVtab, db)
 42980  	if rc != SQLITE_OK {
 42981  		echoDestructor(tls, pVtab)
 42982  		return rc
 42983  	}
 42984  
 42985  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 42986  	return SQLITE_OK
 42987  }
 42988  
 42989  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42990  	bp := tls.Alloc(24)
 42991  	defer tls.Free(24)
 42992  
 42993  	var rc int32 = SQLITE_OK
 42994  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 42995  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42996  
 42997  	if rc == SQLITE_OK && argc == 5 {
 42998  		var zSql uintptr
 42999  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 43000  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*4))))
 43001  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 43002  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 43003  		sqlite3.Xsqlite3_free(tls, zSql)
 43004  		if rc != SQLITE_OK {
 43005  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 43006  		}
 43007  	}
 43008  
 43009  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 43010  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 43011  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 43012  	}
 43013  
 43014  	if rc == SQLITE_OK {
 43015  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 43016  	}
 43017  
 43018  	return rc
 43019  }
 43020  
 43021  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43022  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 43023  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 43024  }
 43025  
 43026  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 43027  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 43028  	return echoDestructor(tls, pVtab)
 43029  }
 43030  
 43031  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 43032  	bp := tls.Alloc(8)
 43033  	defer tls.Free(8)
 43034  
 43035  	var rc int32 = SQLITE_OK
 43036  	var p uintptr = pVtab
 43037  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 43038  
 43039  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 43040  		var zSql uintptr
 43041  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 43042  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43043  		sqlite3.Xsqlite3_free(tls, zSql)
 43044  	}
 43045  
 43046  	if rc == SQLITE_OK {
 43047  		rc = echoDestructor(tls, pVtab)
 43048  	}
 43049  	return rc
 43050  }
 43051  
 43052  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 43053  	var pCur uintptr
 43054  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 43055  		return SQLITE_ERROR
 43056  	}
 43057  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 43058  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 43059  	return func() int32 {
 43060  		if pCur != 0 {
 43061  			return SQLITE_OK
 43062  		}
 43063  		return SQLITE_NOMEM
 43064  	}()
 43065  }
 43066  
 43067  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 43068  	var rc int32
 43069  	var pCur uintptr = cur
 43070  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 43071  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43072  	sqlite3.Xsqlite3_free(tls, pCur)
 43073  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 43074  	return rc
 43075  }
 43076  
 43077  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 43078  	return func() int32 {
 43079  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 43080  			return 0
 43081  		}
 43082  		return 1
 43083  	}()
 43084  }
 43085  
 43086  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 43087  	var rc int32 = SQLITE_OK
 43088  	var pCur uintptr = cur
 43089  
 43090  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 43091  		return SQLITE_ERROR
 43092  	}
 43093  
 43094  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 43095  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43096  		if rc == SQLITE_ROW {
 43097  			rc = SQLITE_OK
 43098  		} else {
 43099  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43100  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43101  		}
 43102  	}
 43103  
 43104  	return rc
 43105  }
 43106  
 43107  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 43108  	var iCol int32 = i + 1
 43109  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43110  
 43111  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 43112  		return SQLITE_ERROR
 43113  	}
 43114  
 43115  	if !(pStmt != 0) {
 43116  		sqlite3.Xsqlite3_result_null(tls, ctx)
 43117  	} else {
 43118  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 43119  	}
 43120  	return SQLITE_OK
 43121  }
 43122  
 43123  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 43124  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 43125  
 43126  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 43127  		return SQLITE_ERROR
 43128  	}
 43129  
 43130  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 43131  	return SQLITE_OK
 43132  }
 43133  
 43134  func hashString(tls *libc.TLS, zString uintptr) int32 {
 43135  	var val u32 = u32(0)
 43136  	var ii int32
 43137  	for ii = 0; *(*int8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 43138  		val = val<<3 + u32(int32(*(*int8)(unsafe.Pointer(zString + uintptr(ii)))))
 43139  	}
 43140  	return int32(val & u32(0x7fffffff))
 43141  }
 43142  
 43143  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43144  	var rc int32
 43145  	var i int32
 43146  
 43147  	var pCur uintptr = pVtabCursor
 43148  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43149  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43150  
 43151  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 43152  		return SQLITE_ERROR
 43153  	}
 43154  
 43155  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 43156  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 43157  	for i = 0; i < argc; i++ {
 43158  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))))
 43159  	}
 43160  
 43161  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43162  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 43163  
 43164  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+4, uintptr(0))
 43165  
 43166  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 43167  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 43168  	}
 43169  
 43170  	if rc == SQLITE_OK {
 43171  		rc = echoNext(tls, pVtabCursor)
 43172  	}
 43173  
 43174  	return rc
 43175  }
 43176  
 43177  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 43178  	bp := tls.Alloc(24)
 43179  	defer tls.Free(24)
 43180  
 43181  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 43182  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 43183  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43184  	}
 43185  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 43186  		sqlite3.Xsqlite3_free(tls, zIn)
 43187  		zIn = uintptr(0)
 43188  	} else {
 43189  		if zIn != 0 {
 43190  			var zTemp uintptr = zIn
 43191  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 43192  			sqlite3.Xsqlite3_free(tls, zTemp)
 43193  		} else {
 43194  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 43195  		}
 43196  		if !(zIn != 0) {
 43197  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 43198  		}
 43199  	}
 43200  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 43201  	if doFree != 0 {
 43202  		sqlite3.Xsqlite3_free(tls, zAppend)
 43203  	}
 43204  }
 43205  
 43206  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 43207  	bp := tls.Alloc(24)
 43208  	defer tls.Free(24)
 43209  
 43210  	var zRet uintptr = uintptr(0)
 43211  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 43212  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 43213  	} else {
 43214  		var i int32
 43215  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 43216  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 43217  				if i >= 63 {
 43218  					return 63
 43219  				}
 43220  				return i
 43221  			}()) != 0 {
 43222  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*4))))
 43223  			} else {
 43224  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 43225  			}
 43226  			if !(zRet != 0) {
 43227  				break
 43228  			}
 43229  		}
 43230  	}
 43231  	return zRet
 43232  }
 43233  
 43234  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 43235  	bp := tls.Alloc(92)
 43236  	defer tls.Free(92)
 43237  
 43238  	var ii int32
 43239  	*(*uintptr)(unsafe.Pointer(bp + 84)) = uintptr(0)
 43240  	var zCol uintptr = uintptr(0)
 43241  	var zNew uintptr
 43242  	var nArg int32 = 0
 43243  	var zSep uintptr = ts + 9392
 43244  	var pVtab uintptr = tab
 43245  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 43246  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43247  
 43248  	var nRow int32 = 0
 43249  	var useIdx int32 = 0
 43250  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
 43251  	var useCost int32 = 0
 43252  	var cost float64 = float64(0)
 43253  	var isIgnoreUsable int32 = 0
 43254  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43255  		isIgnoreUsable = 1
 43256  	}
 43257  
 43258  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 43259  		return SQLITE_ERROR
 43260  	}
 43261  
 43262  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 43263  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 43264  		useCost = 1
 43265  	} else {
 43266  		*(*uintptr)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43267  		if !(*(*uintptr)(unsafe.Pointer(bp + 84)) != 0) {
 43268  			return SQLITE_NOMEM
 43269  		}
 43270  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb, *(*uintptr)(unsafe.Pointer(bp + 84)), -1, bp+80, uintptr(0))
 43271  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 84)))
 43272  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
 43273  			return *(*int32)(unsafe.Pointer(bp + 88))
 43274  		}
 43275  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43276  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 43277  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 43278  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
 43279  			return *(*int32)(unsafe.Pointer(bp + 88))
 43280  		}
 43281  	}
 43282  
 43283  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 43284  	if !(zCol != 0) {
 43285  		return SQLITE_NOMEM
 43286  	}
 43287  	*(*uintptr)(unsafe.Pointer(bp + 84)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43288  	if !(*(*uintptr)(unsafe.Pointer(bp + 84)) != 0) {
 43289  		return SQLITE_NOMEM
 43290  	}
 43291  
 43292  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43293  		var pConstraint uintptr
 43294  		var pUsage uintptr
 43295  		var iCol int32
 43296  
 43297  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43298  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 43299  
 43300  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 43301  			continue
 43302  		}
 43303  
 43304  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 43305  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 43306  			var zNewCol uintptr
 43307  			if iCol >= 0 {
 43308  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*4))
 43309  			} else {
 43310  				zNewCol = ts + 6427
 43311  			}
 43312  			var zOp uintptr = uintptr(0)
 43313  			useIdx = 1
 43314  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 43315  			case SQLITE_INDEX_CONSTRAINT_EQ:
 43316  				zOp = ts + 27570
 43317  				break
 43318  				fallthrough
 43319  			case SQLITE_INDEX_CONSTRAINT_LT:
 43320  				zOp = ts + 27572
 43321  				break
 43322  				fallthrough
 43323  			case SQLITE_INDEX_CONSTRAINT_GT:
 43324  				zOp = ts + 27574
 43325  				break
 43326  				fallthrough
 43327  			case SQLITE_INDEX_CONSTRAINT_LE:
 43328  				zOp = ts + 27576
 43329  				break
 43330  				fallthrough
 43331  			case SQLITE_INDEX_CONSTRAINT_GE:
 43332  				zOp = ts + 27579
 43333  				break
 43334  				fallthrough
 43335  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 43336  				zOp = ts + 27582
 43337  				break
 43338  				fallthrough
 43339  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 43340  				zOp = ts + 27587
 43341  				break
 43342  				fallthrough
 43343  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 43344  				zOp = ts + 27592
 43345  				break
 43346  				fallthrough
 43347  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43348  				zOp = ts + 6831
 43349  				break
 43350  			}
 43351  			if zOp != 0 {
 43352  				if int32(*(*int8)(unsafe.Pointer(zOp))) == 'L' {
 43353  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 43354  						libc.VaList(bp+24, zSep, zNewCol))
 43355  				} else {
 43356  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 43357  				}
 43358  				string_concat(tls, bp+84, zNew, 1, bp+88)
 43359  				zSep = ts + 9419
 43360  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 43361  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 43362  			}
 43363  		}
 43364  	}
 43365  
 43366  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 && ((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn)*4)) != 0) {
 43367  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 43368  		var zNewCol uintptr
 43369  		if iCol >= 0 {
 43370  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*4))
 43371  		} else {
 43372  			zNewCol = ts + 6427
 43373  		}
 43374  		var zDir uintptr
 43375  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 43376  			zDir = ts + 27644
 43377  		} else {
 43378  			zDir = ts + 27649
 43379  		}
 43380  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 43381  		string_concat(tls, bp+84, zNew, 1, bp+88)
 43382  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 43383  	}
 43384  
 43385  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 43386  
 43387  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 84)))
 43388  
 43389  	if !(*(*uintptr)(unsafe.Pointer(bp + 84)) != 0) {
 43390  		return *(*int32)(unsafe.Pointer(bp + 88))
 43391  	}
 43392  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 84)))
 43393  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 84))
 43394  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 43395  	if useCost != 0 {
 43396  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 43397  	} else if useIdx != 0 {
 43398  		for ii = 0; uint32(ii) < uint32(unsafe.Sizeof(int32(0)))*uint32(8)-uint32(1); ii++ {
 43399  			if nRow&(int32(1)<<ii) != 0 {
 43400  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 43401  			}
 43402  		}
 43403  	} else {
 43404  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 43405  	}
 43406  	return *(*int32)(unsafe.Pointer(bp + 88))
 43407  }
 43408  
 43409  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 43410  	bp := tls.Alloc(116)
 43411  	defer tls.Free(116)
 43412  
 43413  	var pVtab uintptr = tab
 43414  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 43415  	*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_OK
 43416  
 43417  	*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 43418  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 43419  	var bindArgZero int32 = 0
 43420  	var bindArgOne int32 = 0
 43421  	var i int32
 43422  
 43423  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 43424  		return SQLITE_ERROR
 43425  	}
 43426  
 43427  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43428  		var zSep uintptr = ts + 27677
 43429  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43430  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43431  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_NOMEM
 43432  		}
 43433  
 43434  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*4)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*4))) == SQLITE_INTEGER)
 43435  		bindArgZero = 1
 43436  
 43437  		if bindArgOne != 0 {
 43438  			string_concat(tls, bp+96, ts+27692, 0, bp+100)
 43439  			zSep = ts + 4758
 43440  		}
 43441  		for i = 2; i < nData; i++ {
 43442  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*4)) == uintptr(0) {
 43443  				continue
 43444  			}
 43445  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 43446  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*4)), i)), 1, bp+100)
 43447  			zSep = ts + 4758
 43448  		}
 43449  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+100)
 43450  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 43451  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43452  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 43453  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_NOMEM
 43454  		}
 43455  		bindArgZero = 1
 43456  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 43457  		var ii int32
 43458  		*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 43459  		*(*uintptr)(unsafe.Pointer(bp + 108)) = uintptr(0)
 43460  
 43461  		*(*uintptr)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43462  		if !(*(*uintptr)(unsafe.Pointer(bp + 104)) != 0) {
 43463  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_NOMEM
 43464  		}
 43465  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*4))) == SQLITE_INTEGER {
 43466  			bindArgOne = 1
 43467  			*(*uintptr)(unsafe.Pointer(bp + 108)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 43468  			string_concat(tls, bp+104, ts+6427, 0, bp+100)
 43469  		}
 43470  
 43471  		for ii = 2; ii < nData; ii++ {
 43472  			string_concat(tls, bp+104,
 43473  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 43474  					if *(*uintptr)(unsafe.Pointer(bp + 108)) != 0 {
 43475  						return ts + 97
 43476  					}
 43477  					return ts + 584
 43478  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*4)))), 1, bp+100)
 43479  			string_concat(tls, bp+108,
 43480  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 43481  					if *(*uintptr)(unsafe.Pointer(bp + 108)) != 0 {
 43482  						return ts + 97
 43483  					}
 43484  					return ts + 584
 43485  				}(), ii)), 1, bp+100)
 43486  		}
 43487  
 43488  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 104)), 1, bp+100)
 43489  		string_concat(tls, bp+96, ts+27794, 0, bp+100)
 43490  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 108)), 1, bp+100)
 43491  		string_concat(tls, bp+96, ts+585, 0, bp+100)
 43492  	} else {
 43493  		return SQLITE_ERROR
 43494  	}
 43495  
 43496  	if *(*int32)(unsafe.Pointer(bp + 100)) == SQLITE_OK {
 43497  		*(*int32)(unsafe.Pointer(bp + 100)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+112, uintptr(0))
 43498  	}
 43499  
 43500  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 43501  	if *(*int32)(unsafe.Pointer(bp + 100)) == SQLITE_OK {
 43502  		if bindArgZero != 0 {
 43503  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 112)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 43504  		}
 43505  		if bindArgOne != 0 {
 43506  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*4)))
 43507  		}
 43508  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 100)) == SQLITE_OK; i++ {
 43509  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*4)) != 0 {
 43510  				*(*int32)(unsafe.Pointer(bp + 100)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 112)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*4)))
 43511  			}
 43512  		}
 43513  		if *(*int32)(unsafe.Pointer(bp + 100)) == SQLITE_OK {
 43514  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 43515  			*(*int32)(unsafe.Pointer(bp + 100)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 43516  		} else {
 43517  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 43518  		}
 43519  	}
 43520  
 43521  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 100)) == SQLITE_OK {
 43522  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 43523  	}
 43524  	if *(*int32)(unsafe.Pointer(bp + 100)) != SQLITE_OK {
 43525  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 43526  	}
 43527  
 43528  	return *(*int32)(unsafe.Pointer(bp + 100))
 43529  }
 43530  
 43531  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 43532  	bp := tls.Alloc(8)
 43533  	defer tls.Free(8)
 43534  
 43535  	var z uintptr
 43536  	var pVtab uintptr = tab
 43537  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 43538  	if z == uintptr(0) {
 43539  		return SQLITE_NOMEM
 43540  	}
 43541  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 43542  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 43543  	sqlite3.Xsqlite3_free(tls, z)
 43544  	return SQLITE_OK
 43545  }
 43546  
 43547  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 43548  	var rc int32
 43549  	var pVtab uintptr = tab
 43550  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43551  	var zVal uintptr
 43552  
 43553  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 43554  		return SQLITE_ERROR
 43555  	}
 43556  
 43557  	rc = echoTransactionCall(tls, tab, ts+27813)
 43558  
 43559  	if rc == SQLITE_OK {
 43560  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 43561  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43562  			rc = SQLITE_ERROR
 43563  		}
 43564  	}
 43565  	if rc == SQLITE_OK {
 43566  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 43567  	}
 43568  	return rc
 43569  }
 43570  
 43571  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 43572  	var rc int32
 43573  	var pVtab uintptr = tab
 43574  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43575  	var zVal uintptr
 43576  
 43577  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 43578  		return SQLITE_ERROR
 43579  	}
 43580  
 43581  	rc = echoTransactionCall(tls, tab, ts+27843)
 43582  
 43583  	if rc == SQLITE_OK {
 43584  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 43585  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 43586  			rc = -1
 43587  		}
 43588  	}
 43589  	return rc
 43590  }
 43591  
 43592  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 43593  	var pVtab uintptr = tab
 43594  	var rc int32
 43595  
 43596  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 43597  		return SQLITE_ERROR
 43598  	}
 43599  
 43600  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 43601  	rc = echoTransactionCall(tls, tab, ts+27871)
 43602  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 43603  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43604  	return rc
 43605  }
 43606  
 43607  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 43608  	var rc int32
 43609  	var pVtab uintptr = tab
 43610  
 43611  	rc = echoTransactionCall(tls, tab, ts+27879)
 43612  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43613  	return rc
 43614  }
 43615  
 43616  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 43617  	bp := tls.Alloc(212)
 43618  	defer tls.Free(212)
 43619  
 43620  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 43621  
 43622  	var i int32
 43623  	var rc int32
 43624  	tcl.XTcl_DStringInit(tls, bp)
 43625  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 43626  	for i = 0; i < nArg; i++ {
 43627  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*4))))
 43628  	}
 43629  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 43630  	tcl.XTcl_DStringFree(tls, bp)
 43631  	if rc != 0 {
 43632  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 43633  	} else {
 43634  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 43635  			-1, libc.UintptrFromInt32(-1))
 43636  	}
 43637  	tcl.XTcl_ResetResult(tls, interp)
 43638  }
 43639  
 43640  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 43641  	bp := tls.Alloc(32)
 43642  	defer tls.Free(32)
 43643  
 43644  	var pVtab uintptr = vtab
 43645  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43646  
 43647  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 43648  		return 0
 43649  	}
 43650  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 43651  		return 0
 43652  	}
 43653  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 43654  		f func(*libc.TLS, uintptr, int32, uintptr)
 43655  	}{overloadedGlobFunction}))
 43656  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 43657  	return 1
 43658  }
 43659  
 43660  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 43661  	bp := tls.Alloc(24)
 43662  	defer tls.Free(24)
 43663  
 43664  	var rc int32 = SQLITE_OK
 43665  	var p uintptr = vtab
 43666  
 43667  	if simulateVtabError(tls, p, ts+27910) != 0 {
 43668  		return SQLITE_ERROR
 43669  	}
 43670  
 43671  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 43672  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 43673  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 43674  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 43675  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43676  		sqlite3.Xsqlite3_free(tls, zSql)
 43677  	}
 43678  
 43679  	return rc
 43680  }
 43681  
 43682  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43683  	return SQLITE_OK
 43684  }
 43685  
 43686  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43687  	return SQLITE_OK
 43688  }
 43689  
 43690  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43691  	return SQLITE_OK
 43692  }
 43693  
 43694  var echoModule = sqlite3_module{
 43695  	FiVersion:      1,
 43696  	FxCreate:       0,
 43697  	FxConnect:      0,
 43698  	FxBestIndex:    0,
 43699  	FxDisconnect:   0,
 43700  	FxDestroy:      0,
 43701  	FxOpen:         0,
 43702  	FxClose:        0,
 43703  	FxFilter:       0,
 43704  	FxNext:         0,
 43705  	FxEof:          0,
 43706  	FxColumn:       0,
 43707  	FxRowid:        0,
 43708  	FxUpdate:       0,
 43709  	FxBegin:        0,
 43710  	FxSync:         0,
 43711  	FxCommit:       0,
 43712  	FxRollback:     0,
 43713  	FxFindFunction: 0,
 43714  	FxRename:       0,
 43715  }
 43716  
 43717  var echoModuleV2 = sqlite3_module{
 43718  	FiVersion:      2,
 43719  	FxCreate:       0,
 43720  	FxConnect:      0,
 43721  	FxBestIndex:    0,
 43722  	FxDisconnect:   0,
 43723  	FxDestroy:      0,
 43724  	FxOpen:         0,
 43725  	FxClose:        0,
 43726  	FxFilter:       0,
 43727  	FxNext:         0,
 43728  	FxEof:          0,
 43729  	FxColumn:       0,
 43730  	FxRowid:        0,
 43731  	FxUpdate:       0,
 43732  	FxBegin:        0,
 43733  	FxSync:         0,
 43734  	FxCommit:       0,
 43735  	FxRollback:     0,
 43736  	FxFindFunction: 0,
 43737  	FxRename:       0,
 43738  	FxSavepoint:    0,
 43739  	FxRelease:      0,
 43740  	FxRollbackTo:   0,
 43741  }
 43742  
 43743  func moduleDestroy(tls *libc.TLS, p uintptr) {
 43744  	var pMod uintptr = p
 43745  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 43746  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 43747  	sqlite3.Xsqlite3_free(tls, p)
 43748  }
 43749  
 43750  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43751  	bp := tls.Alloc(4)
 43752  	defer tls.Free(4)
 43753  
 43754  	var rc int32
 43755  
 43756  	var pMod uintptr
 43757  	if objc != 2 {
 43758  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 43759  		return TCL_ERROR
 43760  	}
 43761  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 43762  		return TCL_ERROR
 43763  	}
 43764  
 43765  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43766  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43767  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43768  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 43769  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43770  
 43771  	if rc == SQLITE_OK {
 43772  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43773  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43774  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43775  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 43776  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43777  	}
 43778  
 43779  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43780  	return TCL_OK
 43781  }
 43782  
 43783  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43784  	bp := tls.Alloc(4)
 43785  	defer tls.Free(4)
 43786  
 43787  	var rc int32
 43788  	if objc != 3 {
 43789  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 43790  		return TCL_ERROR
 43791  	}
 43792  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 43793  		return TCL_ERROR
 43794  	}
 43795  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))))
 43796  	if rc != SQLITE_OK {
 43797  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 43798  		return TCL_ERROR
 43799  	}
 43800  	return TCL_OK
 43801  }
 43802  
 43803  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 43804  	var i int32
 43805  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd2))/uint32(unsafe.Sizeof(struct {
 43806  		FzName      uintptr
 43807  		FxProc      uintptr
 43808  		FclientData uintptr
 43809  	}{})); i++ {
 43810  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 43811  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 43812  	}
 43813  	return TCL_OK
 43814  }
 43815  
 43816  var aObjCmd2 = [2]struct {
 43817  	FzName      uintptr
 43818  	FxProc      uintptr
 43819  	FclientData uintptr
 43820  }{
 43821  	{FzName: ts + 27999, FxProc: 0},
 43822  	{FzName: ts + 28020, FxProc: 0},
 43823  }
 43824  
 43825  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43826  	bp := tls.Alloc(28)
 43827  	defer tls.Free(28)
 43828  
 43829  	var zErrFunction uintptr
 43830  
 43831  	var rc int32
 43832  	zErrFunction = ts + 28041
 43833  	if !(objc != 1) {
 43834  		goto __1
 43835  	}
 43836  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43837  	return TCL_ERROR
 43838  __1:
 43839  	;
 43840  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43841  	if !(rc != SQLITE_OK) {
 43842  		goto __2
 43843  	}
 43844  	zErrFunction = ts + 21460
 43845  	goto error_out
 43846  __2:
 43847  	;
 43848  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 43849  	if !(rc != SQLITE_MISUSE) {
 43850  		goto __3
 43851  	}
 43852  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43853  	zErrFunction = ts + 28045
 43854  	goto error_out
 43855  __3:
 43856  	;
 43857  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43858  	return TCL_OK
 43859  
 43860  error_out:
 43861  	tcl.XTcl_ResetResult(tls, interp)
 43862  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43863  	return TCL_ERROR
 43864  }
 43865  
 43866  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43867  	bp := tls.Alloc(24)
 43868  	defer tls.Free(24)
 43869  
 43870  	var p uintptr
 43871  	var zErrFunction uintptr
 43872  	zErrFunction = ts + 28041
 43873  
 43874  	if !(objc != 1) {
 43875  		goto __1
 43876  	}
 43877  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43878  	return TCL_ERROR
 43879  __1:
 43880  	;
 43881  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 43882  	if !!(p != 0) {
 43883  		goto __2
 43884  	}
 43885  	zErrFunction = ts + 28095
 43886  	goto error_out
 43887  __2:
 43888  	;
 43889  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 43890  	if !(p != 0) {
 43891  		goto __3
 43892  	}
 43893  	zErrFunction = ts + 28110
 43894  	goto error_out
 43895  __3:
 43896  	;
 43897  	return TCL_OK
 43898  
 43899  error_out:
 43900  	tcl.XTcl_ResetResult(tls, interp)
 43901  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43902  	return TCL_ERROR
 43903  }
 43904  
 43905  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43906  	bp := tls.Alloc(32)
 43907  	defer tls.Free(32)
 43908  
 43909  	var zErrFunction uintptr
 43910  
 43911  	var rc int32
 43912  	zErrFunction = ts + 28041
 43913  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43914  
 43915  	if !(objc != 1) {
 43916  		goto __1
 43917  	}
 43918  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43919  	return TCL_ERROR
 43920  __1:
 43921  	;
 43922  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43923  	if !(rc != SQLITE_OK) {
 43924  		goto __2
 43925  	}
 43926  	zErrFunction = ts + 21460
 43927  	goto error_out
 43928  __2:
 43929  	;
 43930  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43931  
 43932  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43933  	if !(rc != SQLITE_MISUSE) {
 43934  		goto __3
 43935  	}
 43936  	zErrFunction = ts + 21366
 43937  	goto error_out
 43938  __3:
 43939  	;
 43940  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(1234)
 43941  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+28, uintptr(0))
 43942  	if !(rc != SQLITE_MISUSE) {
 43943  		goto __4
 43944  	}
 43945  	zErrFunction = ts + 21541
 43946  	goto error_out
 43947  __4:
 43948  	;
 43949  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(1234)
 43950  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+28, uintptr(0))
 43951  	if !(rc != SQLITE_MISUSE) {
 43952  		goto __5
 43953  	}
 43954  	zErrFunction = ts + 21575
 43955  	goto error_out
 43956  __5:
 43957  	;
 43958  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(1234)
 43959  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+28, uintptr(0))
 43960  	if !(rc != SQLITE_MISUSE) {
 43961  		goto __6
 43962  	}
 43963  	zErrFunction = ts + 21557
 43964  	goto error_out
 43965  __6:
 43966  	;
 43967  	*(*uintptr)(unsafe.Pointer(bp + 28)) = uintptr(1234)
 43968  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+28, uintptr(0))
 43969  	if !(rc != SQLITE_MISUSE) {
 43970  		goto __7
 43971  	}
 43972  	zErrFunction = ts + 21637
 43973  	goto error_out
 43974  __7:
 43975  	;
 43976  	return TCL_OK
 43977  
 43978  error_out:
 43979  	tcl.XTcl_ResetResult(tls, interp)
 43980  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43981  	return TCL_ERROR
 43982  }
 43983  
 43984  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 43985  	var i int32
 43986  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd3))/uint32(unsafe.Sizeof(struct {
 43987  		FzName      uintptr
 43988  		FxProc      uintptr
 43989  		FclientData uintptr
 43990  	}{})); i++ {
 43991  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 43992  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 43993  	}
 43994  	return TCL_OK
 43995  }
 43996  
 43997  var aObjCmd3 = [3]struct {
 43998  	FzName      uintptr
 43999  	FxProc      uintptr
 44000  	FclientData uintptr
 44001  }{
 44002  	{FzName: ts + 28126, FxProc: 0},
 44003  	{FzName: ts + 28140, FxProc: 0},
 44004  	{FzName: ts + 28155, FxProc: 0},
 44005  }
 44006  
 44007  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 44008  	return TCL_OK
 44009  }
 44010  
 44011  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44012  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 44013  	return SQLITE_OK
 44014  }
 44015  
 44016  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 44017  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 44018  		*(*uintptr)(unsafe.Pointer(&struct {
 44019  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 44020  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 44021  	return TCL_OK
 44022  }
 44023  
 44024  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44025  	bp := tls.Alloc(120)
 44026  	defer tls.Free(120)
 44027  
 44028  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 44029  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 44030  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 44031  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 44032  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 44033  		{},
 44034  	}
 44035  
 44036  	var p uintptr = clientData
 44037  
 44038  	var rc int32
 44039  
 44040  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 44041  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+80)
 44042  	if rc != TCL_OK {
 44043  		return rc
 44044  	}
 44045  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*16)).FnArg {
 44046  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*16)).FzArg)
 44047  		return TCL_ERROR
 44048  	}
 44049  
 44050  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*16)).FeCmd {
 44051  	case uint32(1):
 44052  		{
 44053  			var zCmdName uintptr
 44054  
 44055  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 44056  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+84)
 44057  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 84)).FdeleteProc = uintptr(0)
 44058  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+84)
 44059  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 44060  
 44061  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 44062  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44063  			break
 44064  
 44065  		}
 44066  
 44067  	case uint32(0):
 44068  		{
 44069  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+116) {
 44070  				return TCL_ERROR
 44071  			}
 44072  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 116)))
 44073  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 44074  			break
 44075  
 44076  		}
 44077  
 44078  	case uint32(2):
 44079  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 44080  		break
 44081  
 44082  	case uint32(3):
 44083  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 44084  		break
 44085  	}
 44086  
 44087  	return TCL_OK
 44088  }
 44089  
 44090  type BackupSubCommand = struct {
 44091  	FzCmd uintptr
 44092  	FeCmd uint32
 44093  	FnArg int32
 44094  	FzArg uintptr
 44095  }
 44096  
 44097  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 44098  	var pBackup uintptr = clientData
 44099  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 44100  }
 44101  
 44102  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44103  	bp := tls.Alloc(24)
 44104  	defer tls.Free(24)
 44105  
 44106  	var pBackup uintptr
 44107  
 44108  	var zDestName uintptr
 44109  	var zSrcName uintptr
 44110  	var zCmd uintptr
 44111  
 44112  	if objc != 6 {
 44113  		tcl.XTcl_WrongNumArgs(tls,
 44114  			interp, 1, objv, ts+28234)
 44115  		return TCL_ERROR
 44116  	}
 44117  
 44118  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 44119  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), bp+16)
 44120  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 44121  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4))), bp+20)
 44122  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*4)))
 44123  
 44124  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 20)), zSrcName)
 44125  	if !(pBackup != 0) {
 44126  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 44127  		return TCL_ERROR
 44128  	}
 44129  
 44130  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 44131  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44132  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 44133  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 44134  	return TCL_OK
 44135  }
 44136  
 44137  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 44138  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 44139  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44140  	}{backupTestInit})), uintptr(0), uintptr(0))
 44141  	return TCL_OK
 44142  }
 44143  
 44144  type tcl_vtab1 = struct {
 44145  	Fbase   sqlite3_vtab
 44146  	Finterp uintptr
 44147  	FpCmd   uintptr
 44148  	Fdb     uintptr
 44149  }
 44150  
 44151  type tcl_vtab = tcl_vtab1
 44152  type tcl_cursor1 = struct {
 44153  	Fbase  sqlite3_vtab_cursor
 44154  	FpStmt uintptr
 44155  }
 44156  
 44157  type tcl_cursor = tcl_cursor1
 44158  
 44159  func tclDequote(tls *libc.TLS, z uintptr) {
 44160  	var q int8 = *(*int8)(unsafe.Pointer(z))
 44161  
 44162  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 44163  		var iIn int32 = 1
 44164  		var iOut int32 = 0
 44165  		if int32(q) == '[' {
 44166  			q = int8(']')
 44167  		}
 44168  
 44169  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 44170  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 44171  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 44172  					iIn++
 44173  					break
 44174  				} else {
 44175  					iIn = iIn + 2
 44176  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 44177  				}
 44178  			} else {
 44179  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 44180  			}
 44181  		}
 44182  
 44183  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 44184  	}
 44185  }
 44186  
 44187  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 44188  	bp := tls.Alloc(8)
 44189  	defer tls.Free(8)
 44190  
 44191  	var interp uintptr = pAux
 44192  	var pTab uintptr = uintptr(0)
 44193  	var zCmd uintptr = uintptr(0)
 44194  	var pScript uintptr = uintptr(0)
 44195  	var rc int32 = SQLITE_OK
 44196  
 44197  	if argc != 4 {
 44198  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 44199  		return SQLITE_ERROR
 44200  	}
 44201  
 44202  	zCmd = sqlite3.Xsqlite3_malloc64(tls, uint64(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))+size_t(1)))
 44203  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 44204  	if zCmd != 0 && pTab != 0 {
 44205  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*4)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))+size_t(1))
 44206  		tclDequote(tls, zCmd)
 44207  		libc.Xmemset(tls, pTab, 0, uint32(unsafe.Sizeof(tcl_vtab{})))
 44208  
 44209  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 44210  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 44211  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 44212  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 44213  
 44214  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44215  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44216  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 44217  
 44218  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44219  		if rc != TCL_OK {
 44220  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 44221  			rc = SQLITE_ERROR
 44222  		} else {
 44223  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 44224  		}
 44225  
 44226  		if rc != SQLITE_OK {
 44227  			sqlite3.Xsqlite3_free(tls, pTab)
 44228  			pTab = uintptr(0)
 44229  		}
 44230  	} else {
 44231  		rc = SQLITE_NOMEM
 44232  	}
 44233  
 44234  	sqlite3.Xsqlite3_free(tls, zCmd)
 44235  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 44236  	return rc
 44237  }
 44238  
 44239  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 44240  	var pTab uintptr = pVtab
 44241  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44242  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 44243  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44244  			tcl.XTclFreeObj(tls, _objPtr)
 44245  		}
 44246  	}
 44247  	sqlite3.Xsqlite3_free(tls, pTab)
 44248  	return SQLITE_OK
 44249  }
 44250  
 44251  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 44252  	var pCur uintptr
 44253  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 44254  	if pCur == uintptr(0) {
 44255  		return SQLITE_NOMEM
 44256  	}
 44257  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(tcl_cursor{})))
 44258  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 44259  	return SQLITE_OK
 44260  }
 44261  
 44262  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 44263  	var pCur uintptr = cur
 44264  	if pCur != 0 {
 44265  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 44266  		sqlite3.Xsqlite3_free(tls, pCur)
 44267  	}
 44268  	return SQLITE_OK
 44269  }
 44270  
 44271  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44272  	bp := tls.Alloc(8)
 44273  	defer tls.Free(8)
 44274  
 44275  	var pCsr uintptr = pVtabCursor
 44276  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 44277  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44278  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44279  		if rc != SQLITE_ROW {
 44280  			var zErr uintptr
 44281  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 44282  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 44283  			if rc != SQLITE_OK {
 44284  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44285  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44286  			}
 44287  		}
 44288  	}
 44289  	return SQLITE_OK
 44290  }
 44291  
 44292  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 44293  	bp := tls.Alloc(44)
 44294  	defer tls.Free(44)
 44295  
 44296  	var pCsr uintptr = pVtabCursor
 44297  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 44298  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44299  	var pScript uintptr
 44300  	var pArg uintptr
 44301  	var ii int32
 44302  	var rc int32
 44303  
 44304  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44305  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44306  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 44307  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 44308  	if idxStr != 0 {
 44309  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 44310  	} else {
 44311  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 44312  	}
 44313  
 44314  	pArg = tcl.XTcl_NewObj(tls)
 44315  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 44316  	for ii = 0; ii < argc; ii++ {
 44317  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*4)))
 44318  		var pVal uintptr
 44319  		if zVal == uintptr(0) {
 44320  			pVal = tcl.XTcl_NewObj(tls)
 44321  			for rc = sqlite3.Xsqlite3_vtab_in_first(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*4)), bp+32); rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 32)) != 0; rc = sqlite3.Xsqlite3_vtab_in_next(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*4)), bp+32) {
 44322  				var pVal2 uintptr = uintptr(0)
 44323  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 44324  				if zVal != 0 {
 44325  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44326  				} else {
 44327  					pVal2 = tcl.XTcl_NewObj(tls)
 44328  				}
 44329  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 44330  			}
 44331  		} else {
 44332  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 44333  		}
 44334  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 44335  	}
 44336  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 44337  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44338  		var _objPtr uintptr = pArg
 44339  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44340  			tcl.XTclFreeObj(tls, _objPtr)
 44341  		}
 44342  	}
 44343  
 44344  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44345  	if rc != TCL_OK {
 44346  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44347  		rc = SQLITE_ERROR
 44348  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 44349  	} else {
 44350  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44351  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 44352  
 44353  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+36, bp+40)
 44354  		if rc != TCL_OK {
 44355  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44356  			rc = SQLITE_ERROR
 44357  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44358  		} else {
 44359  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 36)); ii = ii + 2 {
 44360  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + uintptr(ii)*4)))
 44361  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + uintptr(ii+1)*4))
 44362  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 44363  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 44364  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+4, uintptr(0))
 44365  					if rc != SQLITE_OK {
 44366  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 44367  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 44368  					}
 44369  				} else {
 44370  					rc = SQLITE_ERROR
 44371  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 44372  				}
 44373  			}
 44374  		}
 44375  	}
 44376  
 44377  	if rc == SQLITE_OK {
 44378  		rc = tclNext(tls, pVtabCursor)
 44379  	}
 44380  	return rc
 44381  }
 44382  
 44383  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 44384  	var pCsr uintptr = pVtabCursor
 44385  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 44386  	return SQLITE_OK
 44387  }
 44388  
 44389  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 44390  	var pCsr uintptr = pVtabCursor
 44391  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 44392  	return SQLITE_OK
 44393  }
 44394  
 44395  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 44396  	var pCsr uintptr = pVtabCursor
 44397  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 44398  }
 44399  
 44400  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44401  	var ii int32
 44402  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44403  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44404  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 44405  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 44406  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44407  		var zOp uintptr = ts + 3405
 44408  
 44409  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44410  
 44411  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 44412  		case SQLITE_INDEX_CONSTRAINT_EQ:
 44413  			zOp = ts + 28365
 44414  			break
 44415  		case SQLITE_INDEX_CONSTRAINT_GT:
 44416  			zOp = ts + 28368
 44417  			break
 44418  		case SQLITE_INDEX_CONSTRAINT_LE:
 44419  			zOp = ts + 28371
 44420  			break
 44421  		case SQLITE_INDEX_CONSTRAINT_LT:
 44422  			zOp = ts + 28374
 44423  			break
 44424  		case SQLITE_INDEX_CONSTRAINT_GE:
 44425  			zOp = ts + 28377
 44426  			break
 44427  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 44428  			zOp = ts + 28380
 44429  			break
 44430  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 44431  			zOp = ts + 27587
 44432  			break
 44433  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 44434  			zOp = ts + 27592
 44435  			break
 44436  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 44437  			zOp = ts + 6831
 44438  			break
 44439  		case SQLITE_INDEX_CONSTRAINT_NE:
 44440  			zOp = ts + 28386
 44441  			break
 44442  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 44443  			zOp = ts + 28389
 44444  			break
 44445  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 44446  			zOp = ts + 28395
 44447  			break
 44448  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 44449  			zOp = ts + 28405
 44450  			break
 44451  		case SQLITE_INDEX_CONSTRAINT_IS:
 44452  			zOp = ts + 5851
 44453  			break
 44454  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 44455  			zOp = ts + 28412
 44456  			break
 44457  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 44458  			zOp = ts + 28418
 44459  			break
 44460  		}
 44461  
 44462  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 44463  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 44464  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44465  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 44466  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 44467  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 44468  
 44469  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44470  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44471  			var _objPtr uintptr = pElem
 44472  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44473  				tcl.XTclFreeObj(tls, _objPtr)
 44474  			}
 44475  		}
 44476  	}
 44477  
 44478  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44479  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44480  		var _objPtr uintptr = pRes
 44481  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44482  			tcl.XTclFreeObj(tls, _objPtr)
 44483  		}
 44484  	}
 44485  }
 44486  
 44487  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 44488  	var ii int32
 44489  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 44490  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 44491  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 44492  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 44493  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 44494  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 44495  
 44496  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 44497  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 44498  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 44499  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 44500  
 44501  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 44502  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44503  			var _objPtr uintptr = pElem
 44504  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44505  				tcl.XTclFreeObj(tls, _objPtr)
 44506  			}
 44507  		}
 44508  	}
 44509  
 44510  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 44511  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 44512  		var _objPtr uintptr = pRes
 44513  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44514  			tcl.XTclFreeObj(tls, _objPtr)
 44515  		}
 44516  	}
 44517  }
 44518  
 44519  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44520  	bp := tls.Alloc(48)
 44521  	defer tls.Free(48)
 44522  
 44523  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 44524  		ts + 28444,
 44525  		ts + 28456,
 44526  		ts + 28464,
 44527  		ts + 28469,
 44528  		ts + 28478,
 44529  		ts + 28481,
 44530  		uintptr(0),
 44531  	}
 44532  
 44533  	var pIdxInfo uintptr = clientData
 44534  
 44535  	if objc < 2 {
 44536  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 44537  		return TCL_ERROR
 44538  	}
 44539  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+28) != 0 {
 44540  		return TCL_ERROR
 44541  	}
 44542  
 44543  	if *(*int32)(unsafe.Pointer(bp + 28)) < 4 && objc != 2 {
 44544  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 44545  		return TCL_ERROR
 44546  	}
 44547  	if *(*int32)(unsafe.Pointer(bp + 28)) == 4 && objc != 4 {
 44548  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 44549  		return TCL_ERROR
 44550  	}
 44551  	if *(*int32)(unsafe.Pointer(bp + 28)) == 5 && objc != 3 && objc != 4 {
 44552  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 44553  		return TCL_ERROR
 44554  	}
 44555  
 44556  	switch *(*int32)(unsafe.Pointer(bp + 28)) {
 44557  	case 0:
 44558  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 44559  		break
 44560  
 44561  	case 1:
 44562  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 44563  		break
 44564  
 44565  	case 2:
 44566  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 44567  		break
 44568  
 44569  	case 3:
 44570  		{
 44571  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 44572  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 44573  			break
 44574  
 44575  		}
 44576  
 44577  	case 4:
 44578  		{
 44579  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+32) != 0 ||
 44580  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+36) != 0 {
 44581  				return TCL_ERROR
 44582  			}
 44583  			tcl.XTcl_SetObjResult(tls, interp,
 44584  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 36)))))
 44585  			break
 44586  
 44587  		}
 44588  
 44589  	case 5:
 44590  		{
 44591  			*(*int32)(unsafe.Pointer(bp + 40)) = 0
 44592  			var rc int32
 44593  			*(*uintptr)(unsafe.Pointer(bp + 44)) = uintptr(0)
 44594  			var zVal uintptr = ts + 584
 44595  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+40) != 0 {
 44596  				return TCL_ERROR
 44597  			}
 44598  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 40)), bp+44)
 44599  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 44600  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44601  				return TCL_ERROR
 44602  			}
 44603  			if *(*uintptr)(unsafe.Pointer(bp + 44)) != 0 {
 44604  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 44)))
 44605  			} else if objc == 4 {
 44606  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 44607  			}
 44608  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 44609  			break
 44610  
 44611  		}
 44612  	}
 44613  
 44614  	return TCL_OK
 44615  }
 44616  
 44617  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 44618  	bp := tls.Alloc(100)
 44619  	defer tls.Free(100)
 44620  
 44621  	var pTab uintptr = tab
 44622  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44623  	var rc int32 = SQLITE_OK
 44624  
 44625  	var pScript uintptr
 44626  
 44627  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44628  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44629  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 44630  
 44631  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]int8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 44632  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 44633  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44634  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 44635  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 44636  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44637  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 44638  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44639  		var _objPtr uintptr = pScript
 44640  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44641  			tcl.XTclFreeObj(tls, _objPtr)
 44642  		}
 44643  	}
 44644  
 44645  	if rc != TCL_OK {
 44646  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44647  		rc = SQLITE_ERROR
 44648  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44649  	} else {
 44650  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44651  		*(*uintptr)(unsafe.Pointer(bp + 84)) = uintptr(0)
 44652  
 44653  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+84)
 44654  		if rc != TCL_OK {
 44655  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44656  			rc = SQLITE_ERROR
 44657  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 44658  		} else {
 44659  			var ii int32
 44660  			var iArgv int32 = 1
 44661  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 44662  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 84)) + uintptr(ii)*4)))
 44663  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 84)) + uintptr(ii+1)*4))
 44664  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 44665  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+36)
 44666  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 44667  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+32)
 44668  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 44669  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+20)
 44670  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 44671  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 44672  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 44673  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 44674  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 44675  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 88)) = int64(0)
 44676  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+88)
 44677  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 88))))
 44678  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 44679  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 44680  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+96)
 44681  					if rc == SQLITE_OK {
 44682  						if *(*int32)(unsafe.Pointer(bp + 96)) < 0 || *(*int32)(unsafe.Pointer(bp + 96)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 44683  							rc = SQLITE_ERROR
 44684  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 96))))
 44685  						} else {
 44686  							var bOmit int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*int8)(unsafe.Pointer(zCmd))) == 'O')
 44687  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 96)))*8)).FargvIndex = libc.PostIncInt32(&iArgv, 1)
 44688  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 96)))*8)).Fomit = uint8(bOmit)
 44689  						}
 44690  					}
 44691  				} else {
 44692  					rc = SQLITE_ERROR
 44693  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 44694  				}
 44695  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 44696  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44697  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 44698  				}
 44699  			}
 44700  		}
 44701  	}
 44702  
 44703  	return rc
 44704  }
 44705  
 44706  var iNext int32 = 43
 44707  
 44708  var tclModule = sqlite3_module{
 44709  	FxCreate:     0,
 44710  	FxConnect:    0,
 44711  	FxBestIndex:  0,
 44712  	FxDisconnect: 0,
 44713  	FxDestroy:    0,
 44714  	FxOpen:       0,
 44715  	FxClose:      0,
 44716  	FxFilter:     0,
 44717  	FxNext:       0,
 44718  	FxEof:        0,
 44719  	FxColumn:     0,
 44720  	FxRowid:      0,
 44721  }
 44722  
 44723  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44724  	bp := tls.Alloc(4)
 44725  	defer tls.Free(4)
 44726  
 44727  	if objc != 2 {
 44728  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44729  		return TCL_ERROR
 44730  	}
 44731  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 44732  		return TCL_ERROR
 44733  	}
 44734  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 44735  	return TCL_OK
 44736  }
 44737  
 44738  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 44739  	var i int32
 44740  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd4))/uint32(unsafe.Sizeof(struct {
 44741  		FzName      uintptr
 44742  		FxProc      uintptr
 44743  		FclientData uintptr
 44744  	}{})); i++ {
 44745  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 44746  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 44747  	}
 44748  	return TCL_OK
 44749  }
 44750  
 44751  var aObjCmd4 = [1]struct {
 44752  	FzName      uintptr
 44753  	FxProc      uintptr
 44754  	FclientData uintptr
 44755  }{
 44756  	{FzName: ts + 28585, FxProc: 0},
 44757  }
 44758  
 44759  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 44760  	bp := tls.Alloc(8)
 44761  	defer tls.Free(8)
 44762  
 44763  	sqlite3.Xsqlite3_snprintf(tls, int32(uint32(unsafe.Sizeof(buf))-uint32(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 44764  	return uintptr(unsafe.Pointer(&buf))
 44765  }
 44766  
 44767  var buf [100]int8
 44768  
 44769  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 44770  	bp := tls.Alloc(8)
 44771  	defer tls.Free(8)
 44772  
 44773  	var z uintptr
 44774  
 44775  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44776  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 44777  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 44778  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint32(9)) {
 44779  		var channel Tcl_Channel
 44780  		var instanceData ClientData
 44781  
 44782  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 44783  		if !(channel != 0) {
 44784  			return TCL_ERROR
 44785  		}
 44786  
 44787  		tcl.XTcl_Flush(tls, channel)
 44788  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 44789  
 44790  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 44791  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 44792  	} else {
 44793  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 44794  	}
 44795  
 44796  	return TCL_OK
 44797  }
 44798  
 44799  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 44800  	bp := tls.Alloc(4)
 44801  	defer tls.Free(4)
 44802  
 44803  	var z uintptr
 44804  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44805  	return func() uintptr {
 44806  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 44807  			return z
 44808  		}
 44809  		return uintptr(0)
 44810  	}()
 44811  }
 44812  
 44813  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44814  	bp := tls.Alloc(24)
 44815  	defer tls.Free(24)
 44816  
 44817  	var zDb uintptr
 44818  	var zTable uintptr
 44819  	var zColumn uintptr
 44820  
 44821  	var zVarname uintptr
 44822  
 44823  	*(*uintptr)(unsafe.Pointer(bp + 20)) = bp
 44824  	var rc int32
 44825  
 44826  	if objc != 8 {
 44827  		var zUsage uintptr = ts + 28615
 44828  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 44829  		return TCL_ERROR
 44830  	}
 44831  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+4) != 0 {
 44832  		return TCL_ERROR
 44833  	}
 44834  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 44835  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 44836  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 44837  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*4)), bp+8) != 0 {
 44838  		return TCL_ERROR
 44839  	}
 44840  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*4)), bp) != 0 {
 44841  		return TCL_ERROR
 44842  	}
 44843  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*4)), bp+16)
 44844  
 44845  	if *(*int32)(unsafe.Pointer(bp + 16)) > 0 {
 44846  		rc = sqlite3.Xsqlite3_blob_open(tls, *(*uintptr)(unsafe.Pointer(bp + 4)), zDb, zTable, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp)), bp+20)
 44847  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 20))), 0)
 44848  	} else {
 44849  		rc = sqlite3.Xsqlite3_blob_open(tls, *(*uintptr)(unsafe.Pointer(bp + 4)), zDb, zTable, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp)), uintptr(0))
 44850  	}
 44851  
 44852  	if rc == SQLITE_OK {
 44853  		tcl.XTcl_ResetResult(tls, interp)
 44854  	} else {
 44855  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44856  		return TCL_ERROR
 44857  	}
 44858  	return TCL_OK
 44859  }
 44860  
 44861  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44862  	bp := tls.Alloc(4)
 44863  	defer tls.Free(4)
 44864  
 44865  	var rc int32
 44866  
 44867  	if objc != 2 {
 44868  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44869  		return TCL_ERROR
 44870  	}
 44871  
 44872  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 44873  		return TCL_ERROR
 44874  	}
 44875  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44876  
 44877  	if rc != 0 {
 44878  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44879  	} else {
 44880  		tcl.XTcl_ResetResult(tls, interp)
 44881  	}
 44882  	return TCL_OK
 44883  }
 44884  
 44885  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44886  	bp := tls.Alloc(4)
 44887  	defer tls.Free(4)
 44888  
 44889  	var nByte int32
 44890  
 44891  	if objc != 2 {
 44892  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44893  		return TCL_ERROR
 44894  	}
 44895  
 44896  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 44897  		return TCL_ERROR
 44898  	}
 44899  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44900  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 44901  
 44902  	return TCL_OK
 44903  }
 44904  
 44905  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44906  	bp := tls.Alloc(28)
 44907  	defer tls.Free(28)
 44908  
 44909  	var zBuf uintptr = uintptr(0)
 44910  	var rc int32
 44911  
 44912  	if objc != 4 {
 44913  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 44914  		return TCL_ERROR
 44915  	}
 44916  
 44917  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 44918  		return TCL_ERROR
 44919  	}
 44920  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+20) ||
 44921  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+24) {
 44922  		return TCL_ERROR
 44923  	}
 44924  
 44925  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 44926  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 24))))
 44927  		if zBuf == uintptr(0) {
 44928  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 44929  			return TCL_ERROR
 44930  		}
 44931  	}
 44932  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 20)))
 44933  	if rc == SQLITE_OK {
 44934  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 24))))
 44935  	} else {
 44936  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44937  	}
 44938  	tcl.XTcl_Free(tls, zBuf)
 44939  
 44940  	return func() int32 {
 44941  		if rc == SQLITE_OK {
 44942  			return TCL_OK
 44943  		}
 44944  		return TCL_ERROR
 44945  	}()
 44946  }
 44947  
 44948  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44949  	bp := tls.Alloc(12)
 44950  	defer tls.Free(12)
 44951  
 44952  	var rc int32
 44953  	var zBuf uintptr
 44954  
 44955  	if objc != 4 && objc != 5 {
 44956  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 44957  		return TCL_ERROR
 44958  	}
 44959  
 44960  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 44961  		return TCL_ERROR
 44962  	}
 44963  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) {
 44964  		return TCL_ERROR
 44965  	}
 44966  
 44967  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+8)
 44968  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+8) != 0 {
 44969  		return TCL_ERROR
 44970  	}
 44971  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 4)))
 44972  	if rc != SQLITE_OK {
 44973  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44974  	}
 44975  
 44976  	return func() int32 {
 44977  		if rc == SQLITE_OK {
 44978  			return TCL_OK
 44979  		}
 44980  		return TCL_ERROR
 44981  	}()
 44982  }
 44983  
 44984  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 44985  	var i int32
 44986  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd5))/uint32(unsafe.Sizeof(struct {
 44987  		FzName uintptr
 44988  		FxProc uintptr
 44989  	}{})); i++ {
 44990  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 44991  	}
 44992  	return TCL_OK
 44993  }
 44994  
 44995  var aObjCmd5 = [5]struct {
 44996  	FzName uintptr
 44997  	FxProc uintptr
 44998  }{
 44999  	{FzName: ts + 28772, FxProc: 0},
 45000  	{FzName: ts + 28790, FxProc: 0},
 45001  	{FzName: ts + 28809, FxProc: 0},
 45002  	{FzName: ts + 28828, FxProc: 0},
 45003  	{FzName: ts + 28846, FxProc: 0},
 45004  }
 45005  
 45006  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 45007  	var pBt uintptr
 45008  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 45009  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 45010  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 45011  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 45012  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 45013  	}
 45014  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 45015  	return TCL_OK
 45016  }
 45017  
 45018  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 45019  }
 45020  
 45021  func set_options(tls *libc.TLS, interp uintptr) {
 45022  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+28899,
 45023  		TCL_GLOBAL_ONLY)
 45024  
 45025  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28901, ts+14193, TCL_GLOBAL_ONLY)
 45026  
 45027  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28909, ts+14193, TCL_GLOBAL_ONLY)
 45028  
 45029  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28927, ts+28940, TCL_GLOBAL_ONLY)
 45030  
 45031  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28944, ts+28899, TCL_GLOBAL_ONLY)
 45032  
 45033  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 45034  
 45035  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 45036  
 45037  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 45038  
 45039  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 45040  
 45041  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28899, TCL_GLOBAL_ONLY)
 45042  
 45043  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28899, TCL_GLOBAL_ONLY)
 45044  
 45045  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28899, TCL_GLOBAL_ONLY)
 45046  
 45047  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+28899, TCL_GLOBAL_ONLY)
 45048  
 45049  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 45050  		ts+29060, TCL_GLOBAL_ONLY)
 45051  
 45052  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 45053  
 45054  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 45055  
 45056  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 45057  
 45058  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 45059  
 45060  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28899, TCL_GLOBAL_ONLY)
 45061  
 45062  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28899, TCL_GLOBAL_ONLY)
 45063  
 45064  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 45065  
 45066  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 45067  
 45068  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28899, TCL_GLOBAL_ONLY)
 45069  
 45070  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28899, TCL_GLOBAL_ONLY)
 45071  
 45072  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28899, TCL_GLOBAL_ONLY)
 45073  
 45074  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28899, TCL_GLOBAL_ONLY)
 45075  
 45076  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28899, TCL_GLOBAL_ONLY)
 45077  
 45078  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28899, TCL_GLOBAL_ONLY)
 45079  
 45080  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28899, TCL_GLOBAL_ONLY)
 45081  
 45082  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 45083  
 45084  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 45085  
 45086  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28899, TCL_GLOBAL_ONLY)
 45087  
 45088  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28899, TCL_GLOBAL_ONLY)
 45089  
 45090  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 45091  
 45092  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 45093  
 45094  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28899, TCL_GLOBAL_ONLY)
 45095  
 45096  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28899, TCL_GLOBAL_ONLY)
 45097  
 45098  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28899, TCL_GLOBAL_ONLY)
 45099  
 45100  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28899, TCL_GLOBAL_ONLY)
 45101  
 45102  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28899, TCL_GLOBAL_ONLY)
 45103  
 45104  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28899, TCL_GLOBAL_ONLY)
 45105  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 45106  		ts+14193, TCL_GLOBAL_ONLY)
 45107  
 45108  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28899, TCL_GLOBAL_ONLY)
 45109  
 45110  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28899, TCL_GLOBAL_ONLY)
 45111  
 45112  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28899, TCL_GLOBAL_ONLY)
 45113  
 45114  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28899, TCL_GLOBAL_ONLY)
 45115  
 45116  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28899, TCL_GLOBAL_ONLY)
 45117  
 45118  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28899, TCL_GLOBAL_ONLY)
 45119  
 45120  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28899, TCL_GLOBAL_ONLY)
 45121  
 45122  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 45123  		TCL_GLOBAL_ONLY)
 45124  
 45125  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28899, TCL_GLOBAL_ONLY)
 45126  
 45127  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28899, TCL_GLOBAL_ONLY)
 45128  
 45129  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28899, TCL_GLOBAL_ONLY)
 45130  
 45131  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28899, TCL_GLOBAL_ONLY)
 45132  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28899, TCL_GLOBAL_ONLY)
 45133  
 45134  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28899, TCL_GLOBAL_ONLY)
 45135  
 45136  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28899, TCL_GLOBAL_ONLY)
 45137  
 45138  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28899, TCL_GLOBAL_ONLY)
 45139  
 45140  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28899, TCL_GLOBAL_ONLY)
 45141  
 45142  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28899, TCL_GLOBAL_ONLY)
 45143  
 45144  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28899, TCL_GLOBAL_ONLY)
 45145  
 45146  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28899, TCL_GLOBAL_ONLY)
 45147  
 45148  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 45149  
 45150  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 45151  
 45152  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 45153  
 45154  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28899, TCL_GLOBAL_ONLY)
 45155  
 45156  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 45157  
 45158  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28899, TCL_GLOBAL_ONLY)
 45159  
 45160  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28899, TCL_GLOBAL_ONLY)
 45161  
 45162  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 45163  
 45164  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 45165  
 45166  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28899, TCL_GLOBAL_ONLY)
 45167  
 45168  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28899, TCL_GLOBAL_ONLY)
 45169  
 45170  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 45171  
 45172  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28899, TCL_GLOBAL_ONLY)
 45173  
 45174  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 45175  
 45176  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28899, TCL_GLOBAL_ONLY)
 45177  
 45178  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28899, TCL_GLOBAL_ONLY)
 45179  
 45180  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 45181  		func() uintptr {
 45182  			if uint32(unsafe.Sizeof(float64(0))) > uint32(unsafe.Sizeof(float64(0))) {
 45183  				return ts + 28899
 45184  			}
 45185  			return ts + 14193
 45186  		}(),
 45187  		TCL_GLOBAL_ONLY)
 45188  
 45189  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28899, TCL_GLOBAL_ONLY)
 45190  
 45191  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28899, TCL_GLOBAL_ONLY)
 45192  
 45193  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28899, TCL_GLOBAL_ONLY)
 45194  
 45195  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 45196  
 45197  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28899, TCL_GLOBAL_ONLY)
 45198  
 45199  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28899, TCL_GLOBAL_ONLY)
 45200  
 45201  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28899, TCL_GLOBAL_ONLY)
 45202  
 45203  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28899, TCL_GLOBAL_ONLY)
 45204  
 45205  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28899, TCL_GLOBAL_ONLY)
 45206  
 45207  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28899, TCL_GLOBAL_ONLY)
 45208  
 45209  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28899, TCL_GLOBAL_ONLY)
 45210  
 45211  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 45212  
 45213  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28899, TCL_GLOBAL_ONLY)
 45214  
 45215  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28899, TCL_GLOBAL_ONLY)
 45216  
 45217  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28899, TCL_GLOBAL_ONLY)
 45218  
 45219  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28899, TCL_GLOBAL_ONLY)
 45220  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28899, TCL_GLOBAL_ONLY)
 45221  
 45222  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 45223  
 45224  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 45225  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 45226  
 45227  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28899, TCL_GLOBAL_ONLY)
 45228  
 45229  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28899, TCL_GLOBAL_ONLY)
 45230  
 45231  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28899, TCL_GLOBAL_ONLY)
 45232  
 45233  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 45234  		func() uintptr {
 45235  			if 1 != 0 {
 45236  				return ts + 28899
 45237  			}
 45238  			return ts + 14193
 45239  		}(), TCL_GLOBAL_ONLY)
 45240  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 45241  		func() uintptr {
 45242  			if SQLITE_THREADSAFE == 1 {
 45243  				return ts + 28899
 45244  			}
 45245  			return ts + 14193
 45246  		}(), TCL_GLOBAL_ONLY)
 45247  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 45248  		func() uintptr {
 45249  			if SQLITE_THREADSAFE == 2 {
 45250  				return ts + 28899
 45251  			}
 45252  			return ts + 14193
 45253  		}(), TCL_GLOBAL_ONLY)
 45254  
 45255  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28899, TCL_GLOBAL_ONLY)
 45256  
 45257  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28899, TCL_GLOBAL_ONLY)
 45258  
 45259  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28899, TCL_GLOBAL_ONLY)
 45260  
 45261  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28899, TCL_GLOBAL_ONLY)
 45262  
 45263  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28899, TCL_GLOBAL_ONLY)
 45264  
 45265  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28899, TCL_GLOBAL_ONLY)
 45266  
 45267  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28899, TCL_GLOBAL_ONLY)
 45268  
 45269  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28899, TCL_GLOBAL_ONLY)
 45270  
 45271  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28899, TCL_GLOBAL_ONLY)
 45272  
 45273  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28899, TCL_GLOBAL_ONLY)
 45274  
 45275  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 45276  
 45277  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28899, TCL_GLOBAL_ONLY)
 45278  
 45279  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 45280  
 45281  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 45282  
 45283  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 45284  
 45285  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 45286  
 45287  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 45288  
 45289  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 45290  
 45291  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 45292  
 45293  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 45294  
 45295  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28899, TCL_GLOBAL_ONLY)
 45296  
 45297  	{
 45298  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45299  	}
 45300  
 45301  	{
 45302  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45303  	}
 45304  
 45305  	{
 45306  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45307  	}
 45308  
 45309  	{
 45310  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45311  	}
 45312  
 45313  	{
 45314  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45315  	}
 45316  
 45317  	{
 45318  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45319  	}
 45320  
 45321  	{
 45322  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45323  	}
 45324  
 45325  	{
 45326  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45327  	}
 45328  
 45329  	{
 45330  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45331  	}
 45332  
 45333  	{
 45334  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45335  	}
 45336  
 45337  	{
 45338  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45339  	}
 45340  
 45341  	{
 45342  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45343  	}
 45344  
 45345  	{
 45346  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45347  	}
 45348  
 45349  	{
 45350  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45351  	}
 45352  
 45353  	{
 45354  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45355  	}
 45356  
 45357  	{
 45358  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45359  	}
 45360  
 45361  	{
 45362  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45363  	}
 45364  
 45365  	{
 45366  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45367  	}
 45368  
 45369  	{
 45370  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45371  	}
 45372  
 45373  	{
 45374  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45375  	}
 45376  
 45377  	{
 45378  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 45379  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45380  
 45381  	}
 45382  
 45383  	{
 45384  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 45385  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 45386  
 45387  	}
 45388  }
 45389  
 45390  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 45391  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 45392  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 45393  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 45394  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 45395  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 45396  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 45397  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 45398  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 45399  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 45400  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 45401  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 45402  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 45403  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 45404  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 45405  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45406  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 45407  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 45408  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 45409  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 45410  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 45411  var cv___GNUC__ int32 = 1
 45412  
 45413  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 45414  	set_options(tls, interp)
 45415  	return TCL_OK
 45416  }
 45417  
 45418  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 45419  	var i int32
 45420  	var sz int32
 45421  	sz = int32(libc.Xstrlen(tls, z))
 45422  	for i = sz - 1; i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 45423  	}
 45424  	if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 45425  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint32(4))
 45426  	}
 45427  }
 45428  
 45429  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 45430  	var rc int32 = SQLITE_ERROR
 45431  
 45432  	rc = libc.Xaccess(tls, zFile, F_OK)
 45433  	if rc != 0 {
 45434  		if *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) == ENOENT {
 45435  			if pbExists != 0 {
 45436  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 45437  			}
 45438  			rc = SQLITE_OK
 45439  		}
 45440  	} else {
 45441  		if pbExists != 0 {
 45442  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 45443  		}
 45444  		rc = libc.Xunlink(tls, zFile)
 45445  	}
 45446  	return rc
 45447  }
 45448  
 45449  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 45450  	bp := tls.Alloc(116)
 45451  	defer tls.Free(116)
 45452  
 45453  	var zBuf uintptr
 45454  	var nBuf int32
 45455  	var rc int32 = 0
 45456  	var i int32
 45457  
 45458  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 45459  
 45460  	*(*[6]MFile)(unsafe.Pointer(bp + 40)) = [6]MFile{
 45461  		{FzFmt: ts + 30634},
 45462  		{FzFmt: ts + 30641},
 45463  		{FzFmt: ts + 30656},
 45464  		{FzFmt: ts + 30634, Fb83: 1},
 45465  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 45466  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 45467  	}
 45468  
 45469  	var pVfs uintptr = uintptr(0)
 45470  
 45471  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 45472  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 45473  	if zBuf == uintptr(0) {
 45474  		return SQLITE_NOMEM
 45475  	}
 45476  
 45477  	for i = 0; rc == 0 && uint32(i) < uint32(unsafe.Sizeof([4]uintptr{}))/uint32(unsafe.Sizeof(uintptr(0))); i++ {
 45478  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*4)), libc.VaList(bp, zFile))
 45479  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45480  		if rc == 0 && i != 0 {
 45481  			sqlite3Delete83Name(tls, zBuf)
 45482  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 45483  		}
 45484  	}
 45485  
 45486  	for i = 0; rc == 0 && uint32(i) < uint32(unsafe.Sizeof([6]MFile{}))/uint32(unsafe.Sizeof(MFile{})); i++ {
 45487  		var p uintptr = bp + 40 + uintptr(i)*12
 45488  		var iChunk int32
 45489  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 45490  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 45491  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 45492  				sqlite3Delete83Name(tls, zBuf)
 45493  			}
 45494  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+112)
 45495  			if *(*int32)(unsafe.Pointer(bp + 112)) == 0 || rc != 0 {
 45496  				break
 45497  			}
 45498  		}
 45499  	}
 45500  
 45501  	sqlite3.Xsqlite3_free(tls, zBuf)
 45502  	return func() int32 {
 45503  		if rc != 0 {
 45504  			return SQLITE_ERROR
 45505  		}
 45506  		return SQLITE_OK
 45507  	}()
 45508  }
 45509  
 45510  type MFile = struct {
 45511  	FzFmt    uintptr
 45512  	FiOffset int32
 45513  	Fb83     int32
 45514  }
 45515  
 45516  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 45517  	return TCL_OK
 45518  }
 45519  
 45520  type devsym_file1 = struct {
 45521  	Fbase  sqlite3_file
 45522  	FpReal uintptr
 45523  }
 45524  
 45525  type devsym_file = devsym_file1
 45526  
 45527  type DevsymGlobal = struct {
 45528  	FpVfs        uintptr
 45529  	FiDeviceChar int32
 45530  	FiSectorSize int32
 45531  	FnWriteCrash int32
 45532  }
 45533  
 45534  var g1 = DevsymGlobal{FiSectorSize: 512}
 45535  
 45536  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 45537  	var p uintptr = pFile
 45538  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45539  	return SQLITE_OK
 45540  }
 45541  
 45542  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45543  	var p uintptr = pFile
 45544  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45545  }
 45546  
 45547  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45548  	var p uintptr = pFile
 45549  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45550  }
 45551  
 45552  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 45553  	var p uintptr = pFile
 45554  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 45555  }
 45556  
 45557  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 45558  	var p uintptr = pFile
 45559  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 45560  }
 45561  
 45562  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 45563  	var p uintptr = pFile
 45564  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 45565  }
 45566  
 45567  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45568  	var p uintptr = pFile
 45569  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45570  }
 45571  
 45572  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 45573  	var p uintptr = pFile
 45574  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 45575  }
 45576  
 45577  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 45578  	var p uintptr = pFile
 45579  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 45580  }
 45581  
 45582  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 45583  	var p uintptr = pFile
 45584  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 45585  }
 45586  
 45587  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45588  	return g1.FiSectorSize
 45589  }
 45590  
 45591  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45592  	return g1.FiDeviceChar
 45593  }
 45594  
 45595  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 45596  	var p uintptr = pFile
 45597  	return (*struct {
 45598  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 45599  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmLock})).f(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, ofst, n, flags)
 45600  }
 45601  
 45602  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 45603  	var p uintptr = pFile
 45604  	return (*struct {
 45605  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 45606  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmMap})).f(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, iRegion, szRegion, isWrite, pp)
 45607  }
 45608  
 45609  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 45610  	var p uintptr = pFile
 45611  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmBarrier})).f(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45612  }
 45613  
 45614  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 45615  	var p uintptr = pFile
 45616  	return (*struct {
 45617  		f func(*libc.TLS, uintptr, int32) int32
 45618  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmUnmap})).f(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, delFlag)
 45619  }
 45620  
 45621  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45622  	var rc int32
 45623  	var p uintptr = pFile
 45624  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*8
 45625  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45626  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45627  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 45628  	}
 45629  	return rc
 45630  }
 45631  
 45632  var devsym_io_methods = sqlite3_io_methods{
 45633  	FiVersion:               2,
 45634  	FxClose:                 0,
 45635  	FxRead:                  0,
 45636  	FxWrite:                 0,
 45637  	FxTruncate:              0,
 45638  	FxSync:                  0,
 45639  	FxFileSize:              0,
 45640  	FxLock:                  0,
 45641  	FxUnlock:                0,
 45642  	FxCheckReservedLock:     0,
 45643  	FxFileControl:           0,
 45644  	FxSectorSize:            0,
 45645  	FxDeviceCharacteristics: 0,
 45646  	FxShmMap:                0,
 45647  	FxShmLock:               0,
 45648  	FxShmBarrier:            0,
 45649  	FxShmUnmap:              0,
 45650  }
 45651  
 45652  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 45653  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 45654  }
 45655  
 45656  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 45657  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 45658  }
 45659  
 45660  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 45661  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 45662  }
 45663  
 45664  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 45665  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 45666  }
 45667  
 45668  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 45669  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 45670  }
 45671  
 45672  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 45673  	return (*struct {
 45674  		f func(*libc.TLS, uintptr, uintptr) int32
 45675  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 45676  }
 45677  
 45678  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45679  	var p uintptr = pFile
 45680  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45681  }
 45682  
 45683  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45684  	var p uintptr = pFile
 45685  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45686  }
 45687  
 45688  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45689  	var p uintptr = pFile
 45690  	if g1.FnWriteCrash > 0 {
 45691  		g1.FnWriteCrash--
 45692  		if g1.FnWriteCrash == 0 {
 45693  			libc.Xabort(tls)
 45694  		}
 45695  	}
 45696  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45697  }
 45698  
 45699  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45700  	var rc int32
 45701  	var p uintptr = pFile
 45702  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*8
 45703  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45704  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45705  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 45706  	}
 45707  	return rc
 45708  }
 45709  
 45710  var writecrash_io_methods = sqlite3_io_methods{
 45711  	FiVersion:               2,
 45712  	FxClose:                 0,
 45713  	FxRead:                  0,
 45714  	FxWrite:                 0,
 45715  	FxTruncate:              0,
 45716  	FxSync:                  0,
 45717  	FxFileSize:              0,
 45718  	FxLock:                  0,
 45719  	FxUnlock:                0,
 45720  	FxCheckReservedLock:     0,
 45721  	FxFileControl:           0,
 45722  	FxSectorSize:            0,
 45723  	FxDeviceCharacteristics: 0,
 45724  	FxShmMap:                0,
 45725  	FxShmLock:               0,
 45726  	FxShmBarrier:            0,
 45727  	FxShmUnmap:              0,
 45728  }
 45729  
 45730  var devsym_vfs = sqlite3_vfs{
 45731  	FiVersion:      2,
 45732  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45733  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45734  	FzName:         ts + 30667,
 45735  	FxOpen:         0,
 45736  	FxDelete:       0,
 45737  	FxAccess:       0,
 45738  	FxFullPathname: 0,
 45739  	FxRandomness:   0,
 45740  	FxSleep:        0,
 45741  	FxCurrentTime:  0,
 45742  }
 45743  
 45744  var writecrash_vfs = sqlite3_vfs{
 45745  	FiVersion:      2,
 45746  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45747  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45748  	FzName:         ts + 30674,
 45749  	FxOpen:         0,
 45750  	FxDelete:       0,
 45751  	FxAccess:       0,
 45752  	FxFullPathname: 0,
 45753  	FxRandomness:   0,
 45754  	FxSleep:        0,
 45755  	FxCurrentTime:  0,
 45756  }
 45757  
 45758  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 45759  	if g1.FpVfs == uintptr(0) {
 45760  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45761  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45762  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45763  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45764  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45765  	}
 45766  	if iDeviceChar >= 0 {
 45767  		g1.FiDeviceChar = iDeviceChar
 45768  	} else {
 45769  		g1.FiDeviceChar = 0
 45770  	}
 45771  	if iSectorSize >= 0 {
 45772  		g1.FiSectorSize = iSectorSize
 45773  	} else {
 45774  		g1.FiSectorSize = 512
 45775  	}
 45776  }
 45777  
 45778  func devsym_unregister(tls *libc.TLS) {
 45779  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 45780  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 45781  	g1.FpVfs = uintptr(0)
 45782  	g1.FiDeviceChar = 0
 45783  	g1.FiSectorSize = 0
 45784  }
 45785  
 45786  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 45787  	if g1.FpVfs == uintptr(0) {
 45788  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45789  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45790  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45791  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45792  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45793  	}
 45794  	g1.FnWriteCrash = nWrite
 45795  }
 45796  
 45797  type Tcl_StatBuf = stat
 45798  
 45799  type stat64 = struct {
 45800  	Fst_dev     uint64
 45801  	F__pad1     uint32
 45802  	F__st_ino   uint32
 45803  	Fst_mode    uint32
 45804  	Fst_nlink   uint32
 45805  	Fst_uid     uint32
 45806  	Fst_gid     uint32
 45807  	Fst_rdev    uint64
 45808  	F__pad2     uint32
 45809  	Fst_size    int64
 45810  	Fst_blksize int32
 45811  	Fst_blocks  int64
 45812  	Fst_atim    struct {
 45813  		Ftv_sec  int32
 45814  		Ftv_nsec int32
 45815  	}
 45816  	Fst_mtim struct {
 45817  		Ftv_sec  int32
 45818  		Ftv_nsec int32
 45819  	}
 45820  	Fst_ctim struct {
 45821  		Ftv_sec  int32
 45822  		Ftv_nsec int32
 45823  	}
 45824  	Fst_ino uint64
 45825  }
 45826  
 45827  type statx_timestamp = struct {
 45828  	Ftv_sec     int64
 45829  	Ftv_nsec    uint32
 45830  	F__reserved int32
 45831  }
 45832  
 45833  type statx = struct {
 45834  	Fstx_mask            uint32
 45835  	Fstx_blksize         uint32
 45836  	Fstx_attributes      uint64
 45837  	Fstx_nlink           uint32
 45838  	Fstx_uid             uint32
 45839  	Fstx_gid             uint32
 45840  	Fstx_mode            uint16
 45841  	F__spare0            [1]uint16
 45842  	Fstx_ino             uint64
 45843  	Fstx_size            uint64
 45844  	Fstx_blocks          uint64
 45845  	Fstx_attributes_mask uint64
 45846  	Fstx_atime           struct {
 45847  		Ftv_sec     int64
 45848  		Ftv_nsec    uint32
 45849  		F__reserved int32
 45850  	}
 45851  	Fstx_btime struct {
 45852  		Ftv_sec     int64
 45853  		Ftv_nsec    uint32
 45854  		F__reserved int32
 45855  	}
 45856  	Fstx_ctime struct {
 45857  		Ftv_sec     int64
 45858  		Ftv_nsec    uint32
 45859  		F__reserved int32
 45860  	}
 45861  	Fstx_mtime struct {
 45862  		Ftv_sec     int64
 45863  		Ftv_nsec    uint32
 45864  		F__reserved int32
 45865  	}
 45866  	Fstx_rdev_major uint32
 45867  	Fstx_rdev_minor uint32
 45868  	Fstx_dev_major  uint32
 45869  	Fstx_dev_minor  uint32
 45870  	Fstx_mnt_id     uint64
 45871  	F__spare2       uint64
 45872  	F__spare3       [12]uint64
 45873  }
 45874  
 45875  type flock64 = struct {
 45876  	Fl_type   int16
 45877  	Fl_whence int16
 45878  	Fl_start  int64
 45879  	Fl_len    int64
 45880  	Fl_pid    int32
 45881  }
 45882  
 45883  type iovec = struct {
 45884  	Fiov_base uintptr
 45885  	Fiov_len  size_t
 45886  }
 45887  
 45888  type f_owner_ex = struct {
 45889  	Ftype uint32
 45890  	Fpid  int32
 45891  }
 45892  
 45893  type file_handle = struct {
 45894  	F__ccgo_pad1  [0]uint32
 45895  	Fhandle_bytes uint32
 45896  	Fhandle_type  int32
 45897  }
 45898  
 45899  type dirent64 = struct {
 45900  	Fd_ino       uint64
 45901  	Fd_off       int64
 45902  	Fd_reclen    uint16
 45903  	Fd_type      uint8
 45904  	Fd_name      [256]int8
 45905  	F__ccgo_pad1 [1]byte
 45906  }
 45907  
 45908  type fs_vtab1 = struct {
 45909  	Fbase sqlite3_vtab
 45910  	Fdb   uintptr
 45911  	FzDb  uintptr
 45912  	FzTbl uintptr
 45913  }
 45914  
 45915  type fs_vtab = fs_vtab1
 45916  type fs_cursor1 = struct {
 45917  	Fbase   sqlite3_vtab_cursor
 45918  	FpStmt  uintptr
 45919  	FzBuf   uintptr
 45920  	FnBuf   int32
 45921  	FnAlloc int32
 45922  }
 45923  
 45924  type fs_cursor = fs_cursor1
 45925  
 45926  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 45927  
 45928  type FsdirVtab = FsdirVtab1
 45929  type FsdirCsr1 = struct {
 45930  	Fbase   sqlite3_vtab_cursor
 45931  	FzDir   uintptr
 45932  	FpDir   uintptr
 45933  	FiRowid sqlite3_int64
 45934  	FpEntry uintptr
 45935  }
 45936  
 45937  type FsdirCsr = FsdirCsr1
 45938  
 45939  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45940  	var pTab uintptr
 45941  
 45942  	if argc != 3 {
 45943  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45944  		return SQLITE_ERROR
 45945  	}
 45946  
 45947  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 45948  	if !(pTab != 0) {
 45949  		return SQLITE_NOMEM
 45950  	}
 45951  	libc.Xmemset(tls, pTab, 0, uint32(unsafe.Sizeof(FsdirVtab{})))
 45952  
 45953  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45954  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 45955  
 45956  	return SQLITE_OK
 45957  }
 45958  
 45959  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 45960  	sqlite3.Xsqlite3_free(tls, pVtab)
 45961  	return SQLITE_OK
 45962  }
 45963  
 45964  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45965  	var ii int32
 45966  
 45967  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45968  
 45969  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45970  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45971  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn == 0 && (*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 45972  			var pUsage uintptr
 45973  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45974  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 45975  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45976  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45977  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45978  			break
 45979  		}
 45980  	}
 45981  
 45982  	return SQLITE_OK
 45983  }
 45984  
 45985  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45986  	var pCur uintptr
 45987  
 45988  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(FsdirCsr{}))+uint32(256)))
 45989  	if pCur == uintptr(0) {
 45990  		return SQLITE_NOMEM
 45991  	}
 45992  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(FsdirCsr{})))
 45993  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45994  	return SQLITE_OK
 45995  }
 45996  
 45997  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 45998  	var pCur uintptr = cur
 45999  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 46000  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 46001  	}
 46002  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 46003  	sqlite3.Xsqlite3_free(tls, pCur)
 46004  	return SQLITE_OK
 46005  }
 46006  
 46007  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 46008  	var pCsr uintptr = cur
 46009  
 46010  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46011  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46012  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 46013  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46014  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46015  		}
 46016  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 46017  	}
 46018  
 46019  	return SQLITE_OK
 46020  }
 46021  
 46022  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46023  	var pCsr uintptr = pVtabCursor
 46024  	var zDir uintptr
 46025  	var nDir int32
 46026  
 46027  	if idxNum != 1 || argc != 1 {
 46028  		return SQLITE_ERROR
 46029  	}
 46030  
 46031  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 46032  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46033  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 46034  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 46035  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 46036  	}
 46037  
 46038  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46039  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46040  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 46041  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 46042  		return SQLITE_NOMEM
 46043  	}
 46044  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint32(nDir+1))
 46045  
 46046  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 46047  	return fsdirNext1(tls, pVtabCursor)
 46048  }
 46049  
 46050  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 46051  	var pCsr uintptr = cur
 46052  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 46053  }
 46054  
 46055  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46056  	var pCsr uintptr = cur
 46057  	switch i {
 46058  	case 0:
 46059  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 46060  		break
 46061  
 46062  	case 1:
 46063  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+19, -1, libc.UintptrFromInt32(-1))
 46064  		break
 46065  
 46066  	default:
 46067  	}
 46068  
 46069  	return SQLITE_OK
 46070  }
 46071  
 46072  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46073  	var pCsr uintptr = cur
 46074  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 46075  	return SQLITE_OK
 46076  }
 46077  
 46078  type FstreeVtab1 = struct {
 46079  	Fbase sqlite3_vtab
 46080  	Fdb   uintptr
 46081  }
 46082  
 46083  type FstreeVtab = FstreeVtab1
 46084  type FstreeCsr1 = struct {
 46085  	Fbase  sqlite3_vtab_cursor
 46086  	FpStmt uintptr
 46087  	Ffd    int32
 46088  }
 46089  
 46090  type FstreeCsr = FstreeCsr1
 46091  
 46092  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46093  	var pTab uintptr
 46094  
 46095  	if argc != 3 {
 46096  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46097  		return SQLITE_ERROR
 46098  	}
 46099  
 46100  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 46101  	if !(pTab != 0) {
 46102  		return SQLITE_NOMEM
 46103  	}
 46104  	libc.Xmemset(tls, pTab, 0, uint32(unsafe.Sizeof(FstreeVtab{})))
 46105  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 46106  
 46107  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 46108  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 46109  
 46110  	return SQLITE_OK
 46111  }
 46112  
 46113  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46114  	sqlite3.Xsqlite3_free(tls, pVtab)
 46115  	return SQLITE_OK
 46116  }
 46117  
 46118  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46119  	var ii int32
 46120  
 46121  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46122  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46123  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn == 0 && (*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable != 0 && (int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB ||
 46124  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 46125  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 46126  			var pUsage uintptr
 46127  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46128  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 46129  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46130  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 46131  			return SQLITE_OK
 46132  		}
 46133  	}
 46134  
 46135  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 46136  	return SQLITE_OK
 46137  }
 46138  
 46139  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46140  	var pCur uintptr
 46141  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 46142  	if pCur == uintptr(0) {
 46143  		return SQLITE_NOMEM
 46144  	}
 46145  	libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(FstreeCsr{})))
 46146  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 46147  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46148  	return SQLITE_OK
 46149  }
 46150  
 46151  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 46152  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 46153  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 46154  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 46155  	}
 46156  }
 46157  
 46158  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 46159  	var pCsr uintptr = cur
 46160  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46161  	fstreeCloseFd(tls, pCsr)
 46162  	sqlite3.Xsqlite3_free(tls, pCsr)
 46163  	return SQLITE_OK
 46164  }
 46165  
 46166  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 46167  	var pCsr uintptr = cur
 46168  	var rc int32
 46169  
 46170  	fstreeCloseFd(tls, pCsr)
 46171  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46172  	if rc != SQLITE_ROW {
 46173  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46174  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46175  	} else {
 46176  		rc = SQLITE_OK
 46177  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 46178  	}
 46179  
 46180  	return rc
 46181  }
 46182  
 46183  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46184  	bp := tls.Alloc(2)
 46185  	defer tls.Free(2)
 46186  
 46187  	var pCsr uintptr = pVtabCursor
 46188  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 46189  	var rc int32
 46190  	var zSql uintptr = ts + 30750
 46191  	var zRoot uintptr
 46192  	var nRoot int32
 46193  	var zPrefix uintptr
 46194  	var nPrefix int32
 46195  	var zDir uintptr
 46196  	var nDir int32
 46197  	*(*[2]int8)(unsafe.Pointer(bp)) = [2]int8{int8(0), int8(0)}
 46198  
 46199  	zRoot = ts + 30982
 46200  	nRoot = 1
 46201  	zPrefix = ts + 584
 46202  	nPrefix = 0
 46203  
 46204  	zDir = zRoot
 46205  	nDir = nRoot
 46206  
 46207  	fstreeCloseFd(tls, pCsr)
 46208  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 46209  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 46210  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+4, uintptr(0))
 46211  	if rc != SQLITE_OK {
 46212  		return rc
 46213  	}
 46214  
 46215  	if idxNum != 0 {
 46216  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46217  		switch idxNum {
 46218  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 46219  			*(*int8)(unsafe.Pointer(bp)) = int8('*')
 46220  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('?')
 46221  			break
 46222  			fallthrough
 46223  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 46224  			*(*int8)(unsafe.Pointer(bp)) = int8('_')
 46225  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('%')
 46226  			break
 46227  		}
 46228  
 46229  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 46230  			var i int32
 46231  			for i = nPrefix; *(*int8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 46232  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*int8)(unsafe.Pointer(bp))) || int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == int32(*(*int8)(unsafe.Pointer(bp + 1))) {
 46233  					break
 46234  				}
 46235  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 46236  					nDir = i
 46237  				}
 46238  			}
 46239  			zDir = zQuery
 46240  		}
 46241  	}
 46242  	if nDir == 0 {
 46243  		nDir = 1
 46244  	}
 46245  
 46246  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 46247  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 46248  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 46249  
 46250  	return fstreeNext(tls, pVtabCursor)
 46251  }
 46252  
 46253  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 46254  	var pCsr uintptr = cur
 46255  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 46256  }
 46257  
 46258  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46259  	bp := tls.Alloc(96)
 46260  	defer tls.Free(96)
 46261  
 46262  	var pCsr uintptr = cur
 46263  	if i == 0 {
 46264  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 46265  	} else {
 46266  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 46267  
 46268  		if (*stat)(unsafe.Pointer(bp)).Fst_mode&uint32(0170000) == uint32(0100000) {
 46269  			if i == 1 {
 46270  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 46271  			} else {
 46272  				var nRead int32
 46273  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode+uint32(1)))
 46274  				if !(aBuf != 0) {
 46275  					return SQLITE_NOMEM
 46276  				}
 46277  				nRead = libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, (*stat)(unsafe.Pointer(bp)).Fst_mode)
 46278  				if uint32(nRead) != (*stat)(unsafe.Pointer(bp)).Fst_mode {
 46279  					return SQLITE_IOERR
 46280  				}
 46281  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 46282  				sqlite3.Xsqlite3_free(tls, aBuf)
 46283  			}
 46284  		}
 46285  	}
 46286  
 46287  	return SQLITE_OK
 46288  }
 46289  
 46290  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46291  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 46292  	return SQLITE_OK
 46293  }
 46294  
 46295  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 46296  	var pVtab uintptr
 46297  	var nByte int32
 46298  	var zTbl uintptr
 46299  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*4))
 46300  
 46301  	if argc != 4 {
 46302  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 46303  		return SQLITE_ERROR
 46304  	}
 46305  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*4))
 46306  
 46307  	nByte = int32(uint32(unsafe.Sizeof(fs_vtab{})) + uint32(int32(libc.Xstrlen(tls, zTbl))) + uint32(1) + uint32(int32(libc.Xstrlen(tls, zDb))) + uint32(1))
 46308  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 46309  	if !(pVtab != 0) {
 46310  		return SQLITE_NOMEM
 46311  	}
 46312  
 46313  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*24
 46314  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+size_t(1))
 46315  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 46316  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 46317  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 46318  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 46319  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 46320  
 46321  	return SQLITE_OK
 46322  }
 46323  
 46324  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 46325  	sqlite3.Xsqlite3_free(tls, pVtab)
 46326  	return SQLITE_OK
 46327  }
 46328  
 46329  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 46330  	var pCur uintptr
 46331  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 46332  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 46333  	return SQLITE_OK
 46334  }
 46335  
 46336  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 46337  	var pCur uintptr = cur
 46338  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46339  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 46340  	sqlite3.Xsqlite3_free(tls, pCur)
 46341  	return SQLITE_OK
 46342  }
 46343  
 46344  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 46345  	var pCur uintptr = cur
 46346  	var rc int32
 46347  
 46348  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 46349  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 46350  		rc = SQLITE_OK
 46351  	}
 46352  
 46353  	return rc
 46354  }
 46355  
 46356  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 46357  	bp := tls.Alloc(32)
 46358  	defer tls.Free(32)
 46359  
 46360  	var rc int32
 46361  	var pCur uintptr = pVtabCursor
 46362  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 46363  
 46364  	if idxNum == 1 {
 46365  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 46366  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 46367  		if !(zStmt != 0) {
 46368  			return SQLITE_NOMEM
 46369  		}
 46370  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+4, uintptr(0))
 46371  		sqlite3.Xsqlite3_free(tls, zStmt)
 46372  		if rc == SQLITE_OK {
 46373  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 46374  		}
 46375  	} else {
 46376  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp+16, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 46377  		if !(zStmt != 0) {
 46378  			return SQLITE_NOMEM
 46379  		}
 46380  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+4, uintptr(0))
 46381  		sqlite3.Xsqlite3_free(tls, zStmt)
 46382  	}
 46383  
 46384  	if rc == SQLITE_OK {
 46385  		rc = fsNext(tls, pVtabCursor)
 46386  	}
 46387  	return rc
 46388  }
 46389  
 46390  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 46391  	bp := tls.Alloc(96)
 46392  	defer tls.Free(96)
 46393  
 46394  	var pCur uintptr = cur
 46395  
 46396  	if i == 0 {
 46397  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 46398  	} else {
 46399  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 46400  
 46401  		var fd int32
 46402  		var n int32
 46403  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 46404  		if fd < 0 {
 46405  			return SQLITE_IOERR
 46406  		}
 46407  		libc.Xfstat(tls, fd, bp)
 46408  
 46409  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= int64((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 46410  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 46411  			var zNew uintptr
 46412  			if nNew < int64(1024) {
 46413  				nNew = int64(1024)
 46414  			}
 46415  
 46416  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 46417  			if zNew == uintptr(0) {
 46418  				libc.Xclose(tls, fd)
 46419  				return SQLITE_NOMEM
 46420  			}
 46421  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 46422  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 46423  		}
 46424  
 46425  		n = libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint32((*stat)(unsafe.Pointer(bp)).Fst_size))
 46426  		libc.Xclose(tls, fd)
 46427  		if int64(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 46428  			return SQLITE_ERROR
 46429  		}
 46430  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 46431  		*(*int8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = int8(0)
 46432  
 46433  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 46434  	}
 46435  	return SQLITE_OK
 46436  }
 46437  
 46438  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 46439  	var pCur uintptr = cur
 46440  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 46441  	return SQLITE_OK
 46442  }
 46443  
 46444  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 46445  	var pCur uintptr = cur
 46446  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 46447  }
 46448  
 46449  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 46450  	var ii int32
 46451  
 46452  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 46453  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 46454  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 46455  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 46456  			var pUsage uintptr
 46457  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 46458  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 46459  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 46460  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 46461  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 46462  			break
 46463  		}
 46464  	}
 46465  
 46466  	return SQLITE_OK
 46467  }
 46468  
 46469  var fsModule = sqlite3_module{
 46470  	FxCreate:     0,
 46471  	FxConnect:    0,
 46472  	FxBestIndex:  0,
 46473  	FxDisconnect: 0,
 46474  	FxDestroy:    0,
 46475  	FxOpen:       0,
 46476  	FxClose:      0,
 46477  	FxFilter:     0,
 46478  	FxNext:       0,
 46479  	FxEof:        0,
 46480  	FxColumn:     0,
 46481  	FxRowid:      0,
 46482  }
 46483  
 46484  var fsdirModule = sqlite3_module{
 46485  	FxCreate:     0,
 46486  	FxConnect:    0,
 46487  	FxBestIndex:  0,
 46488  	FxDisconnect: 0,
 46489  	FxDestroy:    0,
 46490  	FxOpen:       0,
 46491  	FxClose:      0,
 46492  	FxFilter:     0,
 46493  	FxNext:       0,
 46494  	FxEof:        0,
 46495  	FxColumn:     0,
 46496  	FxRowid:      0,
 46497  }
 46498  
 46499  var fstreeModule = sqlite3_module{
 46500  	FxCreate:     0,
 46501  	FxConnect:    0,
 46502  	FxBestIndex:  0,
 46503  	FxDisconnect: 0,
 46504  	FxDestroy:    0,
 46505  	FxOpen:       0,
 46506  	FxClose:      0,
 46507  	FxFilter:     0,
 46508  	FxNext:       0,
 46509  	FxEof:        0,
 46510  	FxColumn:     0,
 46511  	FxRowid:      0,
 46512  }
 46513  
 46514  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 46515  	bp := tls.Alloc(4)
 46516  	defer tls.Free(4)
 46517  
 46518  	if objc != 2 {
 46519  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46520  		return TCL_ERROR
 46521  	}
 46522  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 46523  		return TCL_ERROR
 46524  	}
 46525  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 46526  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 46527  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 46528  	return TCL_OK
 46529  }
 46530  
 46531  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 46532  	var i int32
 46533  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd6))/uint32(unsafe.Sizeof(struct {
 46534  		FzName      uintptr
 46535  		FxProc      uintptr
 46536  		FclientData uintptr
 46537  	}{})); i++ {
 46538  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 46539  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 46540  	}
 46541  	return TCL_OK
 46542  }
 46543  
 46544  var aObjCmd6 = [1]struct {
 46545  	FzName      uintptr
 46546  	FxProc      uintptr
 46547  	FclientData uintptr
 46548  }{
 46549  	{FzName: ts + 31065, FxProc: 0},
 46550  }
 46551  
 46552  type fd_set2 = struct{ F__fds_bits [32]int32 }
 46553  
 46554  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 46555  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 46556  	if !(z != 0) && nByte > 0 {
 46557  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 46558  	}
 46559  	return z
 46560  }
 46561  
 46562  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46563  	bp := tls.Alloc(1004)
 46564  	defer tls.Free(1004)
 46565  
 46566  	var iMin int32
 46567  	var iMax int32
 46568  	var n int32
 46569  
 46570  	var i int32
 46571  
 46572  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46573  	if iMin < 0 {
 46574  		iMin = 0
 46575  	}
 46576  	if uint32(iMin) >= uint32(unsafe.Sizeof([1000]uint8{})) {
 46577  		iMin = int32(uint32(unsafe.Sizeof([1000]uint8{})) - uint32(1))
 46578  	}
 46579  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 46580  	if iMax < iMin {
 46581  		iMax = iMin
 46582  	}
 46583  	if uint32(iMax) >= uint32(unsafe.Sizeof([1000]uint8{})) {
 46584  		iMax = int32(uint32(unsafe.Sizeof([1000]uint8{})) - uint32(1))
 46585  	}
 46586  	n = iMin
 46587  	if iMax > iMin {
 46588  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 46589  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 46590  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 46591  	}
 46592  
 46593  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 46594  	for i = 0; i < n; i++ {
 46595  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint32(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint32(unsafe.Sizeof(zSrc))-uint32(1))]
 46596  	}
 46597  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 46598  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 46599  }
 46600  
 46601  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 46602  
 46603  var test_destructor_count_var int32 = 0
 46604  
 46605  func destructor(tls *libc.TLS, p uintptr) {
 46606  	var zVal uintptr = p
 46607  
 46608  	zVal--
 46609  	sqlite3.Xsqlite3_free(tls, zVal)
 46610  	test_destructor_count_var--
 46611  }
 46612  
 46613  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46614  	var zVal uintptr
 46615  	var len int32
 46616  
 46617  	test_destructor_count_var++
 46618  
 46619  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46620  		return
 46621  	}
 46622  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46623  	zVal = testContextMalloc(tls, pCtx, len+3)
 46624  	if !(zVal != 0) {
 46625  		return
 46626  	}
 46627  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 46628  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 46629  	zVal++
 46630  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint32(len))
 46631  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46632  }
 46633  
 46634  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46635  	var zVal uintptr
 46636  	var len int32
 46637  
 46638  	test_destructor_count_var++
 46639  
 46640  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 46641  		return
 46642  	}
 46643  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46644  	zVal = testContextMalloc(tls, pCtx, len+3)
 46645  	if !(zVal != 0) {
 46646  		return
 46647  	}
 46648  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 46649  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 46650  	zVal++
 46651  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint32(len))
 46652  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 46653  }
 46654  
 46655  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46656  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 46657  }
 46658  
 46659  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46660  }
 46661  
 46662  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 46663  	var z uintptr
 46664  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 46665  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 46666  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 46667  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 46668  }
 46669  
 46670  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 46671  	sqlite3.Xsqlite3_free(tls, p)
 46672  }
 46673  
 46674  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46675  	var i int32
 46676  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 46677  	if !(zRet != 0) {
 46678  		return
 46679  	}
 46680  	libc.Xmemset(tls, zRet, 0, uint32(nArg*2))
 46681  	for i = 0; i < nArg; i++ {
 46682  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 46683  		if z != 0 {
 46684  			var n int32
 46685  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 46686  			if zAux != 0 {
 46687  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('1')
 46688  
 46689  			} else {
 46690  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('0')
 46691  			}
 46692  			n = int32(libc.Xstrlen(tls, z)) + 1
 46693  			zAux = testContextMalloc(tls, pCtx, n)
 46694  			if zAux != 0 {
 46695  				libc.Xmemcpy(tls, zAux, z, uint32(n))
 46696  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46697  			}
 46698  			*(*int8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = int8(' ')
 46699  		}
 46700  	}
 46701  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 46702  }
 46703  
 46704  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46705  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 46706  	if nArg == 2 {
 46707  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 46708  	}
 46709  }
 46710  
 46711  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46712  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 46713  	if pCounter == uintptr(0) {
 46714  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 46715  		if pCounter == uintptr(0) {
 46716  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46717  			return
 46718  		}
 46719  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46720  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46721  	} else {
 46722  		*(*int32)(unsafe.Pointer(pCounter))++
 46723  	}
 46724  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 46725  }
 46726  
 46727  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46728  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46729  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46730  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46731  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46732  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 46733  }
 46734  
 46735  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46736  	bp := tls.Alloc(12)
 46737  	defer tls.Free(12)
 46738  
 46739  	var rc int32
 46740  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 46741  	var zSql uintptr
 46742  
 46743  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46744  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 46745  	if rc == SQLITE_OK {
 46746  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46747  		if rc == SQLITE_ROW {
 46748  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 46749  		}
 46750  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46751  	}
 46752  	if rc != 0 {
 46753  		var zErr uintptr
 46754  
 46755  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 46756  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46757  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 46758  	}
 46759  }
 46760  
 46761  func testHexChar(tls *libc.TLS, c int8) int32 {
 46762  	if int32(c) >= '0' && int32(c) <= '9' {
 46763  		return int32(c) - '0'
 46764  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 46765  		return int32(c) - 'a' + 10
 46766  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 46767  		return int32(c) - 'A' + 10
 46768  	}
 46769  	return 0
 46770  }
 46771  
 46772  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 46773  	for *(*int8)(unsafe.Pointer(zIn)) != 0 && *(*int8)(unsafe.Pointer(zIn + 1)) != 0 {
 46774  		*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = int8(testHexChar(tls, *(*int8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*int8)(unsafe.Pointer(zIn + 1))))
 46775  		zIn += uintptr(2)
 46776  	}
 46777  }
 46778  
 46779  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46780  	var n int32
 46781  	var zIn uintptr
 46782  	var zOut uintptr
 46783  
 46784  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46785  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46786  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46787  	if zOut == uintptr(0) {
 46788  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46789  	} else {
 46790  		testHexToBin(tls, zIn, zOut)
 46791  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46792  	}
 46793  }
 46794  
 46795  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46796  	var n int32
 46797  	var zIn uintptr
 46798  	var zOut uintptr
 46799  
 46800  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46801  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46802  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46803  	if zOut == uintptr(0) {
 46804  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46805  	} else {
 46806  		testHexToBin(tls, zIn, zOut)
 46807  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46808  	}
 46809  }
 46810  
 46811  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46812  	var n int32
 46813  	var zIn uintptr
 46814  	var zOut uintptr
 46815  
 46816  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46817  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46818  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46819  	if zOut == uintptr(0) {
 46820  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46821  	} else {
 46822  		testHexToBin(tls, zIn, zOut)
 46823  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46824  	}
 46825  }
 46826  
 46827  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46828  	bp := tls.Alloc(28)
 46829  	defer tls.Free(28)
 46830  
 46831  	var i int32
 46832  	var bigEndian int32
 46833  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 46834  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 46835  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46836  	for i = 0; i < 8; i++ {
 46837  		if bigEndian != 0 {
 46838  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46839  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46840  		} else {
 46841  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46842  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46843  		}
 46844  	}
 46845  	*(*int8)(unsafe.Pointer(bp + 8 + 16)) = int8(0)
 46846  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 46847  }
 46848  
 46849  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46850  	bp := tls.Alloc(56)
 46851  	defer tls.Free(56)
 46852  
 46853  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46854  	var pRec uintptr
 46855  	var pEndHdr uintptr
 46856  	var pHdr uintptr
 46857  	var pBody uintptr
 46858  
 46859  	var iIdx int32
 46860  	var iCurrent int32 = 0
 46861  
 46862  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46863  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 46864  
 46865  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 46866  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 46867  
 46868  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 46869  		libc.Xmemset(tls, bp+8, 0, uint32(unsafe.Sizeof(Mem{})))
 46870  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 46871  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46872  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+48))
 46873  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 48))), bp+8)
 46874  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 48)))))
 46875  
 46876  		if iCurrent == iIdx {
 46877  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 46878  		}
 46879  
 46880  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 46881  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 46882  		}
 46883  	}
 46884  }
 46885  
 46886  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46887  	bp := tls.Alloc(107)
 46888  	defer tls.Free(107)
 46889  
 46890  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46891  	var pRec uintptr
 46892  	var pEndHdr uintptr
 46893  	var pHdr uintptr
 46894  	var pBody uintptr
 46895  
 46896  	var pRet uintptr
 46897  
 46898  	pRet = tcl.XTcl_NewObj(tls)
 46899  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 46900  
 46901  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46902  
 46903  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 46904  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 46905  	for pHdr < pEndHdr {
 46906  		var pVal uintptr = uintptr(0)
 46907  
 46908  		libc.Xmemset(tls, bp+40, 0, uint32(unsafe.Sizeof(Mem{})))
 46909  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 46910  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46911  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+80))
 46912  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 80))), bp+40)
 46913  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 80)))))
 46914  
 46915  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 46916  		case SQLITE_TEXT:
 46917  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 46918  			break
 46919  
 46920  		case SQLITE_BLOB:
 46921  			{
 46922  				*(*[16]int8)(unsafe.Pointer(bp + 91)) = [16]int8{
 46923  					int8('0'), int8('1'), int8('2'), int8('3'), int8('4'), int8('5'), int8('6'), int8('7'),
 46924  					int8('8'), int8('9'), int8('a'), int8('b'), int8('c'), int8('d'), int8('e'), int8('f'),
 46925  				}
 46926  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 46927  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 46928  				var i int32
 46929  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 46930  				for i = 0; i < n; i++ {
 46931  					*(*int8)(unsafe.Pointer(bp + 88)) = *(*int8)(unsafe.Pointer(bp + 91 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 46932  					*(*int8)(unsafe.Pointer(bp + 88 + 1)) = *(*int8)(unsafe.Pointer(bp + 91 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 46933  					*(*int8)(unsafe.Pointer(bp + 88 + 2)) = int8(0)
 46934  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+88, 0))
 46935  				}
 46936  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 46937  				break
 46938  
 46939  			}
 46940  
 46941  		case SQLITE_FLOAT:
 46942  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 46943  			break
 46944  
 46945  		case SQLITE_INTEGER:
 46946  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 46947  			break
 46948  
 46949  		case SQLITE_NULL:
 46950  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 46951  			break
 46952  
 46953  		default:
 46954  		}
 46955  
 46956  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 46957  
 46958  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 46959  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 46960  		}
 46961  	}
 46962  
 46963  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 46964  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46965  		var _objPtr uintptr = pRet
 46966  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 46967  			tcl.XTclFreeObj(tls, _objPtr)
 46968  		}
 46969  	}
 46970  }
 46971  
 46972  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46973  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46974  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 46975  }
 46976  
 46977  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46978  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 46979  }
 46980  
 46981  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46982  	var m sqlite3_uint64 = uint64(0)
 46983  	var i int32
 46984  	for i = 0; i < argc && i < 63; i++ {
 46985  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4))) != 0 {
 46986  			m = m | uint64(1)<<i
 46987  		}
 46988  	}
 46989  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 46990  }
 46991  
 46992  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46993  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 46994  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))))
 46995  }
 46996  
 46997  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 46998  	var i int32
 46999  
 47000  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aFuncs))/uint32(unsafe.Sizeof(struct {
 47001  		FzName       uintptr
 47002  		FnArg        int8
 47003  		F__ccgo_pad1 [3]byte
 47004  		FeTextRep    uint32
 47005  		FxFunc       uintptr
 47006  	}{})); i++ {
 47007  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 47008  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 47009  	}
 47010  
 47011  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 47012  		*(*uintptr)(unsafe.Pointer(&struct {
 47013  			f func(*libc.TLS, uintptr, int32, uintptr)
 47014  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 47015  
 47016  	return SQLITE_OK
 47017  }
 47018  
 47019  var aFuncs = [20]struct {
 47020  	FzName       uintptr
 47021  	FnArg        int8
 47022  	F__ccgo_pad1 [3]byte
 47023  	FeTextRep    uint32
 47024  	FxFunc       uintptr
 47025  }{
 47026  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47027  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47028  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47029  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47030  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47031  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47032  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47033  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47034  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47035  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47036  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47037  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47038  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47039  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47040  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47041  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47042  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 47043  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47044  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47045  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 47046  }
 47047  
 47048  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47049  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47050  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47051  	}{registerTestFunctions})))
 47052  	if rc == SQLITE_OK {
 47053  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47054  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47055  		}{Md5_Register})))
 47056  	}
 47057  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 47058  	return TCL_OK
 47059  }
 47060  
 47061  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 47062  }
 47063  
 47064  func tFinal(tls *libc.TLS, a uintptr) {
 47065  }
 47066  
 47067  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47068  	bp := tls.Alloc(20)
 47069  	defer tls.Free(20)
 47070  
 47071  	var rc int32
 47072  	var mxArg int32
 47073  
 47074  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0) {
 47075  		goto __1
 47076  	}
 47077  	return TCL_ERROR
 47078  __1:
 47079  	;
 47080  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47081  		f func(*libc.TLS, uintptr, int32, uintptr)
 47082  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47083  		f func(*libc.TLS, uintptr, int32, uintptr)
 47084  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47085  	if !(rc != SQLITE_MISUSE) {
 47086  		goto __2
 47087  	}
 47088  	goto abuse_err
 47089  __2:
 47090  	;
 47091  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47092  		f func(*libc.TLS, uintptr, int32, uintptr)
 47093  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 47094  		f func(*libc.TLS, uintptr, int32, uintptr)
 47095  	}{tStep})), uintptr(0))
 47096  	if !(rc != SQLITE_MISUSE) {
 47097  		goto __3
 47098  	}
 47099  	goto abuse_err
 47100  __3:
 47101  	;
 47102  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47103  		f func(*libc.TLS, uintptr, int32, uintptr)
 47104  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47105  	if !(rc != SQLITE_MISUSE) {
 47106  		goto __4
 47107  	}
 47108  	goto abuse_err
 47109  __4:
 47110  	;
 47111  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 47112  	if !(rc != SQLITE_MISUSE) {
 47113  		goto __5
 47114  	}
 47115  	goto abuse_err
 47116  __5:
 47117  	;
 47118  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47119  		f func(*libc.TLS, uintptr, int32, uintptr)
 47120  	}{tStep})), uintptr(0))
 47121  	if !(rc != SQLITE_MISUSE) {
 47122  		goto __6
 47123  	}
 47124  	goto abuse_err
 47125  __6:
 47126  	;
 47127  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47128  		f func(*libc.TLS, uintptr, int32, uintptr)
 47129  	}{tStep})), uintptr(0), uintptr(0))
 47130  	if !(rc != SQLITE_MISUSE) {
 47131  		goto __7
 47132  	}
 47133  	goto abuse_err
 47134  __7:
 47135  	;
 47136  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47137  		f func(*libc.TLS, uintptr, int32, uintptr)
 47138  	}{tStep})), uintptr(0), uintptr(0))
 47139  	if !(rc != SQLITE_MISUSE) {
 47140  		goto __8
 47141  	}
 47142  	goto abuse_err
 47143  __8:
 47144  	;
 47145  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47146  		ts+31494,
 47147  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47148  			f func(*libc.TLS, uintptr, int32, uintptr)
 47149  		}{tStep})), uintptr(0), uintptr(0))
 47150  	if !(rc != SQLITE_MISUSE) {
 47151  		goto __9
 47152  	}
 47153  	goto abuse_err
 47154  __9:
 47155  	;
 47156  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 47157  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 47158  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 47159  		ts+31751,
 47160  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47161  			f func(*libc.TLS, uintptr, int32, uintptr)
 47162  		}{tStep})), uintptr(0), uintptr(0))
 47163  	if !(rc != SQLITE_OK) {
 47164  		goto __10
 47165  	}
 47166  	goto abuse_err
 47167  __10:
 47168  	;
 47169  	return TCL_OK
 47170  
 47171  abuse_err:
 47172  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 47173  		uintptr(0)))
 47174  	return TCL_ERROR
 47175  }
 47176  
 47177  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 47178  	var aMatchinfo uintptr
 47179  	var nMatchinfo int32
 47180  	var nCol int32
 47181  	var nPhrase int32
 47182  	var iPhrase int32
 47183  	var score float64
 47184  	var nHitCount int32
 47185  	var nGlobalHitCount int32
 47186  	var weight float64
 47187  	var iCol int32
 47188  
 47189  	var aPhraseinfo uintptr
 47190  	nCol = 0
 47191  	nPhrase = 0
 47192  	score = 0.0
 47193  
 47194  	if !(nVal < 1) {
 47195  		goto __1
 47196  	}
 47197  	goto wrong_number_args
 47198  __1:
 47199  	;
 47200  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 47201  	nMatchinfo = int32(uint32(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint32(unsafe.Sizeof(int32(0))))
 47202  	if !(nMatchinfo >= 2) {
 47203  		goto __2
 47204  	}
 47205  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 47206  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 47207  __2:
 47208  	;
 47209  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 47210  		goto __3
 47211  	}
 47212  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 47213  		ts+32050, -1)
 47214  	return
 47215  __3:
 47216  	;
 47217  	if !(nVal != 1+nCol) {
 47218  		goto __4
 47219  	}
 47220  	goto wrong_number_args
 47221  __4:
 47222  	;
 47223  	iPhrase = 0
 47224  __5:
 47225  	if !(iPhrase < nPhrase) {
 47226  		goto __7
 47227  	}
 47228  
 47229  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 47230  	iCol = 0
 47231  __8:
 47232  	if !(iCol < nCol) {
 47233  		goto __10
 47234  	}
 47235  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 47236  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 47237  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*4)))
 47238  	if !(nHitCount > 0) {
 47239  		goto __11
 47240  	}
 47241  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 47242  __11:
 47243  	;
 47244  	goto __9
 47245  __9:
 47246  	iCol++
 47247  	goto __8
 47248  	goto __10
 47249  __10:
 47250  	;
 47251  	goto __6
 47252  __6:
 47253  	iPhrase++
 47254  	goto __5
 47255  	goto __7
 47256  __7:
 47257  	;
 47258  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 47259  	return
 47260  
 47261  wrong_number_args:
 47262  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 47263  }
 47264  
 47265  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47266  	bp := tls.Alloc(4)
 47267  	defer tls.Free(4)
 47268  
 47269  	if objc != 2 {
 47270  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47271  		return TCL_ERROR
 47272  	}
 47273  
 47274  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 47275  		return TCL_ERROR
 47276  	}
 47277  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 47278  		f func(*libc.TLS, uintptr, int32, uintptr)
 47279  	}{rankfunc})), uintptr(0), uintptr(0))
 47280  	return TCL_OK
 47281  }
 47282  
 47283  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 47284  	var i int32
 47285  
 47286  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd7))/uint32(unsafe.Sizeof(struct {
 47287  		FzName uintptr
 47288  		FxProc uintptr
 47289  	}{})); i++ {
 47290  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 47291  	}
 47292  	sqlite3.Xsqlite3_initialize(tls)
 47293  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47294  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47295  	}{registerTestFunctions})))
 47296  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 47297  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 47298  	}{Md5_Register})))
 47299  	return TCL_OK
 47300  }
 47301  
 47302  var aObjCmd7 = [3]struct {
 47303  	FzName uintptr
 47304  	FxProc uintptr
 47305  }{
 47306  	{FzName: ts + 32149, FxProc: 0},
 47307  	{FzName: ts + 32176, FxProc: 0},
 47308  	{FzName: ts + 32198, FxProc: 0},
 47309  }
 47310  
 47311  type fd_set3 = struct{ Ffds_bits [32]int32 }
 47312  
 47313  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 47314  	bp := tls.Alloc(17)
 47315  	defer tls.Free(17)
 47316  
 47317  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 47318  	var i int32
 47319  	var j int32
 47320  	var c uint8
 47321  	i = N * 2
 47322  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 47323  	for j = N - 1; j >= 0; j-- {
 47324  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 47325  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 47326  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 47327  	}
 47328  
 47329  }
 47330  
 47331  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 47332  	bp := tls.Alloc(256)
 47333  	defer tls.Free(256)
 47334  
 47335  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 47336  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47337  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47338  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47339  		uint8(1), uint8(2), uint8(3), uint8(4), uint8(5), uint8(6), uint8(7), uint8(8), uint8(9), uint8(10), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47340  		uint8(0), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47341  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47342  		uint8(0), uint8(11), uint8(12), uint8(13), uint8(14), uint8(15), uint8(16), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47343  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47344  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47345  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47346  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47347  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47348  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47349  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47350  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47351  		uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0), uint8(0),
 47352  	}
 47353  	var i int32
 47354  	var j int32
 47355  	var hi int32 = 1
 47356  	var c uint8
 47357  
 47358  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 47359  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 47360  		if int32(c) == 0 {
 47361  			continue
 47362  		}
 47363  		if hi != 0 {
 47364  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 47365  			hi = 0
 47366  		} else {
 47367  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 47368  			hi = 1
 47369  		}
 47370  	}
 47371  	return j
 47372  }
 47373  
 47374  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47375  	bp := tls.Alloc(48)
 47376  	defer tls.Free(48)
 47377  
 47378  	var got int32
 47379  	var zFile uintptr
 47380  	var zBuf uintptr
 47381  	var in uintptr
 47382  
 47383  	if objc != 4 {
 47384  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 47385  		return TCL_ERROR
 47386  	}
 47387  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+40) != 0 {
 47388  		return TCL_ERROR
 47389  	}
 47390  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+44) != 0 {
 47391  		return TCL_ERROR
 47392  	}
 47393  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 47394  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 47395  	if zBuf == uintptr(0) {
 47396  		return TCL_ERROR
 47397  	}
 47398  	in = libc.Xfopen(tls, zFile, ts+4402)
 47399  	if in == uintptr(0) {
 47400  		in = libc.Xfopen(tls, zFile, ts+32262)
 47401  	}
 47402  	if in == uintptr(0) {
 47403  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 47404  		return TCL_ERROR
 47405  	}
 47406  	libc.Xfseek(tls, in, *(*int32)(unsafe.Pointer(bp + 40)), SEEK_SET)
 47407  	got = int32(libc.Xfread(tls, zBuf, uint32(1), uint32(*(*int32)(unsafe.Pointer(bp + 44))), in))
 47408  	libc.Xfclose(tls, in)
 47409  	if got < 0 {
 47410  		got = 0
 47411  	}
 47412  	sqlite3TestBinToHex(tls, zBuf, got)
 47413  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 47414  	sqlite3.Xsqlite3_free(tls, zBuf)
 47415  	return TCL_OK
 47416  }
 47417  
 47418  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47419  	bp := tls.Alloc(32)
 47420  	defer tls.Free(32)
 47421  
 47422  	var nOut int32
 47423  	var written int32
 47424  	var zFile uintptr
 47425  	var zIn uintptr
 47426  	var aOut uintptr
 47427  	var out uintptr
 47428  
 47429  	if objc != 4 {
 47430  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 47431  		return TCL_ERROR
 47432  	}
 47433  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+24) != 0 {
 47434  		return TCL_ERROR
 47435  	}
 47436  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 47437  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+28)
 47438  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 47439  	if aOut == uintptr(0) {
 47440  		return TCL_ERROR
 47441  	}
 47442  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 47443  	out = libc.Xfopen(tls, zFile, ts+32312)
 47444  	if out == uintptr(0) {
 47445  		out = libc.Xfopen(tls, zFile, ts+32316)
 47446  	}
 47447  	if out == uintptr(0) {
 47448  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 47449  		return TCL_ERROR
 47450  	}
 47451  	libc.Xfseek(tls, out, *(*int32)(unsafe.Pointer(bp + 24)), SEEK_SET)
 47452  	written = int32(libc.Xfwrite(tls, aOut, uint32(1), uint32(nOut), out))
 47453  	sqlite3.Xsqlite3_free(tls, aOut)
 47454  	libc.Xfclose(tls, out)
 47455  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 47456  	return TCL_OK
 47457  }
 47458  
 47459  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47460  	bp := tls.Alloc(8)
 47461  	defer tls.Free(8)
 47462  
 47463  	var val int32
 47464  
 47465  	var nOut int32
 47466  	var zIn uintptr
 47467  	var aOut uintptr
 47468  
 47469  	if objc != 2 {
 47470  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 47471  		return TCL_ERROR
 47472  	}
 47473  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp)
 47474  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 47475  	if aOut == uintptr(0) {
 47476  		return TCL_ERROR
 47477  	}
 47478  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 47479  	if nOut >= 4 {
 47480  		libc.Xmemcpy(tls, bp+4, aOut, uint32(4))
 47481  	} else {
 47482  		libc.Xmemset(tls, bp+4, 0, uint32(unsafe.Sizeof([4]uint8{})))
 47483  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint32(nOut))
 47484  	}
 47485  	sqlite3.Xsqlite3_free(tls, aOut)
 47486  	val = int32(*(*uint8)(unsafe.Pointer(bp + 4)))<<24 | int32(*(*uint8)(unsafe.Pointer(bp + 4 + 1)))<<16 | int32(*(*uint8)(unsafe.Pointer(bp + 4 + 2)))<<8 | int32(*(*uint8)(unsafe.Pointer(bp + 4 + 3)))
 47487  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 47488  	return TCL_OK
 47489  }
 47490  
 47491  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47492  	bp := tls.Alloc(14)
 47493  	defer tls.Free(14)
 47494  
 47495  	if objc != 2 {
 47496  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47497  		return TCL_ERROR
 47498  	}
 47499  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 47500  		return TCL_ERROR
 47501  	}
 47502  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47503  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47504  	sqlite3TestBinToHex(tls, bp+4, 2)
 47505  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 47506  	return TCL_OK
 47507  }
 47508  
 47509  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47510  	bp := tls.Alloc(14)
 47511  	defer tls.Free(14)
 47512  
 47513  	if objc != 2 {
 47514  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 47515  		return TCL_ERROR
 47516  	}
 47517  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 47518  		return TCL_ERROR
 47519  	}
 47520  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 47521  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 47522  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 47523  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 47524  	sqlite3TestBinToHex(tls, bp+4, 4)
 47525  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 47526  	return TCL_OK
 47527  }
 47528  
 47529  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47530  	bp := tls.Alloc(16)
 47531  	defer tls.Free(16)
 47532  
 47533  	tcl.XTcl_AppendResult(tls, interp,
 47534  		libc.VaList(bp, ts+32352, 0))
 47535  	return TCL_ERROR
 47536  }
 47537  
 47538  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 47539  	var q uintptr = p
 47540  	var x sqlite_uint64 = uint64(0)
 47541  	var y sqlite_uint64 = uint64(1)
 47542  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 47543  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 47544  		y <<= 7
 47545  	}
 47546  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 47547  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 47548  	return (int32(q) - int32(p)) / 1
 47549  }
 47550  
 47551  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 47552  	var q uintptr = p
 47553  	var vu sqlite_uint64 = sqlite_uint64(v)
 47554  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 47555  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 47556  		vu >>= 7
 47557  	}
 47558  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 47559  
 47560  	return (int32(q) - int32(p)) / 1
 47561  }
 47562  
 47563  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47564  	bp := tls.Alloc(12)
 47565  	defer tls.Free(12)
 47566  
 47567  	var zBlob uintptr
 47568  
 47569  	var nVal int32
 47570  
 47571  	if objc != 3 {
 47572  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 47573  		return TCL_ERROR
 47574  	}
 47575  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp)
 47576  
 47577  	nVal = getFts3Varint(tls, zBlob, bp+4)
 47578  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 4))), 0)
 47579  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 47580  	return TCL_OK
 47581  }
 47582  
 47583  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 47584  	bp := tls.Alloc(20)
 47585  	defer tls.Free(20)
 47586  
 47587  	*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
 47588  	*(*int32)(unsafe.Pointer(bp)) = 0
 47589  	var aOut uintptr = uintptr(0)
 47590  	var nOut int32 = 0
 47591  	var nAlloc int32 = 0
 47592  	var i int32
 47593  
 47594  	if objc != 2 {
 47595  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 47596  		return TCL_ERROR
 47597  	}
 47598  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, bp+4) != 0 {
 47599  		return TCL_ERROR
 47600  	}
 47601  
 47602  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 47603  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4)), bp+8) {
 47604  			if nOut+10 > nAlloc {
 47605  				var nNew int32
 47606  				if nAlloc != 0 {
 47607  					nNew = nAlloc * 2
 47608  				} else {
 47609  					nNew = 128
 47610  				}
 47611  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47612  				if aNew == uintptr(0) {
 47613  					sqlite3.Xsqlite3_free(tls, aOut)
 47614  					return TCL_ERROR
 47615  				}
 47616  				aOut = aNew
 47617  				nAlloc = nNew
 47618  			}
 47619  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 47620  		} else {
 47621  			*(*int32)(unsafe.Pointer(bp + 16)) = 0
 47622  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4)), bp+16)
 47623  			for nOut+*(*int32)(unsafe.Pointer(bp + 16)) > nAlloc {
 47624  				var nNew int32
 47625  				if nAlloc != 0 {
 47626  					nNew = nAlloc * 2
 47627  				} else {
 47628  					nNew = 128
 47629  				}
 47630  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 47631  				if aNew == uintptr(0) {
 47632  					sqlite3.Xsqlite3_free(tls, aOut)
 47633  					return TCL_ERROR
 47634  				}
 47635  				aOut = aNew
 47636  				nAlloc = nNew
 47637  			}
 47638  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint32(*(*int32)(unsafe.Pointer(bp + 16))))
 47639  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 16))
 47640  		}
 47641  	}
 47642  
 47643  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 47644  	sqlite3.Xsqlite3_free(tls, aOut)
 47645  	return TCL_OK
 47646  }
 47647  
 47648  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 47649  	var i int32
 47650  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd8))/uint32(unsafe.Sizeof(struct {
 47651  		FzName uintptr
 47652  		FxProc uintptr
 47653  	}{})); i++ {
 47654  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 47655  	}
 47656  	return TCL_OK
 47657  }
 47658  
 47659  var aObjCmd8 = [8]struct {
 47660  	FzName uintptr
 47661  	FxProc uintptr
 47662  }{
 47663  	{FzName: ts + 32424, FxProc: 0},
 47664  	{FzName: ts + 32435, FxProc: 0},
 47665  	{FzName: ts + 32447, FxProc: 0},
 47666  	{FzName: ts + 32461, FxProc: 0},
 47667  	{FzName: ts + 32480, FxProc: 0},
 47668  	{FzName: ts + 32499, FxProc: 0},
 47669  	{FzName: ts + 32512, FxProc: 0},
 47670  	{FzName: ts + 32528, FxProc: 0},
 47671  }
 47672  
 47673  type Wrapped = struct {
 47674  	Fpcache      sqlite3_pcache_methods2
 47675  	Fmem         sqlite3_mem_methods
 47676  	Fmutex       sqlite3_mutex_methods
 47677  	Fmem_init    int32
 47678  	Fmem_fail    int32
 47679  	Fmutex_init  int32
 47680  	Fmutex_fail  int32
 47681  	Fpcache_init int32
 47682  	Fpcache_fail int32
 47683  }
 47684  
 47685  var wrapped Wrapped
 47686  
 47687  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 47688  	var rc int32
 47689  	if wrapped.Fmem_fail != 0 {
 47690  		rc = SQLITE_ERROR
 47691  	} else {
 47692  		rc = (*struct {
 47693  			f func(*libc.TLS, uintptr) int32
 47694  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 47695  	}
 47696  	if rc == SQLITE_OK {
 47697  		wrapped.Fmem_init = 1
 47698  	}
 47699  	return rc
 47700  }
 47701  
 47702  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 47703  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 47704  	wrapped.Fmem_init = 0
 47705  }
 47706  
 47707  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 47708  	return (*struct {
 47709  		f func(*libc.TLS, int32) uintptr
 47710  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 47711  }
 47712  
 47713  func wrMemFree(tls *libc.TLS, p uintptr) {
 47714  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 47715  }
 47716  
 47717  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 47718  	return (*struct {
 47719  		f func(*libc.TLS, uintptr, int32) uintptr
 47720  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 47721  }
 47722  
 47723  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 47724  	return (*struct {
 47725  		f func(*libc.TLS, uintptr) int32
 47726  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 47727  }
 47728  
 47729  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 47730  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 47731  }
 47732  
 47733  func wrMutexInit(tls *libc.TLS) int32 {
 47734  	var rc int32
 47735  	if wrapped.Fmutex_fail != 0 {
 47736  		rc = SQLITE_ERROR
 47737  	} else {
 47738  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 47739  	}
 47740  	if rc == SQLITE_OK {
 47741  		wrapped.Fmutex_init = 1
 47742  	}
 47743  	return rc
 47744  }
 47745  
 47746  func wrMutexEnd(tls *libc.TLS) int32 {
 47747  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 47748  	wrapped.Fmutex_init = 0
 47749  	return SQLITE_OK
 47750  }
 47751  
 47752  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 47753  	return (*struct {
 47754  		f func(*libc.TLS, int32) uintptr
 47755  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 47756  }
 47757  
 47758  func wrMutexFree(tls *libc.TLS, p uintptr) {
 47759  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 47760  }
 47761  
 47762  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 47763  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 47764  }
 47765  
 47766  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 47767  	return (*struct {
 47768  		f func(*libc.TLS, uintptr) int32
 47769  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 47770  }
 47771  
 47772  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 47773  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 47774  }
 47775  
 47776  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 47777  	return (*struct {
 47778  		f func(*libc.TLS, uintptr) int32
 47779  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 47780  }
 47781  
 47782  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 47783  	return (*struct {
 47784  		f func(*libc.TLS, uintptr) int32
 47785  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 47786  }
 47787  
 47788  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 47789  	var rc int32
 47790  	if wrapped.Fpcache_fail != 0 {
 47791  		rc = SQLITE_ERROR
 47792  	} else {
 47793  		rc = (*struct {
 47794  			f func(*libc.TLS, uintptr) int32
 47795  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 47796  	}
 47797  	if rc == SQLITE_OK {
 47798  		wrapped.Fpcache_init = 1
 47799  	}
 47800  	return rc
 47801  }
 47802  
 47803  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 47804  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 47805  	wrapped.Fpcache_init = 0
 47806  }
 47807  
 47808  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 47809  	return (*struct {
 47810  		f func(*libc.TLS, int32, int32, int32) uintptr
 47811  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 47812  }
 47813  
 47814  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 47815  	(*struct {
 47816  		f func(*libc.TLS, uintptr, int32)
 47817  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 47818  }
 47819  
 47820  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 47821  	return (*struct {
 47822  		f func(*libc.TLS, uintptr) int32
 47823  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 47824  }
 47825  
 47826  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 47827  	return (*struct {
 47828  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47829  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 47830  }
 47831  
 47832  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 47833  	(*struct {
 47834  		f func(*libc.TLS, uintptr, uintptr, int32)
 47835  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 47836  }
 47837  
 47838  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 47839  	(*struct {
 47840  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47841  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 47842  }
 47843  
 47844  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 47845  	(*struct {
 47846  		f func(*libc.TLS, uintptr, uint32)
 47847  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 47848  }
 47849  
 47850  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 47851  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 47852  }
 47853  
 47854  func installInitWrappers(tls *libc.TLS) {
 47855  	bp := tls.Alloc(168)
 47856  	defer tls.Free(168)
 47857  
 47858  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 47859  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{wrMutexInit})), FxMutexEnd: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{wrMutexEnd})), FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 47860  			f func(*libc.TLS, int32) uintptr
 47861  		}{wrMutexAlloc})),
 47862  		FxMutexFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexFree})), FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexEnter})), FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 47863  			f func(*libc.TLS, uintptr) int32
 47864  		}{wrMutexTry})),
 47865  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 47866  			f func(*libc.TLS, uintptr) int32
 47867  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 47868  			f func(*libc.TLS, uintptr) int32
 47869  		}{wrMutexNotheld})),
 47870  	}
 47871  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 116)) = sqlite3_pcache_methods2{
 47872  		FiVersion: 1,
 47873  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47874  			f func(*libc.TLS, uintptr) int32
 47875  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 47876  			f func(*libc.TLS, int32, int32, int32) uintptr
 47877  		}{wrPCacheCreate})),
 47878  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 47879  			f func(*libc.TLS, uintptr, int32)
 47880  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 47881  			f func(*libc.TLS, uintptr) int32
 47882  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 47883  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47884  		}{wrPCacheFetch})),
 47885  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 47886  			f func(*libc.TLS, uintptr, uintptr, int32)
 47887  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 47888  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47889  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 47890  			f func(*libc.TLS, uintptr, uint32)
 47891  		}{wrPCacheTruncate})),
 47892  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 47893  	}
 47894  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 84)) = sqlite3_mem_methods{
 47895  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 47896  			f func(*libc.TLS, int32) uintptr
 47897  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 47898  			f func(*libc.TLS, uintptr, int32) uintptr
 47899  		}{wrMemRealloc})),
 47900  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 47901  			f func(*libc.TLS, uintptr) int32
 47902  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47903  			f func(*libc.TLS, uintptr) int32
 47904  		}{wrMemInit})),
 47905  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 47906  	}
 47907  
 47908  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint32(unsafe.Sizeof(wrapped)))
 47909  
 47910  	sqlite3.Xsqlite3_shutdown(tls)
 47911  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+84))
 47912  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+52))
 47913  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47914  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 47915  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+84))
 47916  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+116))
 47917  }
 47918  
 47919  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47920  	bp := tls.Alloc(24)
 47921  	defer tls.Free(24)
 47922  
 47923  	var i int32
 47924  	installInitWrappers(tls)
 47925  	for i = 1; i < objc; i++ {
 47926  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)))
 47927  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 47928  			wrapped.Fmem_fail = 1
 47929  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 47930  			wrapped.Fmutex_fail = 1
 47931  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 47932  			wrapped.Fpcache_fail = 1
 47933  		} else {
 47934  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 47935  			return TCL_ERROR
 47936  		}
 47937  	}
 47938  	return TCL_OK
 47939  }
 47940  
 47941  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47942  	bp := tls.Alloc(24)
 47943  	defer tls.Free(24)
 47944  
 47945  	if objc != 1 {
 47946  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47947  		return TCL_ERROR
 47948  	}
 47949  
 47950  	sqlite3.Xsqlite3_shutdown(tls)
 47951  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+84))
 47952  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+52))
 47953  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47954  	return TCL_OK
 47955  }
 47956  
 47957  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47958  	if objc != 1 {
 47959  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47960  		return TCL_ERROR
 47961  	}
 47962  
 47963  	wrapped.Fmem_fail = 0
 47964  	wrapped.Fmutex_fail = 0
 47965  	wrapped.Fpcache_fail = 0
 47966  	return TCL_OK
 47967  }
 47968  
 47969  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47970  	var pRet uintptr
 47971  
 47972  	if objc != 1 {
 47973  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47974  		return TCL_ERROR
 47975  	}
 47976  
 47977  	pRet = tcl.XTcl_NewObj(tls)
 47978  	if wrapped.Fmutex_init != 0 {
 47979  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 47980  	}
 47981  	if wrapped.Fmem_init != 0 {
 47982  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 47983  	}
 47984  	if wrapped.Fpcache_init != 0 {
 47985  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 47986  	}
 47987  
 47988  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 47989  	return TCL_OK
 47990  }
 47991  
 47992  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 47993  	var i int32
 47994  
 47995  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd9))/uint32(unsafe.Sizeof(struct {
 47996  		FzName uintptr
 47997  		FxProc uintptr
 47998  	}{})); i++ {
 47999  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 48000  	}
 48001  
 48002  	return TCL_OK
 48003  }
 48004  
 48005  var aObjCmd9 = [4]struct {
 48006  	FzName uintptr
 48007  	FxProc uintptr
 48008  }{
 48009  	{FzName: ts + 32575, FxProc: 0},
 48010  	{FzName: ts + 32596, FxProc: 0},
 48011  	{FzName: ts + 32615, FxProc: 0},
 48012  	{FzName: ts + 32638, FxProc: 0},
 48013  }
 48014  
 48015  type sqlite3_intarray1 = struct {
 48016  	Fn     int32
 48017  	Fa     uintptr
 48018  	FxFree uintptr
 48019  }
 48020  
 48021  type sqlite3_intarray = sqlite3_intarray1
 48022  
 48023  type intarray_vtab1 = struct {
 48024  	Fbase     sqlite3_vtab
 48025  	FpContent uintptr
 48026  }
 48027  
 48028  type intarray_vtab = intarray_vtab1
 48029  type intarray_cursor1 = struct {
 48030  	Fbase sqlite3_vtab_cursor
 48031  	Fi    int32
 48032  }
 48033  
 48034  type intarray_cursor = intarray_cursor1
 48035  
 48036  func intarrayFree(tls *libc.TLS, p uintptr) {
 48037  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 48038  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 48039  	}
 48040  	sqlite3.Xsqlite3_free(tls, p)
 48041  }
 48042  
 48043  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 48044  	var pVtab uintptr = p
 48045  	sqlite3.Xsqlite3_free(tls, pVtab)
 48046  	return 0
 48047  }
 48048  
 48049  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 48050  	var rc int32 = SQLITE_NOMEM
 48051  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 48052  
 48053  	if pVtab != 0 {
 48054  		libc.Xmemset(tls, pVtab, 0, uint32(unsafe.Sizeof(intarray_vtab{})))
 48055  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 48056  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 48057  	}
 48058  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 48059  	return rc
 48060  }
 48061  
 48062  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 48063  	var rc int32 = SQLITE_NOMEM
 48064  	var pCur uintptr
 48065  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 48066  	if pCur != 0 {
 48067  		libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(intarray_cursor{})))
 48068  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 48069  		rc = SQLITE_OK
 48070  	}
 48071  	return rc
 48072  }
 48073  
 48074  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 48075  	var pCur uintptr = cur
 48076  	sqlite3.Xsqlite3_free(tls, pCur)
 48077  	return SQLITE_OK
 48078  }
 48079  
 48080  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 48081  	var pCur uintptr = cur
 48082  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48083  	if (*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= 0 && (*intarray_cursor)(unsafe.Pointer(pCur)).Fi < (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn {
 48084  		sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer((*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fa + uintptr((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)*8)))
 48085  	}
 48086  	return SQLITE_OK
 48087  }
 48088  
 48089  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 48090  	var pCur uintptr = cur
 48091  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 48092  	return SQLITE_OK
 48093  }
 48094  
 48095  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 48096  	var pCur uintptr = cur
 48097  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 48098  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 48099  }
 48100  
 48101  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 48102  	var pCur uintptr = cur
 48103  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 48104  	return SQLITE_OK
 48105  }
 48106  
 48107  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 48108  	var pCur uintptr = pVtabCursor
 48109  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 48110  	return SQLITE_OK
 48111  }
 48112  
 48113  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 48114  	return SQLITE_OK
 48115  }
 48116  
 48117  var intarrayModule = sqlite3_module{
 48118  	FxCreate:     0,
 48119  	FxConnect:    0,
 48120  	FxBestIndex:  0,
 48121  	FxDisconnect: 0,
 48122  	FxDestroy:    0,
 48123  	FxOpen:       0,
 48124  	FxClose:      0,
 48125  	FxFilter:     0,
 48126  	FxNext:       0,
 48127  	FxEof:        0,
 48128  	FxColumn:     0,
 48129  	FxRowid:      0,
 48130  }
 48131  
 48132  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 48133  	bp := tls.Alloc(16)
 48134  	defer tls.Free(16)
 48135  
 48136  	var rc int32 = SQLITE_OK
 48137  	var p uintptr
 48138  
 48139  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 48140  	if p == uintptr(0) {
 48141  		return SQLITE_NOMEM
 48142  	}
 48143  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(sqlite3_intarray{})))
 48144  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 48145  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 48146  	if rc == SQLITE_OK {
 48147  		var zSql uintptr
 48148  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 48149  			libc.VaList(bp, zName, zName))
 48150  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 48151  		sqlite3.Xsqlite3_free(tls, zSql)
 48152  	}
 48153  	return rc
 48154  }
 48155  
 48156  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 48157  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 48158  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 48159  	}
 48160  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 48161  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 48162  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 48163  	return SQLITE_OK
 48164  }
 48165  
 48166  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48167  	bp := tls.Alloc(140)
 48168  	defer tls.Free(140)
 48169  
 48170  	var zName uintptr
 48171  
 48172  	var rc int32 = SQLITE_OK
 48173  
 48174  	if objc != 3 {
 48175  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 48176  		return TCL_ERROR
 48177  	}
 48178  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 48179  		return TCL_ERROR
 48180  	}
 48181  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 48182  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+36)
 48183  	if rc != SQLITE_OK {
 48184  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48185  		return TCL_ERROR
 48186  	}
 48187  	sqlite3TestMakePointerStr(tls, interp, bp+40, *(*uintptr)(unsafe.Pointer(bp + 36)))
 48188  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+40, uintptr(0)))
 48189  	return TCL_OK
 48190  }
 48191  
 48192  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 48193  	bp := tls.Alloc(40)
 48194  	defer tls.Free(40)
 48195  
 48196  	var pArray uintptr
 48197  	var rc int32 = SQLITE_OK
 48198  	var i int32
 48199  	var n int32
 48200  	var a uintptr
 48201  
 48202  	if objc < 2 {
 48203  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 48204  		return TCL_ERROR
 48205  	}
 48206  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 48207  	n = objc - 2
 48208  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(uint32(unsafe.Sizeof(sqlite3_int64(0)))*uint32(n)))
 48209  	if a == uintptr(0) {
 48210  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 48211  		return TCL_ERROR
 48212  	}
 48213  	for i = 0; i < n; i++ {
 48214  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 48215  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*4)), bp+32)
 48216  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 48217  	}
 48218  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 48219  	if rc != SQLITE_OK {
 48220  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 48221  		return TCL_ERROR
 48222  	}
 48223  	return TCL_OK
 48224  }
 48225  
 48226  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 48227  	var i int32
 48228  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd10))/uint32(unsafe.Sizeof(struct {
 48229  		FzName      uintptr
 48230  		FxProc      uintptr
 48231  		FclientData uintptr
 48232  	}{})); i++ {
 48233  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 48234  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 48235  	}
 48236  	return TCL_OK
 48237  }
 48238  
 48239  var aObjCmd10 = [2]struct {
 48240  	FzName      uintptr
 48241  	FxProc      uintptr
 48242  	FclientData uintptr
 48243  }{
 48244  	{FzName: ts + 32759, FxProc: 0},
 48245  	{FzName: ts + 32783, FxProc: 0},
 48246  }
 48247  
 48248  type jt_file1 = struct {
 48249  	Fbase      sqlite3_file
 48250  	FzName     uintptr
 48251  	Fflags     int32
 48252  	FeLock     int32
 48253  	FnPage     u32
 48254  	FnPagesize u32
 48255  	FpWritable uintptr
 48256  	FaCksum    uintptr
 48257  	FnSync     int32
 48258  	FiMaxOff   sqlite3_int64
 48259  	FpNext     uintptr
 48260  	FpReal     uintptr
 48261  }
 48262  
 48263  type jt_file = jt_file1
 48264  
 48265  var jt_vfs = sqlite3_vfs{
 48266  	FiVersion:          2,
 48267  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 48268  	FmxPathname:        JT_MAX_PATHNAME,
 48269  	FzName:             ts + 32805,
 48270  	FxOpen:             0,
 48271  	FxDelete:           0,
 48272  	FxAccess:           0,
 48273  	FxFullPathname:     0,
 48274  	FxDlOpen:           0,
 48275  	FxDlError:          0,
 48276  	FxDlSym:            0,
 48277  	FxDlClose:          0,
 48278  	FxRandomness:       0,
 48279  	FxSleep:            0,
 48280  	FxCurrentTime:      0,
 48281  	FxGetLastError:     0,
 48282  	FxCurrentTimeInt64: 0,
 48283  }
 48284  
 48285  var jt_io_methods = sqlite3_io_methods{
 48286  	FiVersion:               1,
 48287  	FxClose:                 0,
 48288  	FxRead:                  0,
 48289  	FxWrite:                 0,
 48290  	FxTruncate:              0,
 48291  	FxSync:                  0,
 48292  	FxFileSize:              0,
 48293  	FxLock:                  0,
 48294  	FxUnlock:                0,
 48295  	FxCheckReservedLock:     0,
 48296  	FxFileControl:           0,
 48297  	FxSectorSize:            0,
 48298  	FxDeviceCharacteristics: 0,
 48299  }
 48300  
 48301  type JtGlobal = struct {
 48302  	FpVfs  uintptr
 48303  	FpList uintptr
 48304  }
 48305  
 48306  var g2 = JtGlobal{}
 48307  
 48308  func enterJtMutex(tls *libc.TLS) {
 48309  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48310  }
 48311  
 48312  func leaveJtMutex(tls *libc.TLS) {
 48313  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 48314  }
 48315  
 48316  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 48317  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 48318  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 48319  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 48320  	sqlite3.Xsqlite3_io_error_hit = 0
 48321  }
 48322  
 48323  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 48324  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 48325  	sqlite3.Xsqlite3_io_error_hit = iSave2
 48326  }
 48327  
 48328  func closeTransaction(tls *libc.TLS, p uintptr) {
 48329  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 48330  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 48331  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48332  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48333  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 48334  }
 48335  
 48336  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 48337  	var pp uintptr
 48338  	var p uintptr = pFile
 48339  
 48340  	closeTransaction(tls, p)
 48341  	enterJtMutex(tls)
 48342  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 48343  		for pp = uintptr(unsafe.Pointer(&g2)) + 4; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 44 {
 48344  		}
 48345  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 48346  	}
 48347  	leaveJtMutex(tls)
 48348  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48349  	return SQLITE_OK
 48350  }
 48351  
 48352  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48353  	var p uintptr = pFile
 48354  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48355  }
 48356  
 48357  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 48358  	var pMain uintptr = uintptr(0)
 48359  	enterJtMutex(tls)
 48360  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 48361  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 48362  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 48363  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 48364  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint32(nName)) &&
 48365  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 48366  			break
 48367  		}
 48368  	}
 48369  	leaveJtMutex(tls)
 48370  	return pMain
 48371  }
 48372  
 48373  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 48374  	return u32(int32(*(*uint8)(unsafe.Pointer(z)))<<24 + int32(*(*uint8)(unsafe.Pointer(z + 1)))<<16 + int32(*(*uint8)(unsafe.Pointer(z + 2)))<<8 + int32(*(*uint8)(unsafe.Pointer(z + 3))))
 48375  }
 48376  
 48377  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 48378  	var i int32
 48379  	var cksum u32 = u32(0)
 48380  	for i = 0; i < n; i++ {
 48381  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 48382  	}
 48383  	return cksum
 48384  }
 48385  
 48386  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 48387  	bp := tls.Alloc(8)
 48388  	defer tls.Free(8)
 48389  
 48390  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 48391  	if libc.Xmemcmp(tls, bp, zBuf, uint32(8)) != 0 {
 48392  		return SQLITE_ERROR
 48393  	}
 48394  	if pnRec != 0 {
 48395  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 48396  	}
 48397  	if pnPage != 0 {
 48398  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 48399  	}
 48400  	if pnSector != 0 {
 48401  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 48402  	}
 48403  	if pnPagesize != 0 {
 48404  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 48405  	}
 48406  	return SQLITE_OK
 48407  }
 48408  
 48409  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 48410  	bp := tls.Alloc(8)
 48411  	defer tls.Free(8)
 48412  
 48413  	var aData uintptr
 48414  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 48415  	var rc int32 = SQLITE_OK
 48416  
 48417  	closeTransaction(tls, pMain)
 48418  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48419  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 48420  	(*jt_file)(unsafe.Pointer(pMain)).FaCksum = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(u32(0)))*((*jt_file)(unsafe.Pointer(pMain)).FnPage+u32(1))))
 48421  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 48422  
 48423  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 48424  		rc = SQLITE_IOERR | int32(12)<<8
 48425  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 48426  		var iTrunk u32
 48427  
 48428  		stop_ioerr_simulation(tls, bp, bp+4)
 48429  
 48430  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 48431  		if rc == SQLITE_OK {
 48432  			var nDbsize u32 = decodeUint32(tls, aData+28)
 48433  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint32(4)) == 0 {
 48434  				var iPg u32
 48435  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 48436  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 48437  				}
 48438  			}
 48439  		}
 48440  		iTrunk = decodeUint32(tls, aData+32)
 48441  		for rc == SQLITE_OK && iTrunk > u32(0) {
 48442  			var nLeaf u32
 48443  			var iLeaf u32
 48444  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48445  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48446  			nLeaf = decodeUint32(tls, aData+4)
 48447  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 48448  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 48449  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48450  			}
 48451  			iTrunk = decodeUint32(tls, aData)
 48452  		}
 48453  
 48454  		if rc == SQLITE_OK {
 48455  			var ii int32
 48456  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 48457  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 48458  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 48459  					continue
 48460  				}
 48461  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 48462  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48463  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 48464  					rc = SQLITE_OK
 48465  				}
 48466  			}
 48467  		}
 48468  
 48469  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48470  	}
 48471  
 48472  	sqlite3.Xsqlite3_free(tls, aData)
 48473  	return rc
 48474  }
 48475  
 48476  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 48477  	bp := tls.Alloc(52)
 48478  	defer tls.Free(52)
 48479  
 48480  	var rc int32
 48481  
 48482  	var pReal uintptr
 48483  	var iOff sqlite3_int64
 48484  	var iSize sqlite3_int64
 48485  	var aPage uintptr
 48486  
 48487  	var cksum u32
 48488  	_ = cksum
 48489  	var pgno u32
 48490  
 48491  	var ii u32
 48492  	rc = SQLITE_OK
 48493  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 48494  	iOff = int64(0)
 48495  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 48496  
 48497  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48498  	if !!(aPage != 0) {
 48499  		goto __1
 48500  	}
 48501  	return SQLITE_IOERR | int32(12)<<8
 48502  __1:
 48503  	;
 48504  	stop_ioerr_simulation(tls, bp, bp+4)
 48505  
 48506  __2:
 48507  	if !(rc == SQLITE_OK && iOff < iSize) {
 48508  		goto __3
 48509  	}
 48510  
 48511  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48512  	if !(rc != SQLITE_OK ||
 48513  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 48514  		goto __4
 48515  	}
 48516  	goto finish_rjf
 48517  __4:
 48518  	;
 48519  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 48520  
 48521  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 48522  		goto __5
 48523  	}
 48524  
 48525  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 48526  		goto __6
 48527  	}
 48528  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 48529  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 48530  		goto __7
 48531  	}
 48532  	goto __2
 48533  __7:
 48534  	;
 48535  __6:
 48536  	;
 48537  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 48538  __5:
 48539  	;
 48540  	ii = u32(0)
 48541  __8:
 48542  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 48543  		goto __10
 48544  	}
 48545  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 48546  	if !(rc == SQLITE_OK) {
 48547  		goto __11
 48548  	}
 48549  	pgno = decodeUint32(tls, bp+8)
 48550  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 48551  		goto __12
 48552  	}
 48553  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 48554  		goto __13
 48555  	}
 48556  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 48557  	if !(rc == SQLITE_OK) {
 48558  		goto __14
 48559  	}
 48560  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 48561  
 48562  __14:
 48563  	;
 48564  __13:
 48565  	;
 48566  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 48567  __12:
 48568  	;
 48569  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 48570  __11:
 48571  	;
 48572  	goto __9
 48573  __9:
 48574  	ii++
 48575  	goto __8
 48576  	goto __10
 48577  __10:
 48578  	;
 48579  	iOff = (iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44))-u32(1))) / sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44))) * sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 48580  	goto __2
 48581  __3:
 48582  	;
 48583  finish_rjf:
 48584  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 48585  	sqlite3.Xsqlite3_free(tls, aPage)
 48586  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 48587  		goto __15
 48588  	}
 48589  	rc = SQLITE_OK
 48590  __15:
 48591  	;
 48592  	return rc
 48593  }
 48594  
 48595  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 48596  	var rc int32
 48597  	var p uintptr = pFile
 48598  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48599  		if iOfst == int64(0) {
 48600  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48601  
 48602  			if iAmt == 28 {
 48603  				closeTransaction(tls, pMain)
 48604  			} else if iAmt != 12 {
 48605  				var z uintptr = zBuf
 48606  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 48607  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 48608  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 48609  					return rc
 48610  				}
 48611  			}
 48612  		}
 48613  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 48614  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 48615  		}
 48616  	}
 48617  
 48618  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48619  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 48620  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 48621  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 48622  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 48623  		} else {
 48624  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 48625  			_ = pgno
 48626  
 48627  		}
 48628  	}
 48629  
 48630  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 48631  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 48632  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48633  		var rc2 int32 = readJournalFile(tls, p, pMain)
 48634  		if rc == SQLITE_OK {
 48635  			rc = rc2
 48636  		}
 48637  	}
 48638  	return rc
 48639  }
 48640  
 48641  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 48642  	var p uintptr = pFile
 48643  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 48644  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48645  		closeTransaction(tls, pMain)
 48646  	}
 48647  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 48648  		var pgno u32
 48649  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 48650  		_ = locking_page
 48651  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 48652  		}
 48653  	}
 48654  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 48655  }
 48656  
 48657  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 48658  	var p uintptr = pFile
 48659  
 48660  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 48661  		var rc int32
 48662  		var pMain uintptr
 48663  
 48664  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 48665  
 48666  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 48667  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 48668  			rc = readJournalFile(tls, p, pMain)
 48669  			if rc != SQLITE_OK {
 48670  				return rc
 48671  			}
 48672  		}
 48673  	}
 48674  
 48675  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 48676  }
 48677  
 48678  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 48679  	var p uintptr = pFile
 48680  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 48681  }
 48682  
 48683  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48684  	var rc int32
 48685  	var p uintptr = pFile
 48686  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48687  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 48688  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48689  	}
 48690  	return rc
 48691  }
 48692  
 48693  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 48694  	var rc int32
 48695  	var p uintptr = pFile
 48696  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 48697  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 48698  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 48699  	}
 48700  	return rc
 48701  }
 48702  
 48703  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 48704  	var p uintptr = pFile
 48705  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 48706  }
 48707  
 48708  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 48709  	var p uintptr = pFile
 48710  	return (*struct {
 48711  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48712  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxFileControl})).f(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 48713  }
 48714  
 48715  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 48716  	var p uintptr = pFile
 48717  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48718  }
 48719  
 48720  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48721  	var p uintptr = pFile
 48722  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48723  }
 48724  
 48725  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48726  	var rc int32
 48727  	var p uintptr = pFile
 48728  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 48729  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*52
 48730  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 48731  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48732  
 48733  	if rc == SQLITE_OK {
 48734  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 48735  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 48736  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 48737  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 48738  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 48739  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48740  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48741  		enterJtMutex(tls)
 48742  		if zName != 0 {
 48743  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 48744  			g2.FpList = p
 48745  		}
 48746  		leaveJtMutex(tls)
 48747  	}
 48748  	return rc
 48749  }
 48750  
 48751  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48752  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 48753  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 48754  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 48755  		if pMain != 0 {
 48756  			closeTransaction(tls, pMain)
 48757  		}
 48758  	}
 48759  
 48760  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 48761  }
 48762  
 48763  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48764  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 48765  }
 48766  
 48767  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48768  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 48769  }
 48770  
 48771  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48772  	return (*struct {
 48773  		f func(*libc.TLS, uintptr, uintptr) uintptr
 48774  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 48775  }
 48776  
 48777  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48778  	(*struct {
 48779  		f func(*libc.TLS, uintptr, int32, uintptr)
 48780  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 48781  }
 48782  
 48783  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 48784  	return (*struct {
 48785  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 48786  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 48787  }
 48788  
 48789  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 48790  	(*struct {
 48791  		f func(*libc.TLS, uintptr, uintptr)
 48792  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 48793  }
 48794  
 48795  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 48796  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 48797  }
 48798  
 48799  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48800  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 48801  }
 48802  
 48803  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48804  	return (*struct {
 48805  		f func(*libc.TLS, uintptr, uintptr) int32
 48806  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 48807  }
 48808  
 48809  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48810  	return (*struct {
 48811  		f func(*libc.TLS, uintptr, uintptr) int32
 48812  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 48813  }
 48814  
 48815  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 48816  	return (*struct {
 48817  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48818  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 48819  }
 48820  
 48821  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 48822  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 48823  	if g2.FpVfs == uintptr(0) {
 48824  		return SQLITE_ERROR
 48825  	}
 48826  	jt_vfs.FszOsFile = int32(uint32(unsafe.Sizeof(jt_file{})) + uint32((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 48827  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 48828  		jt_vfs.FiVersion = 1
 48829  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 48830  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 48831  	}
 48832  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 48833  	return SQLITE_OK
 48834  }
 48835  
 48836  func jt_unregister(tls *libc.TLS) {
 48837  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 48838  }
 48839  
 48840  type MemFault = struct {
 48841  	FiCountdown   int32
 48842  	FnRepeat      int32
 48843  	FnBenign      int32
 48844  	FnFail        int32
 48845  	FnOkBefore    int32
 48846  	FnOkAfter     int32
 48847  	Fenable       u8
 48848  	F__ccgo_pad1  [3]byte
 48849  	FisInstalled  int32
 48850  	FisBenignMode int32
 48851  	Fm            sqlite3_mem_methods
 48852  }
 48853  
 48854  var memfault MemFault
 48855  
 48856  func sqlite3Fault(tls *libc.TLS) {
 48857  	cnt1++
 48858  }
 48859  
 48860  var cnt1 int32 = 0
 48861  
 48862  func sqlite3FirstFault(tls *libc.TLS) {
 48863  	cnt2++
 48864  }
 48865  
 48866  var cnt2 int32 = 0
 48867  
 48868  func faultsimStep(tls *libc.TLS) int32 {
 48869  	if !(int32(memfault.Fenable) != 0) {
 48870  		memfault.FnOkAfter++
 48871  		return 0
 48872  	}
 48873  	if memfault.FiCountdown > 0 {
 48874  		memfault.FiCountdown--
 48875  		memfault.FnOkBefore++
 48876  		return 0
 48877  	}
 48878  	if memfault.FnFail == 0 {
 48879  		sqlite3FirstFault(tls)
 48880  	}
 48881  	sqlite3Fault(tls)
 48882  	memfault.FnFail++
 48883  	if memfault.FisBenignMode > 0 {
 48884  		memfault.FnBenign++
 48885  	}
 48886  	memfault.FnRepeat--
 48887  	if memfault.FnRepeat <= 0 {
 48888  		memfault.Fenable = u8(0)
 48889  	}
 48890  	return 1
 48891  }
 48892  
 48893  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 48894  	var p uintptr = uintptr(0)
 48895  	if !(faultsimStep(tls) != 0) {
 48896  		p = (*struct {
 48897  			f func(*libc.TLS, int32) uintptr
 48898  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 48899  	}
 48900  	return p
 48901  }
 48902  
 48903  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 48904  	var p uintptr = uintptr(0)
 48905  	if !(faultsimStep(tls) != 0) {
 48906  		p = (*struct {
 48907  			f func(*libc.TLS, uintptr, int32) uintptr
 48908  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 48909  	}
 48910  	return p
 48911  }
 48912  
 48913  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 48914  	memfault.FiCountdown = nDelay
 48915  	memfault.FnRepeat = nRepeat
 48916  	memfault.FnBenign = 0
 48917  	memfault.FnFail = 0
 48918  	memfault.FnOkBefore = 0
 48919  	memfault.FnOkAfter = 0
 48920  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 48921  
 48922  	memfault.FisBenignMode = 0
 48923  }
 48924  
 48925  func faultsimFailures(tls *libc.TLS) int32 {
 48926  	return memfault.FnFail
 48927  }
 48928  
 48929  func faultsimBenignFailures(tls *libc.TLS) int32 {
 48930  	return memfault.FnBenign
 48931  }
 48932  
 48933  func faultsimPending(tls *libc.TLS) int32 {
 48934  	if memfault.Fenable != 0 {
 48935  		return memfault.FiCountdown
 48936  	} else {
 48937  		return -1
 48938  	}
 48939  	return int32(0)
 48940  }
 48941  
 48942  func faultsimBeginBenign(tls *libc.TLS) {
 48943  	memfault.FisBenignMode++
 48944  }
 48945  
 48946  func faultsimEndBenign(tls *libc.TLS) {
 48947  	memfault.FisBenignMode--
 48948  }
 48949  
 48950  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 48951  	bp := tls.Alloc(136)
 48952  	defer tls.Free(136)
 48953  
 48954  	var rc int32
 48955  
 48956  	install = func() int32 {
 48957  		if install != 0 {
 48958  			return 1
 48959  		}
 48960  		return 0
 48961  	}()
 48962  
 48963  	if install == memfault.FisInstalled {
 48964  		return SQLITE_ERROR
 48965  	}
 48966  
 48967  	if install != 0 {
 48968  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+36))
 48969  
 48970  		if rc == SQLITE_OK {
 48971  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 48972  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 48973  				f func(*libc.TLS, int32) uintptr
 48974  			}{faultsimMalloc}))
 48975  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 48976  				f func(*libc.TLS, uintptr, int32) uintptr
 48977  			}{faultsimRealloc}))
 48978  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 48979  		}
 48980  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48981  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 48982  	} else {
 48983  		libc.Xmemset(tls, bp+104, 0, uint32(unsafe.Sizeof(sqlite3_mem_methods{})))
 48984  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+104))
 48985  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+104))
 48986  
 48987  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+36))
 48988  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48989  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 48990  	}
 48991  
 48992  	if rc == SQLITE_OK {
 48993  		memfault.FisInstalled = 1
 48994  	}
 48995  	return rc
 48996  }
 48997  
 48998  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 48999  	bp := tls.Alloc(16)
 49000  	defer tls.Free(16)
 49001  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 49002  
 49003  	var i int32
 49004  	var k int32
 49005  
 49006  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 49007  		libc.Xstrcpy(tls, z, ts+14193)
 49008  		return
 49009  	}
 49010  	if uint32(unsafe.Sizeof(sqlite3_uint64(0))) == uint32(unsafe.Sizeof(uintptr(0))) {
 49011  		libc.Xmemcpy(tls, bp, bp+8, uint32(unsafe.Sizeof(uintptr(0))))
 49012  	} else if uint32(unsafe.Sizeof(uint32(0))) == uint32(unsafe.Sizeof(uintptr(0))) {
 49013  		libc.Xmemcpy(tls, bp+12, bp+8, uint32(unsafe.Sizeof(uint32(0))))
 49014  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 12)))
 49015  	} else {
 49016  	}
 49017  	i = 0
 49018  	k = int32(uint32(unsafe.Sizeof(uintptr(0)))*uint32(2) - uint32(1))
 49019  __1:
 49020  	if !(uint32(i) < uint32(unsafe.Sizeof(uintptr(0)))*uint32(2)) {
 49021  		goto __3
 49022  	}
 49023  	{
 49024  		*(*int8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 49025  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 49026  
 49027  	}
 49028  	goto __2
 49029  __2:
 49030  	i++
 49031  	k--
 49032  	goto __1
 49033  	goto __3
 49034  __3:
 49035  	;
 49036  	*(*int8)(unsafe.Pointer(z + 8)) = int8(0)
 49037  }
 49038  
 49039  var zHex = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 49040  
 49041  func hexToInt(tls *libc.TLS, h int32) int32 {
 49042  	if h >= '0' && h <= '9' {
 49043  		return h - '0'
 49044  	} else if h >= 'a' && h <= 'f' {
 49045  		return h - 'a' + 10
 49046  	} else {
 49047  		return -1
 49048  	}
 49049  	return int32(0)
 49050  }
 49051  
 49052  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 49053  	bp := tls.Alloc(12)
 49054  	defer tls.Free(12)
 49055  
 49056  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 49057  	var i int32
 49058  
 49059  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(uintptr(0)))*uint32(2) && *(*int8)(unsafe.Pointer(z)) != 0; i++ {
 49060  		var v int32
 49061  		v = hexToInt(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 49062  		if v < 0 {
 49063  			return TCL_ERROR
 49064  		}
 49065  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 49066  	}
 49067  	if int32(*(*int8)(unsafe.Pointer(z))) != 0 {
 49068  		return TCL_ERROR
 49069  	}
 49070  	if uint32(unsafe.Sizeof(sqlite3_uint64(0))) == uint32(unsafe.Sizeof(uintptr(0))) {
 49071  		libc.Xmemcpy(tls, pp, bp, uint32(unsafe.Sizeof(sqlite3_uint64(0))))
 49072  	} else if uint32(unsafe.Sizeof(uint32(0))) == uint32(unsafe.Sizeof(uintptr(0))) {
 49073  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 49074  		libc.Xmemcpy(tls, pp, bp+8, uint32(unsafe.Sizeof(uint32(0))))
 49075  	} else {
 49076  	}
 49077  	return TCL_OK
 49078  }
 49079  
 49080  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49081  	bp := tls.Alloc(120)
 49082  	defer tls.Free(120)
 49083  
 49084  	var p uintptr
 49085  
 49086  	if objc != 2 {
 49087  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 49088  		return TCL_ERROR
 49089  	}
 49090  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 49091  		return TCL_ERROR
 49092  	}
 49093  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 49094  	pointerToText(tls, p, bp+20)
 49095  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 49096  	return TCL_OK
 49097  }
 49098  
 49099  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49100  	bp := tls.Alloc(148)
 49101  	defer tls.Free(148)
 49102  
 49103  	var p uintptr
 49104  
 49105  	if objc != 3 {
 49106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 49107  		return TCL_ERROR
 49108  	}
 49109  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+40) != 0 {
 49110  		return TCL_ERROR
 49111  	}
 49112  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+44) != 0 {
 49113  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 49114  		return TCL_ERROR
 49115  	}
 49116  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 44)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 49117  	pointerToText(tls, p, bp+48)
 49118  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 49119  	return TCL_OK
 49120  }
 49121  
 49122  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49123  	bp := tls.Alloc(28)
 49124  	defer tls.Free(28)
 49125  
 49126  	if objc != 2 {
 49127  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 49128  		return TCL_ERROR
 49129  	}
 49130  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+24) != 0 {
 49131  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 49132  		return TCL_ERROR
 49133  	}
 49134  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 49135  	return TCL_OK
 49136  }
 49137  
 49138  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49139  	bp := tls.Alloc(168)
 49140  	defer tls.Free(168)
 49141  
 49142  	var i int32
 49143  	var zHex uintptr
 49144  	var zOut uintptr
 49145  
 49146  	if objc != 4 {
 49147  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 49148  		return TCL_ERROR
 49149  	}
 49150  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+56) != 0 {
 49151  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 49152  		return TCL_ERROR
 49153  	}
 49154  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+60) != 0 {
 49155  		return TCL_ERROR
 49156  	}
 49157  	if *(*int32)(unsafe.Pointer(bp + 60)) <= 0 {
 49158  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49159  		return TCL_ERROR
 49160  	}
 49161  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+64)
 49162  	if uint32(*(*int32)(unsafe.Pointer(bp + 64))) > uint32(unsafe.Sizeof([100]int8{}))*uint32(2) {
 49163  		*(*int32)(unsafe.Pointer(bp + 64)) = int32(uint32(unsafe.Sizeof([100]int8{})) * uint32(2))
 49164  	}
 49165  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 64)), bp+68)
 49166  	if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 49167  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 49168  		return TCL_ERROR
 49169  	}
 49170  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 49171  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 60)); i++ {
 49172  		*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(bp + 68 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 64)))))
 49173  	}
 49174  	return TCL_OK
 49175  }
 49176  
 49177  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49178  	bp := tls.Alloc(164)
 49179  	defer tls.Free(164)
 49180  
 49181  	var n int32
 49182  	var zBin uintptr
 49183  
 49184  	if objc != 3 {
 49185  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 49186  		return TCL_ERROR
 49187  	}
 49188  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+56) != 0 {
 49189  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), uintptr(0)))
 49190  		return TCL_ERROR
 49191  	}
 49192  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+60) != 0 {
 49193  		return TCL_ERROR
 49194  	}
 49195  	if *(*int32)(unsafe.Pointer(bp + 60)) <= 0 {
 49196  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 49197  		return TCL_ERROR
 49198  	}
 49199  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 49200  	for *(*int32)(unsafe.Pointer(bp + 60)) > 0 {
 49201  		if uint32(*(*int32)(unsafe.Pointer(bp + 60))) > (uint32(unsafe.Sizeof([100]int8{}))-uint32(1))/uint32(2) {
 49202  			n = int32((uint32(unsafe.Sizeof([100]int8{})) - uint32(1)) / uint32(2))
 49203  		} else {
 49204  			n = *(*int32)(unsafe.Pointer(bp + 60))
 49205  		}
 49206  		libc.Xmemcpy(tls, bp+64, zBin, uint32(n))
 49207  		zBin += uintptr(n)
 49208  		*(*int32)(unsafe.Pointer(bp + 60)) -= n
 49209  		sqlite3TestBinToHex(tls, bp+64, n)
 49210  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, uintptr(0)))
 49211  	}
 49212  	return TCL_OK
 49213  }
 49214  
 49215  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49216  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 49217  	return TCL_OK
 49218  }
 49219  
 49220  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49221  	bp := tls.Alloc(4)
 49222  	defer tls.Free(4)
 49223  
 49224  	*(*int32)(unsafe.Pointer(bp)) = 0
 49225  	if objc != 1 && objc != 2 {
 49226  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 49227  		return TCL_ERROR
 49228  	}
 49229  	if objc == 2 {
 49230  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 49231  			return TCL_ERROR
 49232  		}
 49233  	}
 49234  	tcl.XTcl_SetObjResult(tls, interp,
 49235  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 49236  	return TCL_OK
 49237  }
 49238  
 49239  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49240  	bp := tls.Alloc(4)
 49241  	defer tls.Free(4)
 49242  
 49243  	if objc != 2 {
 49244  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 49245  		return TCL_ERROR
 49246  	}
 49247  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 49248  		return TCL_ERROR
 49249  	}
 49250  	return TCL_OK
 49251  }
 49252  
 49253  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49254  	if objc != 2 {
 49255  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49256  		return TCL_ERROR
 49257  	}
 49258  	return TCL_OK
 49259  }
 49260  
 49261  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49262  	var nMalloc int32 = -1
 49263  	if objc != 1 {
 49264  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49265  		return TCL_ERROR
 49266  	}
 49267  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 49268  	return TCL_OK
 49269  }
 49270  
 49271  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49272  	bp := tls.Alloc(36)
 49273  	defer tls.Free(36)
 49274  
 49275  	var ii int32
 49276  
 49277  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 49278  	var pBenignCnt uintptr = uintptr(0)
 49279  	var nBenign int32
 49280  	var nFail int32 = 0
 49281  
 49282  	if objc < 2 {
 49283  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 49284  		return TCL_ERROR
 49285  	}
 49286  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+24) != 0 {
 49287  		return TCL_ERROR
 49288  	}
 49289  
 49290  	for ii = 2; ii < objc; ii = ii + 2 {
 49291  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*4)), bp+28)
 49292  		var zErr uintptr = uintptr(0)
 49293  
 49294  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint32(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49295  			if ii == objc-1 {
 49296  				zErr = ts + 12638
 49297  			} else {
 49298  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*4)), bp+32) != 0 {
 49299  					return TCL_ERROR
 49300  				}
 49301  			}
 49302  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint32(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 49303  			if ii == objc-1 {
 49304  				zErr = ts + 12638
 49305  			} else {
 49306  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*4))
 49307  			}
 49308  		} else {
 49309  			zErr = ts + 12444
 49310  		}
 49311  
 49312  		if zErr != 0 {
 49313  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 49314  			return TCL_ERROR
 49315  		}
 49316  	}
 49317  
 49318  	nBenign = faultsimBenignFailures(tls)
 49319  	nFail = faultsimFailures(tls)
 49320  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 49321  
 49322  	if pBenignCnt != 0 {
 49323  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 49324  	}
 49325  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 49326  	return TCL_OK
 49327  }
 49328  
 49329  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49330  	var nPending int32
 49331  	if objc != 1 {
 49332  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 49333  		return TCL_ERROR
 49334  	}
 49335  	nPending = faultsimPending(tls)
 49336  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 49337  	return TCL_OK
 49338  }
 49339  
 49340  var sqlite3_memdebug_title_count int32 = 0
 49341  
 49342  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49343  	sqlite3_memdebug_title_count++
 49344  	if objc != 2 {
 49345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 49346  		return TCL_ERROR
 49347  	}
 49348  	return TCL_OK
 49349  }
 49350  
 49351  var aMallocLog Tcl_HashTable
 49352  var mallocLogEnabled int32 = 0
 49353  
 49354  type MallocLog1 = struct {
 49355  	FnCall int32
 49356  	FnByte int32
 49357  }
 49358  
 49359  type MallocLog = MallocLog1
 49360  
 49361  func test_memdebug_log_clear(tls *libc.TLS) {
 49362  	bp := tls.Alloc(12)
 49363  	defer tls.Free(12)
 49364  
 49365  	var pEntry uintptr
 49366  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 49367  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49368  		tcl.XTcl_Free(tls, pLog)
 49369  	}
 49370  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 49371  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint32(10)*func() uint32 {
 49372  		if uint32(unsafe.Sizeof(int32(0))) >= uint32(unsafe.Sizeof(uintptr(0))) {
 49373  			return uint32(1)
 49374  		}
 49375  		return uint32(unsafe.Sizeof(uintptr(0))) / uint32(unsafe.Sizeof(int32(0)))
 49376  	}()))
 49377  }
 49378  
 49379  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49380  	bp := tls.Alloc(64)
 49381  	defer tls.Free(64)
 49382  
 49383  	if !(isInit != 0) {
 49384  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint32(10)*func() uint32 {
 49385  			if uint32(unsafe.Sizeof(int32(0))) >= uint32(unsafe.Sizeof(uintptr(0))) {
 49386  				return uint32(1)
 49387  			}
 49388  			return uint32(unsafe.Sizeof(uintptr(0))) / uint32(unsafe.Sizeof(int32(0)))
 49389  		}()))
 49390  		isInit = 1
 49391  	}
 49392  
 49393  	if objc < 2 {
 49394  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 49395  	}
 49396  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&MB_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp) != 0 {
 49397  		return TCL_ERROR
 49398  	}
 49399  
 49400  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 49401  	case uint32(0):
 49402  		mallocLogEnabled = 1
 49403  		break
 49404  	case uint32(1):
 49405  		mallocLogEnabled = 0
 49406  		break
 49407  	case uint32(2):
 49408  		{
 49409  			var pEntry uintptr
 49410  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 49411  
 49412  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+4); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+4) {
 49413  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 49414  				var aKey uintptr = func() uintptr {
 49415  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 49416  						return *(*uintptr)(unsafe.Pointer(pEntry + 16))
 49417  					}
 49418  					return pEntry + 16
 49419  				}()
 49420  				var ii int32
 49421  
 49422  				*(*uintptr)(unsafe.Pointer(bp + 16)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 49423  				*(*uintptr)(unsafe.Pointer(bp + 16 + 1*4)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 49424  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 49425  					*(*uintptr)(unsafe.Pointer(bp + 16 + uintptr(ii+2)*4)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 49426  				}
 49427  
 49428  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 49429  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+16))
 49430  			}
 49431  
 49432  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 49433  			break
 49434  
 49435  		}
 49436  	case uint32(3):
 49437  		{
 49438  			test_memdebug_log_clear(tls)
 49439  			break
 49440  
 49441  		}
 49442  
 49443  	case uint32(4):
 49444  		{
 49445  			break
 49446  
 49447  		}
 49448  	}
 49449  
 49450  	return TCL_OK
 49451  }
 49452  
 49453  var isInit int32 = 0
 49454  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 49455  
 49456  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49457  	bp := tls.Alloc(56)
 49458  	defer tls.Free(56)
 49459  
 49460  	var pRes uintptr
 49461  	if objc != 3 {
 49462  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 49463  		return TCL_ERROR
 49464  	}
 49465  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+48) != 0 {
 49466  		return TCL_ERROR
 49467  	}
 49468  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+52) != 0 {
 49469  		return TCL_ERROR
 49470  	}
 49471  	libc.Xfree(tls, buf1)
 49472  	buf1 = uintptr(0)
 49473  
 49474  	pRes = tcl.XTcl_NewObj(tls)
 49475  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 49476  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 49477  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 49478  
 49479  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 49480  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 49481  	} else {
 49482  		buf1 = libc.Xmalloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 49483  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49484  	}
 49485  	return TCL_OK
 49486  }
 49487  
 49488  var buf1 uintptr = uintptr(0)
 49489  
 49490  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49491  	bp := tls.Alloc(32)
 49492  	defer tls.Free(32)
 49493  
 49494  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49495  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 49496  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 49497  	if objc < 2 || objc > 5 {
 49498  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 49499  			ts+33032)
 49500  		return TCL_ERROR
 49501  	}
 49502  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 49503  		return TCL_ERROR
 49504  	}
 49505  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+20) != 0 {
 49506  		return TCL_ERROR
 49507  	}
 49508  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+24) != 0 {
 49509  		return TCL_ERROR
 49510  	}
 49511  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+28) != 0 {
 49512  		return TCL_ERROR
 49513  	}
 49514  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 49515  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 49516  			uintptr(0)))
 49517  		return TCL_ERROR
 49518  	}
 49519  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 49520  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 49521  	return TCL_OK
 49522  }
 49523  
 49524  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49525  	bp := tls.Alloc(12)
 49526  	defer tls.Free(12)
 49527  
 49528  	var rc int32
 49529  	if objc != 2 {
 49530  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49531  		return TCL_ERROR
 49532  	}
 49533  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 49534  		return TCL_ERROR
 49535  	}
 49536  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49537  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49538  	return TCL_OK
 49539  }
 49540  
 49541  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49542  	bp := tls.Alloc(24)
 49543  	defer tls.Free(24)
 49544  
 49545  	var pRet uintptr
 49546  	if objc != 3 {
 49547  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 49548  		return TCL_ERROR
 49549  	}
 49550  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16) != 0 {
 49551  		return TCL_ERROR
 49552  	}
 49553  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+20) != 0 {
 49554  		return TCL_ERROR
 49555  	}
 49556  	pRet = tcl.XTcl_NewObj(tls)
 49557  	tcl.XTcl_ListObjAppendElement(tls,
 49558  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 49559  	tcl.XTcl_ListObjAppendElement(tls,
 49560  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 49561  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 49562  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 49563  	return TCL_OK
 49564  }
 49565  
 49566  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49567  	bp := tls.Alloc(80)
 49568  	defer tls.Free(80)
 49569  
 49570  	var rc int32
 49571  
 49572  	if objc != 5 {
 49573  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 49574  		return TCL_ERROR
 49575  	}
 49576  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+64) != 0 {
 49577  		return TCL_ERROR
 49578  	}
 49579  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+68) != 0 {
 49580  		return TCL_ERROR
 49581  	}
 49582  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+72) != 0 {
 49583  		return TCL_ERROR
 49584  	}
 49585  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+76) != 0 {
 49586  		return TCL_ERROR
 49587  	}
 49588  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 49589  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), SQLITE_DBCONFIG_LOOKASIDE, libc.VaList(bp, uintptr(0), *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 76))))
 49590  	} else if *(*int32)(unsafe.Pointer(bp + 68)) >= 1 && *(*int32)(unsafe.Pointer(bp + 68)) <= 2 && uint32(*(*int32)(unsafe.Pointer(bp + 72))**(*int32)(unsafe.Pointer(bp + 76))) <= uint32(unsafe.Sizeof([10000]int8{})) {
 49591  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), SQLITE_DBCONFIG_LOOKASIDE, libc.VaList(bp+24, uintptr(unsafe.Pointer(&azBuf))+uintptr(*(*int32)(unsafe.Pointer(bp + 68)))*10000, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 76))))
 49592  	} else {
 49593  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 49594  		return TCL_ERROR
 49595  	}
 49596  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 49597  	return TCL_OK
 49598  }
 49599  
 49600  var azBuf [2][10000]int8
 49601  
 49602  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49603  	bp := tls.Alloc(56)
 49604  	defer tls.Free(56)
 49605  
 49606  	var rc int32
 49607  
 49608  	var aArg uintptr = objv + 1*4
 49609  	var nArg int32 = objc - 1
 49610  
 49611  	if nArg != 2 {
 49612  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 49613  		return TCL_ERROR
 49614  	}
 49615  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 49616  		return TCL_ERROR
 49617  	}
 49618  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*4)), bp+52) != 0 {
 49619  		return TCL_ERROR
 49620  	}
 49621  
 49622  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 49623  		libc.Xfree(tls, zBuf)
 49624  		zBuf = uintptr(0)
 49625  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 49626  	} else {
 49627  		zBuf = libc.Xrealloc(tls, zBuf, uint32(*(*int32)(unsafe.Pointer(bp + 48))))
 49628  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 49629  	}
 49630  
 49631  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49632  	return TCL_OK
 49633  }
 49634  
 49635  var zBuf uintptr
 49636  
 49637  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49638  	bp := tls.Alloc(12)
 49639  	defer tls.Free(12)
 49640  
 49641  	var rc int32
 49642  
 49643  	var aArg uintptr = objv + 1*4
 49644  	var nArg int32 = objc - 1
 49645  
 49646  	if nArg != 1 {
 49647  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 49648  		return TCL_ERROR
 49649  	}
 49650  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 49651  		return TCL_ERROR
 49652  	}
 49653  
 49654  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49655  
 49656  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49657  	return TCL_OK
 49658  }
 49659  
 49660  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49661  	bp := tls.Alloc(36)
 49662  	defer tls.Free(36)
 49663  
 49664  	if objc != 2 && objc != 1 {
 49665  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 49666  		return TCL_ERROR
 49667  	}
 49668  	if objc == 2 {
 49669  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+32) != 0 {
 49670  			return TCL_ERROR
 49671  		}
 49672  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 49673  			tcl.XTcl_AppendResult(tls, interp,
 49674  				libc.VaList(bp, ts+33209,
 49675  					uintptr(0)))
 49676  			return TCL_ERROR
 49677  		}
 49678  	} else {
 49679  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 49680  			tcl.XTcl_AppendResult(tls, interp,
 49681  				libc.VaList(bp+16, ts+33267,
 49682  					uintptr(0)))
 49683  			return TCL_ERROR
 49684  		}
 49685  	}
 49686  	return TCL_OK
 49687  }
 49688  
 49689  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49690  	bp := tls.Alloc(12)
 49691  	defer tls.Free(12)
 49692  
 49693  	var rc int32
 49694  
 49695  	if objc != 2 {
 49696  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49697  		return TCL_ERROR
 49698  	}
 49699  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 49700  		return TCL_ERROR
 49701  	}
 49702  
 49703  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49704  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49705  
 49706  	return TCL_OK
 49707  }
 49708  
 49709  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49710  	bp := tls.Alloc(12)
 49711  	defer tls.Free(12)
 49712  
 49713  	var rc int32
 49714  
 49715  	if objc != 2 {
 49716  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49717  		return TCL_ERROR
 49718  	}
 49719  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 49720  		return TCL_ERROR
 49721  	}
 49722  
 49723  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49724  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49725  
 49726  	return TCL_OK
 49727  }
 49728  
 49729  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49730  	bp := tls.Alloc(12)
 49731  	defer tls.Free(12)
 49732  
 49733  	var rc int32
 49734  
 49735  	if objc != 2 {
 49736  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49737  		return TCL_ERROR
 49738  	}
 49739  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+8) != 0 {
 49740  		return TCL_ERROR
 49741  	}
 49742  
 49743  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49744  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49745  
 49746  	return TCL_OK
 49747  }
 49748  
 49749  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49750  	if objc != 2 {
 49751  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49752  		return TCL_ERROR
 49753  	}
 49754  
 49755  	switch int32(clientData) {
 49756  	case 3:
 49757  		{
 49758  		}
 49759  		fallthrough
 49760  	case 5:
 49761  		{
 49762  		}
 49763  	}
 49764  	return TCL_OK
 49765  }
 49766  
 49767  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49768  	bp := tls.Alloc(16)
 49769  	defer tls.Free(16)
 49770  
 49771  	var rc int32
 49772  
 49773  	var i int32
 49774  	*(*int32)(unsafe.Pointer(bp)) = 0
 49775  
 49776  	var zOpName uintptr
 49777  	var pResult uintptr
 49778  	if objc != 3 {
 49779  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 49780  		return TCL_ERROR
 49781  	}
 49782  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 49783  	for i = 0; i < int32(uint32(unsafe.Sizeof(aOp1))/uint32(unsafe.Sizeof(struct {
 49784  		FzName uintptr
 49785  		Fop    int32
 49786  	}{}))); i++ {
 49787  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 49788  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 49789  			break
 49790  		}
 49791  	}
 49792  	if i >= int32(uint32(unsafe.Sizeof(aOp1))/uint32(unsafe.Sizeof(struct {
 49793  		FzName uintptr
 49794  		Fop    int32
 49795  	}{}))) {
 49796  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 49797  			return TCL_ERROR
 49798  		}
 49799  	}
 49800  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 49801  		return TCL_ERROR
 49802  	}
 49803  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49804  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 49805  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 49806  	pResult = tcl.XTcl_NewObj(tls)
 49807  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49808  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 49809  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 49810  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49811  	return TCL_OK
 49812  }
 49813  
 49814  var aOp1 = [10]struct {
 49815  	FzName uintptr
 49816  	Fop    int32
 49817  }{
 49818  	{FzName: ts + 33338},
 49819  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 49820  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 49821  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 49822  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 49823  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 49824  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 49825  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 49826  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 49827  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 49828  }
 49829  
 49830  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49831  	bp := tls.Alloc(20)
 49832  	defer tls.Free(20)
 49833  
 49834  	var rc int32
 49835  
 49836  	var i int32
 49837  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 49838  
 49839  	var zOpName uintptr
 49840  
 49841  	var pResult uintptr
 49842  	if objc != 4 {
 49843  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 49844  		return TCL_ERROR
 49845  	}
 49846  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 49847  		return TCL_ERROR
 49848  	}
 49849  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 49850  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint32(7)) == 0 {
 49851  		zOpName += uintptr(7)
 49852  	}
 49853  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint32(9)) == 0 {
 49854  		zOpName += uintptr(9)
 49855  	}
 49856  	for i = 0; i < int32(uint32(unsafe.Sizeof(aOp2))/uint32(unsafe.Sizeof(struct {
 49857  		FzName uintptr
 49858  		Fop    int32
 49859  	}{}))); i++ {
 49860  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 49861  			*(*int32)(unsafe.Pointer(bp + 4)) = aOp2[i].Fop
 49862  			break
 49863  		}
 49864  	}
 49865  	if i >= int32(uint32(unsafe.Sizeof(aOp2))/uint32(unsafe.Sizeof(struct {
 49866  		FzName uintptr
 49867  		Fop    int32
 49868  	}{}))) {
 49869  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+4) != 0 {
 49870  			return TCL_ERROR
 49871  		}
 49872  	}
 49873  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+8) != 0 {
 49874  		return TCL_ERROR
 49875  	}
 49876  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 49877  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 49878  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)), bp+12, bp+16, *(*int32)(unsafe.Pointer(bp + 8)))
 49879  	pResult = tcl.XTcl_NewObj(tls)
 49880  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49881  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 49882  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 49883  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49884  	return TCL_OK
 49885  }
 49886  
 49887  var aOp2 = [13]struct {
 49888  	FzName uintptr
 49889  	Fop    int32
 49890  }{
 49891  	{FzName: ts + 33661},
 49892  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 49893  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 49894  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 49895  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 49896  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 49897  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 49898  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 49899  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 49900  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 49901  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 49902  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 49903  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 49904  }
 49905  
 49906  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49907  	bp := tls.Alloc(4)
 49908  	defer tls.Free(4)
 49909  
 49910  	var rc int32
 49911  
 49912  	if objc != 2 {
 49913  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49914  		return TCL_ERROR
 49915  	}
 49916  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) {
 49917  		return TCL_ERROR
 49918  	}
 49919  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 49920  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49921  	return TCL_OK
 49922  }
 49923  
 49924  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49925  	var rc int32 = SQLITE_MISUSE
 49926  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49927  	return TCL_OK
 49928  }
 49929  
 49930  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49931  	bp := tls.Alloc(4)
 49932  	defer tls.Free(4)
 49933  
 49934  	if objc > 2 {
 49935  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 49936  		return TCL_ERROR
 49937  	} else if objc == 2 {
 49938  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp) != 0 {
 49939  			return TCL_ERROR
 49940  		}
 49941  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 49942  	}
 49943  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 49944  	return TCL_OK
 49945  }
 49946  
 49947  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 49948  	var i int32
 49949  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd11))/uint32(unsafe.Sizeof(struct {
 49950  		FzName      uintptr
 49951  		FxProc      uintptr
 49952  		FclientData int32
 49953  	}{})); i++ {
 49954  		var c ClientData = uintptr(aObjCmd11[i].FclientData)
 49955  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 49956  	}
 49957  	return TCL_OK
 49958  }
 49959  
 49960  var aObjCmd11 = [32]struct {
 49961  	FzName      uintptr
 49962  	FxProc      uintptr
 49963  	FclientData int32
 49964  }{
 49965  	{FzName: ts + 28095, FxProc: 0},
 49966  	{FzName: ts + 28110, FxProc: 0},
 49967  	{FzName: ts + 33849, FxProc: 0},
 49968  	{FzName: ts + 33862, FxProc: 0},
 49969  	{FzName: ts + 33869, FxProc: 0},
 49970  	{FzName: ts + 33876, FxProc: 0},
 49971  	{FzName: ts + 33896, FxProc: 0},
 49972  	{FzName: ts + 33921, FxProc: 0},
 49973  	{FzName: ts + 33948, FxProc: 0},
 49974  	{FzName: ts + 33970, FxProc: 0},
 49975  	{FzName: ts + 33992, FxProc: 0},
 49976  	{FzName: ts + 34017, FxProc: 0},
 49977  	{FzName: ts + 34043, FxProc: 0},
 49978  	{FzName: ts + 34073, FxProc: 0},
 49979  	{FzName: ts + 34094, FxProc: 0},
 49980  	{FzName: ts + 34119, FxProc: 0},
 49981  	{FzName: ts + 34145, FxProc: 0},
 49982  	{FzName: ts + 34160, FxProc: 0},
 49983  	{FzName: ts + 34178, FxProc: 0},
 49984  	{FzName: ts + 34202, FxProc: 0},
 49985  	{FzName: ts + 34222, FxProc: 0},
 49986  	{FzName: ts + 34247, FxProc: 0},
 49987  	{FzName: ts + 34272, FxProc: 0},
 49988  	{FzName: ts + 34297, FxProc: 0},
 49989  	{FzName: ts + 34318, FxProc: 0},
 49990  	{FzName: ts + 34337, FxProc: 0},
 49991  	{FzName: ts + 34356, FxProc: 0},
 49992  	{FzName: ts + 34377, FxProc: 0},
 49993  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 49994  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 49995  	{FzName: ts + 34447, FxProc: 0},
 49996  	{FzName: ts + 34471, FxProc: 0},
 49997  }
 49998  
 49999  type fd_set4 = struct{ F__fds_bits [32]int32 }
 50000  
 50001  type MD5Context1 = struct {
 50002  	FisInit int32
 50003  	Fbuf    [4]uint32
 50004  	Fbits   [2]uint32
 50005  	Fin     [64]uint8
 50006  }
 50007  
 50008  type MD5Context = MD5Context1
 50009  
 50010  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 50011  	var t uint32
 50012  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 50013  		t = (uint32(*(*uint8)(unsafe.Pointer(buf + 3)))<<8|uint32(*(*uint8)(unsafe.Pointer(buf + 2))))<<16 | (uint32(*(*uint8)(unsafe.Pointer(buf + 1)))<<8 | uint32(*(*uint8)(unsafe.Pointer(buf))))
 50014  		*(*uint32)(unsafe.Pointer(buf)) = t
 50015  		buf += uintptr(4)
 50016  	}
 50017  }
 50018  
 50019  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 50020  	var a uint32
 50021  	var b uint32
 50022  	var c uint32
 50023  	var d uint32
 50024  
 50025  	a = *(*uint32)(unsafe.Pointer(buf))
 50026  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 50027  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 50028  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 50029  
 50030  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 50031  	a = a<<7 | a>>(32-7)
 50032  	a = a + b
 50033  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 50034  	d = d<<12 | d>>(32-12)
 50035  	d = d + a
 50036  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 50037  	c = c<<17 | c>>(32-17)
 50038  	c = c + d
 50039  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 50040  	b = b<<22 | b>>(32-22)
 50041  	b = b + c
 50042  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 50043  	a = a<<7 | a>>(32-7)
 50044  	a = a + b
 50045  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 50046  	d = d<<12 | d>>(32-12)
 50047  	d = d + a
 50048  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 50049  	c = c<<17 | c>>(32-17)
 50050  	c = c + d
 50051  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 50052  	b = b<<22 | b>>(32-22)
 50053  	b = b + c
 50054  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 50055  	a = a<<7 | a>>(32-7)
 50056  	a = a + b
 50057  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 50058  	d = d<<12 | d>>(32-12)
 50059  	d = d + a
 50060  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 50061  	c = c<<17 | c>>(32-17)
 50062  	c = c + d
 50063  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 50064  	b = b<<22 | b>>(32-22)
 50065  	b = b + c
 50066  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 50067  	a = a<<7 | a>>(32-7)
 50068  	a = a + b
 50069  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 50070  	d = d<<12 | d>>(32-12)
 50071  	d = d + a
 50072  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 50073  	c = c<<17 | c>>(32-17)
 50074  	c = c + d
 50075  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 50076  	b = b<<22 | b>>(32-22)
 50077  	b = b + c
 50078  
 50079  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 50080  	a = a<<5 | a>>(32-5)
 50081  	a = a + b
 50082  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 50083  	d = d<<9 | d>>(32-9)
 50084  	d = d + a
 50085  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 50086  	c = c<<14 | c>>(32-14)
 50087  	c = c + d
 50088  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 50089  	b = b<<20 | b>>(32-20)
 50090  	b = b + c
 50091  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 50092  	a = a<<5 | a>>(32-5)
 50093  	a = a + b
 50094  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 50095  	d = d<<9 | d>>(32-9)
 50096  	d = d + a
 50097  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 50098  	c = c<<14 | c>>(32-14)
 50099  	c = c + d
 50100  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 50101  	b = b<<20 | b>>(32-20)
 50102  	b = b + c
 50103  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 50104  	a = a<<5 | a>>(32-5)
 50105  	a = a + b
 50106  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 50107  	d = d<<9 | d>>(32-9)
 50108  	d = d + a
 50109  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 50110  	c = c<<14 | c>>(32-14)
 50111  	c = c + d
 50112  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 50113  	b = b<<20 | b>>(32-20)
 50114  	b = b + c
 50115  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 50116  	a = a<<5 | a>>(32-5)
 50117  	a = a + b
 50118  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 50119  	d = d<<9 | d>>(32-9)
 50120  	d = d + a
 50121  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 50122  	c = c<<14 | c>>(32-14)
 50123  	c = c + d
 50124  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 50125  	b = b<<20 | b>>(32-20)
 50126  	b = b + c
 50127  
 50128  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 50129  	a = a<<4 | a>>(32-4)
 50130  	a = a + b
 50131  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 50132  	d = d<<11 | d>>(32-11)
 50133  	d = d + a
 50134  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 50135  	c = c<<16 | c>>(32-16)
 50136  	c = c + d
 50137  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 50138  	b = b<<23 | b>>(32-23)
 50139  	b = b + c
 50140  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 50141  	a = a<<4 | a>>(32-4)
 50142  	a = a + b
 50143  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 50144  	d = d<<11 | d>>(32-11)
 50145  	d = d + a
 50146  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 50147  	c = c<<16 | c>>(32-16)
 50148  	c = c + d
 50149  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 50150  	b = b<<23 | b>>(32-23)
 50151  	b = b + c
 50152  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 50153  	a = a<<4 | a>>(32-4)
 50154  	a = a + b
 50155  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 50156  	d = d<<11 | d>>(32-11)
 50157  	d = d + a
 50158  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 50159  	c = c<<16 | c>>(32-16)
 50160  	c = c + d
 50161  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 50162  	b = b<<23 | b>>(32-23)
 50163  	b = b + c
 50164  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 50165  	a = a<<4 | a>>(32-4)
 50166  	a = a + b
 50167  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 50168  	d = d<<11 | d>>(32-11)
 50169  	d = d + a
 50170  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 50171  	c = c<<16 | c>>(32-16)
 50172  	c = c + d
 50173  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 50174  	b = b<<23 | b>>(32-23)
 50175  	b = b + c
 50176  
 50177  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 50178  	a = a<<6 | a>>(32-6)
 50179  	a = a + b
 50180  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 50181  	d = d<<10 | d>>(32-10)
 50182  	d = d + a
 50183  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 50184  	c = c<<15 | c>>(32-15)
 50185  	c = c + d
 50186  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 50187  	b = b<<21 | b>>(32-21)
 50188  	b = b + c
 50189  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 50190  	a = a<<6 | a>>(32-6)
 50191  	a = a + b
 50192  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 50193  	d = d<<10 | d>>(32-10)
 50194  	d = d + a
 50195  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 50196  	c = c<<15 | c>>(32-15)
 50197  	c = c + d
 50198  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 50199  	b = b<<21 | b>>(32-21)
 50200  	b = b + c
 50201  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 50202  	a = a<<6 | a>>(32-6)
 50203  	a = a + b
 50204  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 50205  	d = d<<10 | d>>(32-10)
 50206  	d = d + a
 50207  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 50208  	c = c<<15 | c>>(32-15)
 50209  	c = c + d
 50210  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 50211  	b = b<<21 | b>>(32-21)
 50212  	b = b + c
 50213  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 50214  	a = a<<6 | a>>(32-6)
 50215  	a = a + b
 50216  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 50217  	d = d<<10 | d>>(32-10)
 50218  	d = d + a
 50219  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 50220  	c = c<<15 | c>>(32-15)
 50221  	c = c + d
 50222  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 50223  	b = b<<21 | b>>(32-21)
 50224  	b = b + c
 50225  
 50226  	*(*uint32)(unsafe.Pointer(buf)) += a
 50227  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 50228  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 50229  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 50230  }
 50231  
 50232  func MD5Init(tls *libc.TLS, ctx uintptr) {
 50233  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 50234  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 50235  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 50236  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 50237  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 50238  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 50239  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 50240  }
 50241  
 50242  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 50243  	var t uint32
 50244  
 50245  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 50246  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 50247  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 50248  	}
 50249  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 50250  
 50251  	t = t >> 3 & uint32(0x3f)
 50252  
 50253  	if t != 0 {
 50254  		var p uintptr = ctx + 28 + uintptr(t)
 50255  
 50256  		t = uint32(64) - t
 50257  		if len < t {
 50258  			libc.Xmemcpy(tls, p, buf, len)
 50259  			return
 50260  		}
 50261  		libc.Xmemcpy(tls, p, buf, t)
 50262  		byteReverse(tls, ctx+28, uint32(16))
 50263  		MD5Transform(tls, ctx+4, ctx+28)
 50264  		buf += uintptr(t)
 50265  		len = len - t
 50266  	}
 50267  
 50268  	for len >= uint32(64) {
 50269  		libc.Xmemcpy(tls, ctx+28, buf, uint32(64))
 50270  		byteReverse(tls, ctx+28, uint32(16))
 50271  		MD5Transform(tls, ctx+4, ctx+28)
 50272  		buf += uintptr(64)
 50273  		len = len - uint32(64)
 50274  	}
 50275  
 50276  	libc.Xmemcpy(tls, ctx+28, buf, len)
 50277  }
 50278  
 50279  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 50280  	var count uint32
 50281  	var p uintptr
 50282  
 50283  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 50284  
 50285  	p = ctx + 28 + uintptr(count)
 50286  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 50287  
 50288  	count = uint32(64-1) - count
 50289  
 50290  	if count < uint32(8) {
 50291  		libc.Xmemset(tls, p, 0, count)
 50292  		byteReverse(tls, ctx+28, uint32(16))
 50293  		MD5Transform(tls, ctx+4, ctx+28)
 50294  
 50295  		libc.Xmemset(tls, ctx+28, 0, uint32(56))
 50296  	} else {
 50297  		libc.Xmemset(tls, p, 0, count-uint32(8))
 50298  	}
 50299  	byteReverse(tls, ctx+28, uint32(14))
 50300  
 50301  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint32(8))
 50302  
 50303  	MD5Transform(tls, ctx+4, ctx+28)
 50304  	byteReverse(tls, ctx+4, uint32(4))
 50305  	libc.Xmemcpy(tls, digest, ctx+4, uint32(16))
 50306  }
 50307  
 50308  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 50309  	var i int32
 50310  	var j int32
 50311  
 50312  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 50313  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 50314  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 50315  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 50316  	}
 50317  	*(*int8)(unsafe.Pointer(zBuf + uintptr(j))) = int8(0)
 50318  }
 50319  
 50320  var zEncode = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 50321  
 50322  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 50323  	bp := tls.Alloc(8)
 50324  	defer tls.Free(8)
 50325  
 50326  	var i int32
 50327  	var j int32
 50328  	var x uint32
 50329  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 50330  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 50331  		if i > 0 {
 50332  			*(*int8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = int8('-')
 50333  		}
 50334  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 50335  		j = j + 5
 50336  	}
 50337  	*(*int8)(unsafe.Pointer(zDigest + uintptr(j))) = int8(0)
 50338  }
 50339  
 50340  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50341  	bp := tls.Alloc(206)
 50342  	defer tls.Free(206)
 50343  
 50344  	var converter uintptr
 50345  
 50346  	if argc != 2 {
 50347  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50348  			ts+15307, uintptr(0)))
 50349  		return TCL_ERROR
 50350  	}
 50351  	MD5Init(tls, bp+48)
 50352  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*4)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))))
 50353  	MD5Final(tls, bp+140, bp+48)
 50354  	converter = cd
 50355  	(*struct {
 50356  		f func(*libc.TLS, uintptr, uintptr)
 50357  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 50358  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 50359  	return TCL_OK
 50360  }
 50361  
 50362  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 50363  	bp := tls.Alloc(10428)
 50364  	defer tls.Free(10428)
 50365  
 50366  	var in uintptr
 50367  	var ofst int32
 50368  	var amt int32
 50369  
 50370  	var converter uintptr
 50371  
 50372  	if argc != 2 && argc != 4 {
 50373  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 50374  			ts+34506, uintptr(0)))
 50375  		return TCL_ERROR
 50376  	}
 50377  	if argc == 4 {
 50378  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*4)))
 50379  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*4)))
 50380  	} else {
 50381  		ofst = 0
 50382  		amt = 2147483647
 50383  	}
 50384  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+4402)
 50385  	if in == uintptr(0) {
 50386  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*4)),
 50387  			ts+34552, uintptr(0)))
 50388  		return TCL_ERROR
 50389  	}
 50390  	libc.Xfseek(tls, in, ofst, SEEK_SET)
 50391  	MD5Init(tls, bp+80)
 50392  	for amt > 0 {
 50393  		var n int32
 50394  		n = int32(libc.Xfread(tls, bp+172, uint32(1), func() uint32 {
 50395  			if uint32(unsafe.Sizeof([10240]int8{})) <= uint32(amt) {
 50396  				return uint32(unsafe.Sizeof([10240]int8{}))
 50397  			}
 50398  			return uint32(amt)
 50399  		}(), in))
 50400  		if n <= 0 {
 50401  			break
 50402  		}
 50403  		MD5Update(tls, bp+80, bp+172, uint32(n))
 50404  		amt = amt - n
 50405  	}
 50406  	libc.Xfclose(tls, in)
 50407  	MD5Final(tls, bp+10412, bp+80)
 50408  	converter = cd
 50409  	(*struct {
 50410  		f func(*libc.TLS, uintptr, uintptr)
 50411  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 50412  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 50413  	return TCL_OK
 50414  }
 50415  
 50416  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 50417  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 50418  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50419  	}{md5_cmd})),
 50420  		*(*uintptr)(unsafe.Pointer(&struct {
 50421  			f func(*libc.TLS, uintptr, uintptr)
 50422  		}{MD5DigestToBase16})), uintptr(0))
 50423  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 50424  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50425  	}{md5_cmd})),
 50426  		*(*uintptr)(unsafe.Pointer(&struct {
 50427  			f func(*libc.TLS, uintptr, uintptr)
 50428  		}{MD5DigestToBase10x8})), uintptr(0))
 50429  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 50430  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50431  	}{md5file_cmd})),
 50432  		*(*uintptr)(unsafe.Pointer(&struct {
 50433  			f func(*libc.TLS, uintptr, uintptr)
 50434  		}{MD5DigestToBase16})), uintptr(0))
 50435  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 50436  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50437  	}{md5file_cmd})),
 50438  		*(*uintptr)(unsafe.Pointer(&struct {
 50439  			f func(*libc.TLS, uintptr, uintptr)
 50440  		}{MD5DigestToBase10x8})), uintptr(0))
 50441  	return TCL_OK
 50442  }
 50443  
 50444  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50445  	var p uintptr
 50446  	var i int32
 50447  	if argc < 1 {
 50448  		return
 50449  	}
 50450  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50451  	if p == uintptr(0) {
 50452  		return
 50453  	}
 50454  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 50455  		MD5Init(tls, p)
 50456  	}
 50457  	for i = 0; i < argc; i++ {
 50458  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 50459  		if zData != 0 {
 50460  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 50461  		}
 50462  	}
 50463  }
 50464  
 50465  func md5finalize(tls *libc.TLS, context uintptr) {
 50466  	bp := tls.Alloc(49)
 50467  	defer tls.Free(49)
 50468  
 50469  	var p uintptr
 50470  
 50471  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 50472  	MD5Final(tls, bp, p)
 50473  	MD5DigestToBase16(tls, bp, bp+16)
 50474  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 50475  }
 50476  
 50477  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 50478  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 50479  		*(*uintptr)(unsafe.Pointer(&struct {
 50480  			f func(*libc.TLS, uintptr, int32, uintptr)
 50481  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 50482  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 50483  	return rc
 50484  }
 50485  
 50486  type multiplexGroup1 = struct {
 50487  	FaReal       uintptr
 50488  	FnReal       int32
 50489  	FzName       uintptr
 50490  	FnName       int32
 50491  	Fflags       int32
 50492  	FszChunk     uint32
 50493  	FbEnabled    uint8
 50494  	FbTruncate   uint8
 50495  	F__ccgo_pad1 [2]byte
 50496  }
 50497  
 50498  type multiplexGroup = multiplexGroup1
 50499  type multiplexConn1 = struct {
 50500  	Fbase   sqlite3_file
 50501  	FpGroup uintptr
 50502  }
 50503  
 50504  type multiplexConn = multiplexConn1
 50505  
 50506  type multiplexReal = struct {
 50507  	Fp uintptr
 50508  	Fz uintptr
 50509  }
 50510  
 50511  var gMultiplex struct {
 50512  	FpOrigVfs      uintptr
 50513  	FsThisVfs      sqlite3_vfs
 50514  	FsIoMethodsV1  sqlite3_io_methods
 50515  	FsIoMethodsV2  sqlite3_io_methods
 50516  	FisInitialized int32
 50517  }
 50518  
 50519  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 50520  	var z2 uintptr = z
 50521  	if z == uintptr(0) {
 50522  		return 0
 50523  	}
 50524  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 50525  		z2++
 50526  	}
 50527  	return 0x3fffffff & ((int32(z2) - int32(z)) / 1)
 50528  }
 50529  
 50530  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 50531  	bp := tls.Alloc(8)
 50532  	defer tls.Free(8)
 50533  
 50534  	var n int32 = nBase
 50535  	libc.Xmemcpy(tls, zOut, zBase, uint32(n+1))
 50536  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 50537  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 50538  		n = n + 3
 50539  	}
 50540  
 50541  	*(*int8)(unsafe.Pointer(zOut + uintptr(n+1))) = int8(0)
 50542  }
 50543  
 50544  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 50545  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 50546  		var p uintptr
 50547  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(uint32(iChunk+1)*uint32(unsafe.Sizeof(multiplexReal{}))))
 50548  		if p == uintptr(0) {
 50549  			return SQLITE_NOMEM
 50550  		}
 50551  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*8, 0, uint32(unsafe.Sizeof(multiplexReal{}))*uint32(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 50552  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 50553  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 50554  	}
 50555  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz == uintptr(0) {
 50556  		var z uintptr
 50557  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 50558  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 50559  		if z == uintptr(0) {
 50560  			return SQLITE_NOMEM
 50561  		}
 50562  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 50563  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*8)).Fz = sqlite3.Xsqlite3_create_filename(tls, z, ts+584, ts+584, 0, uintptr(0))
 50564  		sqlite3.Xsqlite3_free(tls, z)
 50565  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz == uintptr(0) {
 50566  			return SQLITE_NOMEM
 50567  		}
 50568  	}
 50569  	return SQLITE_OK
 50570  }
 50571  
 50572  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 50573  	bp := tls.Alloc(20)
 50574  	defer tls.Free(20)
 50575  
 50576  	var pSubOpen uintptr = uintptr(0)
 50577  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50578  
 50579  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 50580  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fp) == uintptr(0) {
 50581  		var flags int32
 50582  
 50583  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 50584  		if createFlag != 0 {
 50585  			flags = flags | SQLITE_OPEN_CREATE
 50586  		} else if iChunk == 0 {
 50587  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz == uintptr(0) {
 50588  			return uintptr(0)
 50589  		} else {
 50590  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50591  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50592  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz,
 50593  				SQLITE_ACCESS_EXISTS, bp+16)
 50594  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 50595  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50596  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 50597  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz))
 50598  				}
 50599  				return uintptr(0)
 50600  			}
 50601  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 50602  		}
 50603  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 50604  		if pSubOpen == uintptr(0) {
 50605  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 50606  			return uintptr(0)
 50607  		}
 50608  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*8)).Fp = pSubOpen
 50609  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50610  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 50611  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz, pSubOpen,
 50612  			flags, pOutFlags)
 50613  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 50614  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 50615  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz))
 50616  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 50617  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*8)).Fp = uintptr(0)
 50618  			return uintptr(0)
 50619  		}
 50620  	}
 50621  	return pSubOpen
 50622  }
 50623  
 50624  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 50625  	bp := tls.Alloc(8)
 50626  	defer tls.Free(8)
 50627  
 50628  	var pSub uintptr
 50629  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 50630  
 50631  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 50632  		return int64(0)
 50633  	}
 50634  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 50635  	if pSub == uintptr(0) {
 50636  		return int64(0)
 50637  	}
 50638  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 50639  		f func(*libc.TLS, uintptr, uintptr) int32
 50640  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 50641  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 50642  }
 50643  
 50644  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 50645  	bp := tls.Alloc(4)
 50646  	defer tls.Free(4)
 50647  
 50648  	var rc int32 = SQLITE_OK
 50649  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 50650  	var op int32 = 0
 50651  
 50652  	if !(db != 0) || argc != 2 {
 50653  		rc = SQLITE_ERROR
 50654  	} else {
 50655  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 50656  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 50657  
 50658  		switch op {
 50659  		case 1:
 50660  			op = MULTIPLEX_CTRL_ENABLE
 50661  			break
 50662  			fallthrough
 50663  		case 2:
 50664  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 50665  			break
 50666  			fallthrough
 50667  		case 3:
 50668  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 50669  			break
 50670  			fallthrough
 50671  		default:
 50672  			rc = SQLITE_NOTFOUND
 50673  			break
 50674  		}
 50675  	}
 50676  	if rc == SQLITE_OK {
 50677  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 50678  	}
 50679  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 50680  }
 50681  
 50682  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 50683  	var rc int32
 50684  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 50685  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 50686  			f func(*libc.TLS, uintptr, int32, uintptr)
 50687  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 50688  	return rc
 50689  }
 50690  
 50691  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 50692  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*8)).Fp
 50693  	if pSubOpen != 0 {
 50694  		(*struct {
 50695  			f func(*libc.TLS, uintptr) int32
 50696  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 50697  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz != 0 {
 50698  			(*struct {
 50699  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 50700  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz, 0)
 50701  		}
 50702  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fp)
 50703  	}
 50704  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz)
 50705  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8, 0, uint32(unsafe.Sizeof(multiplexReal{})))
 50706  }
 50707  
 50708  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 50709  	var i int32
 50710  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50711  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 50712  	}
 50713  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 50714  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 50715  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 50716  }
 50717  
 50718  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 50719  	bp := tls.Alloc(16)
 50720  	defer tls.Free(16)
 50721  
 50722  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50723  	var pMultiplexOpen uintptr
 50724  	var pGroup uintptr = uintptr(0)
 50725  	var pSubOpen uintptr = uintptr(0)
 50726  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50727  	var nName int32 = 0
 50728  	var sz int32 = 0
 50729  	var zToFree uintptr = uintptr(0)
 50730  
 50731  	_ = pVfs
 50732  	libc.Xmemset(tls, pConn, 0, uint32((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 50733  
 50734  	pMultiplexOpen = pConn
 50735  
 50736  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50737  		if zName != 0 {
 50738  			nName = multiplexStrlen30(tls, zName)
 50739  		} else {
 50740  			nName = 0
 50741  		}
 50742  		sz = int32(uint32(unsafe.Sizeof(multiplexGroup{})) +
 50743  			uint32(nName) + uint32(1))
 50744  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 50745  		if pGroup == uintptr(0) {
 50746  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 50747  		}
 50748  	}
 50749  
 50750  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50751  		var zUri uintptr
 50752  		if flags&SQLITE_OPEN_URI != 0 {
 50753  			zUri = zName
 50754  		} else {
 50755  			zUri = uintptr(0)
 50756  		}
 50757  
 50758  		libc.Xmemset(tls, pGroup, 0, uint32(sz))
 50759  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 50760  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 50761  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 50762  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 50763  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 50764  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 50765  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 50766  		if zName != 0 {
 50767  			var p uintptr = pGroup + 1*28
 50768  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 50769  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint32(nName+1))
 50770  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 50771  		}
 50772  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50773  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 50774  				*(*uint32)(unsafe.Pointer(pGroup + 20)) += uint32(65536)
 50775  			}
 50776  		}
 50777  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 50778  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 50779  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50780  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 50781  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50782  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 50783  			}
 50784  		}
 50785  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50786  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50787  				f func(*libc.TLS, uintptr, uintptr) int32
 50788  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+4)
 50789  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 50790  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 50791  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50792  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 4)) == int64(0) {
 50793  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 50794  						var iChunk int32 = 1
 50795  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 12)) != 0 {
 50796  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50797  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50798  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 50799  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz, SQLITE_ACCESS_EXISTS, bp+12)
 50800  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 12)) != 0 {
 50801  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50802  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 50803  								})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*8)).Fz, 0)
 50804  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50805  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 50806  								}
 50807  							}
 50808  						}
 50809  					}
 50810  				} else {
 50811  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50812  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50813  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*8)).Fz,
 50814  						SQLITE_ACCESS_EXISTS, bp+12)
 50815  					*(*int32)(unsafe.Pointer(bp + 12)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 50816  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 12)) != 0 && *(*sqlite3_int64)(unsafe.Pointer(bp + 4)) == *(*sqlite3_int64)(unsafe.Pointer(bp + 4))&int64(0xffff0000) && *(*sqlite3_int64)(unsafe.Pointer(bp + 4)) > int64(0) &&
 50817  						*(*sqlite3_int64)(unsafe.Pointer(bp + 4)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50818  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 4))))
 50819  					} else if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && !(*(*int32)(unsafe.Pointer(bp + 12)) != 0) && *(*sqlite3_int64)(unsafe.Pointer(bp + 4)) > sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50820  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50821  					}
 50822  				}
 50823  			}
 50824  		}
 50825  
 50826  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50827  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 50828  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 92
 50829  			} else {
 50830  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 168
 50831  			}
 50832  		} else {
 50833  			multiplexFreeComponents(tls, pGroup)
 50834  			sqlite3.Xsqlite3_free(tls, pGroup)
 50835  		}
 50836  	}
 50837  	sqlite3.Xsqlite3_free(tls, zToFree)
 50838  	return *(*int32)(unsafe.Pointer(bp))
 50839  }
 50840  
 50841  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 50842  	bp := tls.Alloc(4)
 50843  	defer tls.Free(4)
 50844  
 50845  	var rc int32
 50846  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50847  	rc = (*struct {
 50848  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50849  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 50850  	if rc == SQLITE_OK {
 50851  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 50852  		var z uintptr
 50853  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 50854  		if z == uintptr(0) {
 50855  			rc = SQLITE_IOERR | int32(12)<<8
 50856  		} else {
 50857  			var iChunk int32 = 0
 50858  
 50859  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50860  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 50861  				rc = (*struct {
 50862  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50863  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50864  			}
 50865  			for rc == SQLITE_OK && iChunk > 1 {
 50866  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 50867  				rc = (*struct {
 50868  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 50869  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50870  			}
 50871  			if rc == SQLITE_OK {
 50872  				iChunk = 0
 50873  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50874  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 50875  					rc = (*struct {
 50876  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50877  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50878  				}
 50879  				for rc == SQLITE_OK && iChunk > 1 {
 50880  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 50881  					rc = (*struct {
 50882  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 50883  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50884  				}
 50885  			}
 50886  		}
 50887  		sqlite3.Xsqlite3_free(tls, z)
 50888  	}
 50889  	return rc
 50890  }
 50891  
 50892  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50893  	return (*struct {
 50894  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50895  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50896  }
 50897  
 50898  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50899  	return (*struct {
 50900  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50901  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50902  }
 50903  
 50904  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 50905  	return (*struct {
 50906  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50907  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 50908  }
 50909  
 50910  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 50911  	(*struct {
 50912  		f func(*libc.TLS, uintptr, int32, uintptr)
 50913  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50914  }
 50915  
 50916  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 50917  	return (*struct {
 50918  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50919  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50920  }
 50921  
 50922  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 50923  	(*struct {
 50924  		f func(*libc.TLS, uintptr, uintptr)
 50925  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 50926  }
 50927  
 50928  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50929  	return (*struct {
 50930  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50931  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50932  }
 50933  
 50934  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 50935  	return (*struct {
 50936  		f func(*libc.TLS, uintptr, int32) int32
 50937  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 50938  }
 50939  
 50940  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50941  	return (*struct {
 50942  		f func(*libc.TLS, uintptr, uintptr) int32
 50943  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 50944  }
 50945  
 50946  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50947  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 50948  		return (*struct {
 50949  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 50950  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50951  	} else {
 50952  		return 0
 50953  	}
 50954  	return int32(0)
 50955  }
 50956  
 50957  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50958  	return (*struct {
 50959  		f func(*libc.TLS, uintptr, uintptr) int32
 50960  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 50961  }
 50962  
 50963  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 50964  	var p uintptr = pConn
 50965  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50966  	var rc int32 = SQLITE_OK
 50967  	multiplexFreeComponents(tls, pGroup)
 50968  	sqlite3.Xsqlite3_free(tls, pGroup)
 50969  	return rc
 50970  }
 50971  
 50972  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50973  	bp := tls.Alloc(4)
 50974  	defer tls.Free(4)
 50975  
 50976  	var p uintptr = pConn
 50977  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50978  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50979  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50980  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50981  		if pSubOpen == uintptr(0) {
 50982  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50983  		} else {
 50984  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50985  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50986  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50987  		}
 50988  	} else {
 50989  		for iAmt > 0 {
 50990  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50991  			var pSubOpen uintptr
 50992  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50993  			if pSubOpen != 0 {
 50994  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50995  				if extra < 0 {
 50996  					extra = 0
 50997  				}
 50998  				iAmt = iAmt - extra
 50999  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51000  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51001  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 51002  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51003  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 51004  					break
 51005  				}
 51006  				pBuf = pBuf + uintptr(iAmt)
 51007  				iOfst = iOfst + sqlite3_int64(iAmt)
 51008  				iAmt = extra
 51009  			} else {
 51010  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 51011  				break
 51012  			}
 51013  		}
 51014  	}
 51015  
 51016  	return *(*int32)(unsafe.Pointer(bp))
 51017  }
 51018  
 51019  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 51020  	bp := tls.Alloc(4)
 51021  	defer tls.Free(4)
 51022  
 51023  	var p uintptr = pConn
 51024  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51025  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51026  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51027  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51028  		if pSubOpen == uintptr(0) {
 51029  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 51030  		} else {
 51031  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51032  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51033  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 51034  		}
 51035  	} else {
 51036  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 51037  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51038  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 51039  			if pSubOpen != 0 {
 51040  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 51041  				if extra < 0 {
 51042  					extra = 0
 51043  				}
 51044  				iAmt = iAmt - extra
 51045  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51046  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51047  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 51048  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51049  				pBuf = pBuf + uintptr(iAmt)
 51050  				iOfst = iOfst + sqlite3_int64(iAmt)
 51051  				iAmt = extra
 51052  			}
 51053  		}
 51054  	}
 51055  	return *(*int32)(unsafe.Pointer(bp))
 51056  }
 51057  
 51058  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 51059  	bp := tls.Alloc(4)
 51060  	defer tls.Free(4)
 51061  
 51062  	var p uintptr = pConn
 51063  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51064  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51065  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51066  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51067  		if pSubOpen == uintptr(0) {
 51068  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51069  		} else {
 51070  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51071  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51072  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 51073  		}
 51074  	} else {
 51075  		var i int32
 51076  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51077  		var pSubOpen uintptr
 51078  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 51079  
 51080  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 51081  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51082  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 51083  			} else {
 51084  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 51085  				if pSubOpen != 0 {
 51086  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51087  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51088  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 51089  				}
 51090  			}
 51091  		}
 51092  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 51093  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 51094  			if pSubOpen != 0 {
 51095  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51096  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51097  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51098  			}
 51099  		}
 51100  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 51101  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 51102  		}
 51103  	}
 51104  	return *(*int32)(unsafe.Pointer(bp))
 51105  }
 51106  
 51107  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 51108  	var p uintptr = pConn
 51109  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51110  	var rc int32 = SQLITE_OK
 51111  	var i int32
 51112  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 51113  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*8)).Fp
 51114  		if pSubOpen != 0 {
 51115  			var rc2 int32 = (*struct {
 51116  				f func(*libc.TLS, uintptr, int32) int32
 51117  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 51118  			if rc2 != SQLITE_OK {
 51119  				rc = rc2
 51120  			}
 51121  		}
 51122  	}
 51123  	return rc
 51124  }
 51125  
 51126  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 51127  	bp := tls.Alloc(4)
 51128  	defer tls.Free(4)
 51129  
 51130  	var p uintptr = pConn
 51131  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51132  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 51133  	var i int32
 51134  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 51135  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 51136  		if pSubOpen == uintptr(0) {
 51137  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 51138  		} else {
 51139  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 51140  				f func(*libc.TLS, uintptr, uintptr) int32
 51141  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 51142  		}
 51143  	} else {
 51144  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 51145  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 51146  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 51147  			if sz == int64(0) {
 51148  				break
 51149  			}
 51150  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 51151  		}
 51152  	}
 51153  	return *(*int32)(unsafe.Pointer(bp))
 51154  }
 51155  
 51156  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51157  	bp := tls.Alloc(4)
 51158  	defer tls.Free(4)
 51159  
 51160  	var p uintptr = pConn
 51161  
 51162  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51163  	if pSubOpen != 0 {
 51164  		return (*struct {
 51165  			f func(*libc.TLS, uintptr, int32) int32
 51166  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 51167  	}
 51168  	return SQLITE_BUSY
 51169  }
 51170  
 51171  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 51172  	bp := tls.Alloc(4)
 51173  	defer tls.Free(4)
 51174  
 51175  	var p uintptr = pConn
 51176  
 51177  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51178  	if pSubOpen != 0 {
 51179  		return (*struct {
 51180  			f func(*libc.TLS, uintptr, int32) int32
 51181  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 51182  	}
 51183  	return SQLITE_IOERR | int32(8)<<8
 51184  }
 51185  
 51186  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 51187  	bp := tls.Alloc(4)
 51188  	defer tls.Free(4)
 51189  
 51190  	var p uintptr = pConn
 51191  
 51192  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51193  	if pSubOpen != 0 {
 51194  		return (*struct {
 51195  			f func(*libc.TLS, uintptr, uintptr) int32
 51196  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 51197  	}
 51198  	return SQLITE_IOERR | int32(14)<<8
 51199  }
 51200  
 51201  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 51202  	bp := tls.Alloc(44)
 51203  	defer tls.Free(44)
 51204  
 51205  	var p uintptr = pConn
 51206  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 51207  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 51208  	var pSubOpen uintptr
 51209  
 51210  	if !(gMultiplex.FisInitialized != 0) {
 51211  		return SQLITE_MISUSE
 51212  	}
 51213  	switch op {
 51214  	case MULTIPLEX_CTRL_ENABLE:
 51215  		if pArg != 0 {
 51216  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 51217  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 51218  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51219  		}
 51220  		break
 51221  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 51222  		if pArg != 0 {
 51223  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 51224  			if szChunk < uint32(1) {
 51225  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 51226  			} else {
 51227  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 51228  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 51229  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 51230  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51231  			}
 51232  		}
 51233  		break
 51234  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 51235  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51236  		break
 51237  	case SQLITE_FCNTL_SIZE_HINT:
 51238  		fallthrough
 51239  	case SQLITE_FCNTL_CHUNK_SIZE:
 51240  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51241  		break
 51242  	case SQLITE_FCNTL_PRAGMA:
 51243  		{
 51244  			var aFcntl uintptr = pArg
 51245  
 51246  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)), ts+34706, 10) == 0 {
 51247  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 51248  				multiplexFileSize(tls, pConn, bp+32)
 51249  
 51250  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)), ts+34717) == 0 {
 51251  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*4)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*4)))) != 0 {
 51252  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*4)), ts+4178) == 0 ||
 51253  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*4)), ts+28899) == 0 {
 51254  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 51255  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*4)), ts+4542) == 0 ||
 51256  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*4)), ts+14193) == 0 {
 51257  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 51258  						}
 51259  					}
 51260  
 51261  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 51262  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 51263  							return ts + 4178
 51264  						}
 51265  						return ts + 4542
 51266  					}(), 0)
 51267  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51268  					break
 51269  				}
 51270  
 51271  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)), ts+34736) == 0 {
 51272  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 51273  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51274  					break
 51275  				}
 51276  
 51277  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)), ts+34754) == 0 &&
 51278  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 51279  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 51280  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51281  					break
 51282  				}
 51283  
 51284  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*4)), ts+34774) == 0 {
 51285  					var n int32 = 0
 51286  					var ii int32
 51287  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 51288  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*8)).Fp != uintptr(0) {
 51289  							n++
 51290  						}
 51291  					}
 51292  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 51293  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 51294  					break
 51295  				}
 51296  			}
 51297  
 51298  		}
 51299  		fallthrough
 51300  	default:
 51301  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 51302  		if pSubOpen != 0 {
 51303  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 51304  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 51305  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 51306  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 51307  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 51308  			}
 51309  		}
 51310  		break
 51311  	}
 51312  	return *(*int32)(unsafe.Pointer(bp + 40))
 51313  }
 51314  
 51315  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 51316  	bp := tls.Alloc(4)
 51317  	defer tls.Free(4)
 51318  
 51319  	var p uintptr = pConn
 51320  
 51321  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51322  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 51323  		return (*struct {
 51324  			f func(*libc.TLS, uintptr) int32
 51325  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 51326  	}
 51327  	return DEFAULT_SECTOR_SIZE
 51328  }
 51329  
 51330  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 51331  	bp := tls.Alloc(4)
 51332  	defer tls.Free(4)
 51333  
 51334  	var p uintptr = pConn
 51335  
 51336  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51337  	if pSubOpen != 0 {
 51338  		return (*struct {
 51339  			f func(*libc.TLS, uintptr) int32
 51340  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 51341  	}
 51342  	return 0
 51343  }
 51344  
 51345  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 51346  	bp := tls.Alloc(4)
 51347  	defer tls.Free(4)
 51348  
 51349  	var p uintptr = pConn
 51350  
 51351  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51352  	if pSubOpen != 0 {
 51353  		return (*struct {
 51354  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51355  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 51356  	}
 51357  	return SQLITE_IOERR
 51358  }
 51359  
 51360  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 51361  	bp := tls.Alloc(4)
 51362  	defer tls.Free(4)
 51363  
 51364  	var p uintptr = pConn
 51365  
 51366  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51367  	if pSubOpen != 0 {
 51368  		return (*struct {
 51369  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51370  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 51371  	}
 51372  	return SQLITE_BUSY
 51373  }
 51374  
 51375  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 51376  	bp := tls.Alloc(4)
 51377  	defer tls.Free(4)
 51378  
 51379  	var p uintptr = pConn
 51380  
 51381  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51382  	if pSubOpen != 0 {
 51383  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmBarrier})).f(tls, pSubOpen)
 51384  	}
 51385  }
 51386  
 51387  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 51388  	bp := tls.Alloc(4)
 51389  	defer tls.Free(4)
 51390  
 51391  	var p uintptr = pConn
 51392  
 51393  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 51394  	if pSubOpen != 0 {
 51395  		return (*struct {
 51396  			f func(*libc.TLS, uintptr, int32) int32
 51397  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 51398  	}
 51399  	return SQLITE_OK
 51400  }
 51401  
 51402  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 51403  	var pOrigVfs uintptr
 51404  	if gMultiplex.FisInitialized != 0 {
 51405  		return SQLITE_MISUSE
 51406  	}
 51407  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 51408  	if pOrigVfs == uintptr(0) {
 51409  		return SQLITE_ERROR
 51410  	}
 51411  
 51412  	gMultiplex.FisInitialized = 1
 51413  	gMultiplex.FpOrigVfs = pOrigVfs
 51414  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 51415  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 4 + 4)) += int32(uint32(unsafe.Sizeof(multiplexConn{})))
 51416  	gMultiplex.FsThisVfs.FzName = ts + 34807
 51417  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51418  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51419  	}{multiplexOpen}))
 51420  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 51421  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 51422  	}{multiplexDelete}))
 51423  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 51424  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51425  	}{multiplexAccess}))
 51426  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 51427  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51428  	}{multiplexFullPathname}))
 51429  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 51430  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51431  	}{multiplexDlOpen}))
 51432  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 51433  		f func(*libc.TLS, uintptr, int32, uintptr)
 51434  	}{multiplexDlError}))
 51435  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 51436  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51437  	}{multiplexDlSym}))
 51438  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 51439  		f func(*libc.TLS, uintptr, uintptr)
 51440  	}{multiplexDlClose}))
 51441  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 51442  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51443  	}{multiplexRandomness}))
 51444  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 51445  		f func(*libc.TLS, uintptr, int32) int32
 51446  	}{multiplexSleep}))
 51447  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 51448  		f func(*libc.TLS, uintptr, uintptr) int32
 51449  	}{multiplexCurrentTime}))
 51450  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 51451  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51452  	}{multiplexGetLastError}))
 51453  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 51454  		f func(*libc.TLS, uintptr, uintptr) int32
 51455  	}{multiplexCurrentTimeInt64}))
 51456  
 51457  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 51458  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 51459  		f func(*libc.TLS, uintptr) int32
 51460  	}{multiplexClose}))
 51461  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 51462  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51463  	}{multiplexRead}))
 51464  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 51465  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51466  	}{multiplexWrite}))
 51467  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 51468  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 51469  	}{multiplexTruncate}))
 51470  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 51471  		f func(*libc.TLS, uintptr, int32) int32
 51472  	}{multiplexSync}))
 51473  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 51474  		f func(*libc.TLS, uintptr, uintptr) int32
 51475  	}{multiplexFileSize}))
 51476  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 51477  		f func(*libc.TLS, uintptr, int32) int32
 51478  	}{multiplexLock}))
 51479  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 51480  		f func(*libc.TLS, uintptr, int32) int32
 51481  	}{multiplexUnlock}))
 51482  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 51483  		f func(*libc.TLS, uintptr, uintptr) int32
 51484  	}{multiplexCheckReservedLock}))
 51485  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 51486  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51487  	}{multiplexFileControl}))
 51488  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 51489  		f func(*libc.TLS, uintptr) int32
 51490  	}{multiplexSectorSize}))
 51491  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 51492  		f func(*libc.TLS, uintptr) int32
 51493  	}{multiplexDeviceCharacteristics}))
 51494  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 51495  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 51496  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 51497  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 51498  	}{multiplexShmMap}))
 51499  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 51500  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 51501  	}{multiplexShmLock}))
 51502  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 51503  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 51504  		f func(*libc.TLS, uintptr, int32) int32
 51505  	}{multiplexShmUnmap}))
 51506  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+4, makeDefault)
 51507  
 51508  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 51509  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 51510  	}{multiplexFuncInit})))
 51511  
 51512  	return SQLITE_OK
 51513  }
 51514  
 51515  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 51516  	var rc int32 = SQLITE_OK
 51517  	if gMultiplex.FisInitialized == 0 {
 51518  		return SQLITE_MISUSE
 51519  	}
 51520  	gMultiplex.FisInitialized = 0
 51521  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+4)
 51522  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint32(unsafe.Sizeof(gMultiplex)))
 51523  	return rc
 51524  }
 51525  
 51526  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51527  	bp := tls.Alloc(4)
 51528  	defer tls.Free(4)
 51529  
 51530  	var zName uintptr
 51531  
 51532  	var rc int32
 51533  
 51534  	_ = clientData
 51535  
 51536  	if objc != 3 {
 51537  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 51538  		return TCL_ERROR
 51539  	}
 51540  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 51541  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 51542  		return TCL_ERROR
 51543  	}
 51544  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 51545  		zName = uintptr(0)
 51546  	}
 51547  
 51548  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 51549  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51550  
 51551  	return TCL_OK
 51552  }
 51553  
 51554  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51555  	var rc int32
 51556  
 51557  	_ = clientData
 51558  
 51559  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), ts+34834) != 0 {
 51560  		objc = 3
 51561  	}
 51562  	if objc != 1 && objc != 2 {
 51563  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 51564  		return TCL_ERROR
 51565  	}
 51566  
 51567  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 51568  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51569  
 51570  	return TCL_OK
 51571  }
 51572  
 51573  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 51574  	bp := tls.Alloc(128)
 51575  	defer tls.Free(128)
 51576  
 51577  	var rc int32
 51578  
 51579  	var db uintptr
 51580  	*(*int32)(unsafe.Pointer(bp + 124)) = 0
 51581  	var pArg uintptr = uintptr(0)
 51582  
 51583  	*(*[4]struct {
 51584  		FzName   uintptr
 51585  		Fop      int32
 51586  		Fargtype int32
 51587  	})(unsafe.Pointer(bp + 72)) = [4]struct {
 51588  		FzName   uintptr
 51589  		Fop      int32
 51590  		Fargtype int32
 51591  	}{
 51592  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 51593  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 51594  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 51595  		{},
 51596  	}
 51597  
 51598  	if objc != 5 {
 51599  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 51600  		return TCL_ERROR
 51601  	}
 51602  
 51603  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+40) {
 51604  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 51605  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), ts+11945, 0))
 51606  		return TCL_ERROR
 51607  	} else {
 51608  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 51609  	}
 51610  
 51611  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 51612  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+72, int32(unsafe.Sizeof(struct {
 51613  			FzName   uintptr
 51614  			Fop      int32
 51615  			Fargtype int32
 51616  		}{})), ts+2014, 0, bp+120)
 51617  	if rc != TCL_OK {
 51618  		return rc
 51619  	}
 51620  
 51621  	switch (*struct {
 51622  		FzName   uintptr
 51623  		Fop      int32
 51624  		Fargtype int32
 51625  	})(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*12)).Fargtype {
 51626  	case 1:
 51627  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+124) != 0 {
 51628  			return TCL_ERROR
 51629  		}
 51630  		pArg = bp + 124
 51631  		break
 51632  	default:
 51633  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 51634  		return TCL_ERROR
 51635  	}
 51636  
 51637  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), (*struct {
 51638  		FzName   uintptr
 51639  		Fop      int32
 51640  		Fargtype int32
 51641  	})(unsafe.Pointer(bp+72+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*12)).Fop, pArg)
 51642  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 51643  	if rc == SQLITE_OK {
 51644  		return TCL_OK
 51645  	}
 51646  	return TCL_ERROR
 51647  }
 51648  
 51649  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 51650  	var i int32
 51651  
 51652  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd7))/uint32(unsafe.Sizeof(struct {
 51653  		FzName uintptr
 51654  		FxProc uintptr
 51655  	}{})); i++ {
 51656  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 51657  	}
 51658  
 51659  	return TCL_OK
 51660  }
 51661  
 51662  var aCmd7 = [3]struct {
 51663  	FzName uintptr
 51664  	FxProc uintptr
 51665  }{
 51666  	{FzName: ts + 34940, FxProc: 0},
 51667  	{FzName: ts + 34969, FxProc: 0},
 51668  	{FzName: ts + 34996, FxProc: 0},
 51669  }
 51670  
 51671  type sqlite3_mutex = sqlite3_mutex1
 51672  
 51673  var aName = [15]uintptr{
 51674  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 51675  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 51676  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 51677  	ts + 35155, ts + 35167, uintptr(0),
 51678  }
 51679  
 51680  type test_mutex_globals = struct {
 51681  	FisInstalled int32
 51682  	FdisableInit int32
 51683  	FdisableTry  int32
 51684  	FisInit      int32
 51685  	Fm           sqlite3_mutex_methods
 51686  	FaCounter    [14]int32
 51687  	FaStatic     [12]sqlite3_mutex
 51688  }
 51689  
 51690  var g3 = test_mutex_globals{}
 51691  
 51692  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 51693  	return (*struct {
 51694  		f func(*libc.TLS, uintptr) int32
 51695  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51696  }
 51697  
 51698  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 51699  	return (*struct {
 51700  		f func(*libc.TLS, uintptr) int32
 51701  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51702  }
 51703  
 51704  func counterMutexInit(tls *libc.TLS) int32 {
 51705  	var rc int32
 51706  	if g3.FdisableInit != 0 {
 51707  		return g3.FdisableInit
 51708  	}
 51709  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 51710  	g3.FisInit = 1
 51711  	return rc
 51712  }
 51713  
 51714  func counterMutexEnd(tls *libc.TLS) int32 {
 51715  	g3.FisInit = 0
 51716  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 51717  }
 51718  
 51719  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 51720  	var pReal uintptr
 51721  	var pRet uintptr = uintptr(0)
 51722  
 51723  	pReal = (*struct {
 51724  		f func(*libc.TLS, int32) uintptr
 51725  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 51726  	if !(pReal != 0) {
 51727  		return uintptr(0)
 51728  	}
 51729  
 51730  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 51731  		pRet = libc.Xmalloc(tls, uint32(unsafe.Sizeof(sqlite3_mutex{})))
 51732  	} else {
 51733  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 51734  
 51735  		pRet = uintptr(unsafe.Pointer(&g3)) + 108 + uintptr(eStaticType)*8
 51736  	}
 51737  
 51738  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 51739  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 51740  	return pRet
 51741  }
 51742  
 51743  func counterMutexFree(tls *libc.TLS, p uintptr) {
 51744  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51745  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 51746  		libc.Xfree(tls, p)
 51747  	}
 51748  }
 51749  
 51750  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 51751  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 52 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51752  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51753  }
 51754  
 51755  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 51756  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 52 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51757  	if g3.FdisableTry != 0 {
 51758  		return SQLITE_BUSY
 51759  	}
 51760  	return (*struct {
 51761  		f func(*libc.TLS, uintptr) int32
 51762  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51763  }
 51764  
 51765  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 51766  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51767  }
 51768  
 51769  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51770  	var rc int32
 51771  
 51772  	if objc != 1 {
 51773  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51774  		return TCL_ERROR
 51775  	}
 51776  
 51777  	rc = sqlite3.Xsqlite3_shutdown(tls)
 51778  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51779  	return TCL_OK
 51780  }
 51781  
 51782  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51783  	var rc int32
 51784  
 51785  	if objc != 1 {
 51786  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51787  		return TCL_ERROR
 51788  	}
 51789  
 51790  	rc = sqlite3.Xsqlite3_initialize(tls)
 51791  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51792  	return TCL_OK
 51793  }
 51794  
 51795  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51796  	bp := tls.Alloc(96)
 51797  	defer tls.Free(96)
 51798  
 51799  	var rc int32 = SQLITE_OK
 51800  
 51801  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 60)) = sqlite3_mutex_methods{
 51802  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 51803  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 51804  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 51805  			f func(*libc.TLS, int32) uintptr
 51806  		}{counterMutexAlloc})),
 51807  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 51808  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 51809  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 51810  			f func(*libc.TLS, uintptr) int32
 51811  		}{counterMutexTry})),
 51812  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 51813  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 51814  			f func(*libc.TLS, uintptr) int32
 51815  		}{counterMutexHeld})),
 51816  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 51817  			f func(*libc.TLS, uintptr) int32
 51818  		}{counterMutexNotheld})),
 51819  	}
 51820  
 51821  	if objc != 2 {
 51822  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 51823  		return TCL_ERROR
 51824  	}
 51825  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+56) {
 51826  		return TCL_ERROR
 51827  	}
 51828  
 51829  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 51830  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 51831  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 51832  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51833  				return ts + 35199
 51834  			}
 51835  			return ts + 35217
 51836  		}(), 0))
 51837  		return TCL_ERROR
 51838  	}
 51839  
 51840  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51841  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 51842  		if rc == SQLITE_OK {
 51843  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+60))
 51844  		}
 51845  		g3.FdisableTry = 0
 51846  	} else {
 51847  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 51848  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint32(unsafe.Sizeof(sqlite3_mutex_methods{})))
 51849  	}
 51850  
 51851  	if rc == SQLITE_OK {
 51852  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 51853  	}
 51854  
 51855  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51856  	return TCL_OK
 51857  }
 51858  
 51859  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51860  	var pRet uintptr
 51861  	var ii int32
 51862  
 51863  	if objc != 1 {
 51864  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51865  		return TCL_ERROR
 51866  	}
 51867  
 51868  	pRet = tcl.XTcl_NewObj(tls)
 51869  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 51870  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51871  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 51872  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 52 + uintptr(ii)*4))))
 51873  	}
 51874  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 51875  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 51876  		var _objPtr uintptr = pRet
 51877  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 51878  			tcl.XTclFreeObj(tls, _objPtr)
 51879  		}
 51880  	}
 51881  
 51882  	return TCL_OK
 51883  }
 51884  
 51885  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51886  	var ii int32
 51887  
 51888  	if objc != 1 {
 51889  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51890  		return TCL_ERROR
 51891  	}
 51892  
 51893  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51894  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 52 + uintptr(ii)*4)) = 0
 51895  	}
 51896  	return TCL_OK
 51897  }
 51898  
 51899  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51900  	bp := tls.Alloc(124)
 51901  	defer tls.Free(124)
 51902  
 51903  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 51904  
 51905  	sqlite3.Xsqlite3_mutex_free(tls, p)
 51906  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+9889, libc.VaList(bp, p))
 51907  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 51908  	return TCL_OK
 51909  }
 51910  
 51911  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51912  	bp := tls.Alloc(36)
 51913  	defer tls.Free(36)
 51914  
 51915  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 51916  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 51917  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 51918  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 51919  		{},
 51920  	}
 51921  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 51922  
 51923  	var rc int32
 51924  
 51925  	if objc != 2 {
 51926  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51927  		return TCL_ERROR
 51928  	}
 51929  
 51930  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, s, ts+17631, 0, bp+32) != 0 {
 51931  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+32) != 0 {
 51932  			return TCL_ERROR
 51933  		}
 51934  	} else {
 51935  		*(*int32)(unsafe.Pointer(bp + 32)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 32)))*8)).FiValue
 51936  	}
 51937  
 51938  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 32)), 0)
 51939  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51940  	return TCL_OK
 51941  }
 51942  
 51943  type ConfigOption = struct {
 51944  	FzName  uintptr
 51945  	FiValue int32
 51946  }
 51947  
 51948  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51949  	bp := tls.Alloc(32)
 51950  	defer tls.Free(32)
 51951  
 51952  	var db uintptr
 51953  
 51954  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 51955  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 51956  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 51957  	} else {
 51958  		db = sqlite3TestTextToPtr(tls, zCmd)
 51959  	}
 51960  
 51961  	return db
 51962  }
 51963  
 51964  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51965  	bp := tls.Alloc(4)
 51966  	defer tls.Free(4)
 51967  
 51968  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 51969  		return uintptr(0)
 51970  	}
 51971  
 51972  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 51973  }
 51974  
 51975  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51976  	var pMutex uintptr
 51977  	if objc != 2 {
 51978  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51979  		return TCL_ERROR
 51980  	}
 51981  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 51982  	if !(pMutex != 0) {
 51983  		return TCL_ERROR
 51984  	}
 51985  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 51986  	return TCL_OK
 51987  }
 51988  
 51989  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51990  	var pMutex uintptr
 51991  	if objc != 2 {
 51992  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51993  		return TCL_ERROR
 51994  	}
 51995  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 51996  	if !(pMutex != 0) {
 51997  		return TCL_ERROR
 51998  	}
 51999  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 52000  	return TCL_OK
 52001  }
 52002  
 52003  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52004  	var db uintptr
 52005  	if objc != 2 {
 52006  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52007  		return TCL_ERROR
 52008  	}
 52009  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 52010  	if !(db != 0) {
 52011  		return TCL_ERROR
 52012  	}
 52013  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52014  	return TCL_OK
 52015  }
 52016  
 52017  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52018  	var db uintptr
 52019  	if objc != 2 {
 52020  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 52021  		return TCL_ERROR
 52022  	}
 52023  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 52024  	if !(db != 0) {
 52025  		return TCL_ERROR
 52026  	}
 52027  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 52028  	return TCL_OK
 52029  }
 52030  
 52031  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 52032  	var i int32
 52033  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd8))/uint32(unsafe.Sizeof(struct {
 52034  		FzName uintptr
 52035  		FxProc uintptr
 52036  	}{})); i++ {
 52037  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 52038  	}
 52039  
 52040  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 52041  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 52042  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 52043  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 52044  	return SQLITE_OK
 52045  }
 52046  
 52047  var aCmd8 = [11]struct {
 52048  	FzName uintptr
 52049  	FxProc uintptr
 52050  }{
 52051  	{FzName: ts + 35315, FxProc: 0},
 52052  	{FzName: ts + 35332, FxProc: 0},
 52053  	{FzName: ts + 35351, FxProc: 0},
 52054  	{FzName: ts + 35366, FxProc: 0},
 52055  	{FzName: ts + 35385, FxProc: 0},
 52056  	{FzName: ts + 35404, FxProc: 0},
 52057  	{FzName: ts + 35419, FxProc: 0},
 52058  	{FzName: ts + 35434, FxProc: 0},
 52059  	{FzName: ts + 35454, FxProc: 0},
 52060  	{FzName: ts + 35477, FxProc: 0},
 52061  	{FzName: ts + 35497, FxProc: 0},
 52062  }
 52063  
 52064  type fs_real_file1 = struct {
 52065  	FpFile     uintptr
 52066  	FzName     uintptr
 52067  	FnDatabase int32
 52068  	FnJournal  int32
 52069  	FnBlob     int32
 52070  	FnRef      int32
 52071  	FpNext     uintptr
 52072  	FppThis    uintptr
 52073  }
 52074  
 52075  type fs_real_file = fs_real_file1
 52076  
 52077  type fs_file1 = struct {
 52078  	Fbase  sqlite3_file
 52079  	FeType int32
 52080  	FpReal uintptr
 52081  }
 52082  
 52083  type fs_file = fs_file1
 52084  
 52085  type tmp_file1 = struct {
 52086  	Fbase   sqlite3_file
 52087  	FnSize  int32
 52088  	FnAlloc int32
 52089  	FzAlloc uintptr
 52090  }
 52091  
 52092  type tmp_file = tmp_file1
 52093  
 52094  type fs_vfs_t1 = struct {
 52095  	Fbase      sqlite3_vfs
 52096  	FpFileList uintptr
 52097  	FpParent   uintptr
 52098  }
 52099  
 52100  type fs_vfs_t = fs_vfs_t1
 52101  
 52102  var fs_vfs = fs_vfs_t{
 52103  	Fbase: sqlite3_vfs{
 52104  		FiVersion:      1,
 52105  		FzName:         ts + 31055,
 52106  		FxOpen:         0,
 52107  		FxDelete:       0,
 52108  		FxAccess:       0,
 52109  		FxFullPathname: 0,
 52110  		FxDlOpen:       0,
 52111  		FxDlError:      0,
 52112  		FxDlSym:        0,
 52113  		FxDlClose:      0,
 52114  		FxRandomness:   0,
 52115  		FxSleep:        0,
 52116  		FxCurrentTime:  0,
 52117  	},
 52118  }
 52119  
 52120  var fs_io_methods = sqlite3_io_methods{
 52121  	FiVersion:               1,
 52122  	FxClose:                 0,
 52123  	FxRead:                  0,
 52124  	FxWrite:                 0,
 52125  	FxTruncate:              0,
 52126  	FxSync:                  0,
 52127  	FxFileSize:              0,
 52128  	FxLock:                  0,
 52129  	FxUnlock:                0,
 52130  	FxCheckReservedLock:     0,
 52131  	FxFileControl:           0,
 52132  	FxSectorSize:            0,
 52133  	FxDeviceCharacteristics: 0,
 52134  }
 52135  
 52136  var tmp_io_methods = sqlite3_io_methods{
 52137  	FiVersion:               1,
 52138  	FxClose:                 0,
 52139  	FxRead:                  0,
 52140  	FxWrite:                 0,
 52141  	FxTruncate:              0,
 52142  	FxSync:                  0,
 52143  	FxFileSize:              0,
 52144  	FxLock:                  0,
 52145  	FxUnlock:                0,
 52146  	FxCheckReservedLock:     0,
 52147  	FxFileControl:           0,
 52148  	FxSectorSize:            0,
 52149  	FxDeviceCharacteristics: 0,
 52150  }
 52151  
 52152  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 52153  	var pTmp uintptr = pFile
 52154  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 52155  	return SQLITE_OK
 52156  }
 52157  
 52158  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52159  	var pTmp uintptr = pFile
 52160  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 52161  		return SQLITE_IOERR | int32(2)<<8
 52162  	}
 52163  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint32(iAmt))
 52164  	return SQLITE_OK
 52165  }
 52166  
 52167  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52168  	var pTmp uintptr = pFile
 52169  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 52170  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 52171  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 52172  		if !(zNew != 0) {
 52173  			return SQLITE_NOMEM
 52174  		}
 52175  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 52176  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 52177  	}
 52178  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint32(iAmt))
 52179  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52180  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 52181  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52182  		}
 52183  		return int32(iOfst + sqlite_int64(iAmt))
 52184  	}()
 52185  	return SQLITE_OK
 52186  }
 52187  
 52188  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52189  	var pTmp uintptr = pFile
 52190  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 52191  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 52192  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 52193  		}
 52194  		return int32(size)
 52195  	}()
 52196  	return SQLITE_OK
 52197  }
 52198  
 52199  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52200  	return SQLITE_OK
 52201  }
 52202  
 52203  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52204  	var pTmp uintptr = pFile
 52205  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 52206  	return SQLITE_OK
 52207  }
 52208  
 52209  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52210  	return SQLITE_OK
 52211  }
 52212  
 52213  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52214  	return SQLITE_OK
 52215  }
 52216  
 52217  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52218  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52219  	return SQLITE_OK
 52220  }
 52221  
 52222  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52223  	return SQLITE_OK
 52224  }
 52225  
 52226  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52227  	return 0
 52228  }
 52229  
 52230  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52231  	return 0
 52232  }
 52233  
 52234  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 52235  	var rc int32 = SQLITE_OK
 52236  	var p uintptr = pFile
 52237  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52238  
 52239  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 52240  
 52241  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 52242  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52243  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 52244  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 52245  		}
 52246  		rc = (*struct {
 52247  			f func(*libc.TLS, uintptr) int32
 52248  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods)).FxClose})).f(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile)
 52249  		sqlite3.Xsqlite3_free(tls, pReal)
 52250  	}
 52251  
 52252  	return rc
 52253  }
 52254  
 52255  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52256  	var rc int32 = SQLITE_OK
 52257  	var p uintptr = pFile
 52258  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52259  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52260  
 52261  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 52262  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52263  		rc = SQLITE_IOERR | int32(2)<<8
 52264  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52265  		rc = (*struct {
 52266  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52267  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52268  	} else {
 52269  		var iRem int32 = iAmt
 52270  		var iBuf int32 = 0
 52271  		var ii int32 = int32(iOfst)
 52272  		for iRem > 0 && rc == SQLITE_OK {
 52273  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52274  			var iRealAmt int32 = func() int32 {
 52275  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52276  					return iRem
 52277  				}
 52278  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52279  			}()
 52280  
 52281  			rc = (*struct {
 52282  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52283  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf+uintptr(iBuf), iRealAmt, int64(iRealOff))
 52284  			ii = ii + iRealAmt
 52285  			iBuf = iBuf + iRealAmt
 52286  			iRem = iRem - iRealAmt
 52287  		}
 52288  	}
 52289  
 52290  	return rc
 52291  }
 52292  
 52293  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52294  	var rc int32 = SQLITE_OK
 52295  	var p uintptr = pFile
 52296  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52297  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52298  
 52299  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52300  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 52301  			rc = SQLITE_FULL
 52302  		} else {
 52303  			rc = (*struct {
 52304  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52305  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 52306  			if rc == SQLITE_OK {
 52307  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52308  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 52309  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52310  					}
 52311  					return int32(sqlite_int64(iAmt) + iOfst)
 52312  				}()
 52313  			}
 52314  		}
 52315  	} else {
 52316  		var iRem int32 = iAmt
 52317  		var iBuf int32 = 0
 52318  		var ii int32 = int32(iOfst)
 52319  		for iRem > 0 && rc == SQLITE_OK {
 52320  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 52321  			var iRealAmt int32 = func() int32 {
 52322  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 52323  					return iRem
 52324  				}
 52325  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 52326  			}()
 52327  
 52328  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 52329  				rc = SQLITE_FULL
 52330  			} else {
 52331  				rc = (*struct {
 52332  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52333  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf+uintptr(iBuf), iRealAmt, int64(iRealOff))
 52334  				ii = ii + iRealAmt
 52335  				iBuf = iBuf + iRealAmt
 52336  				iRem = iRem - iRealAmt
 52337  			}
 52338  		}
 52339  		if rc == SQLITE_OK {
 52340  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52341  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 52342  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52343  				}
 52344  				return int32(sqlite_int64(iAmt) + iOfst)
 52345  			}()
 52346  		}
 52347  	}
 52348  
 52349  	return rc
 52350  }
 52351  
 52352  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52353  	var p uintptr = pFile
 52354  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52355  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52356  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 52357  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 52358  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 52359  			}
 52360  			return int32(size)
 52361  		}()
 52362  	} else {
 52363  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 52364  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 52365  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 52366  			}
 52367  			return int32(size)
 52368  		}()
 52369  	}
 52370  	return SQLITE_OK
 52371  }
 52372  
 52373  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52374  	bp := tls.Alloc(4)
 52375  	defer tls.Free(4)
 52376  
 52377  	var p uintptr = pFile
 52378  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52379  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52380  	var rc int32 = SQLITE_OK
 52381  
 52382  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52383  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 52384  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 52385  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 52386  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 52387  		rc = (*struct {
 52388  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52389  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 52390  	}
 52391  	if rc == SQLITE_OK {
 52392  		rc = (*struct {
 52393  			f func(*libc.TLS, uintptr, int32) int32
 52394  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxSync})).f(tls, pRealFile, flags&libc.CplInt32(SQLITE_SYNC_DATAONLY))
 52395  	}
 52396  
 52397  	return rc
 52398  }
 52399  
 52400  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52401  	var p uintptr = pFile
 52402  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 52403  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 52404  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 52405  	} else {
 52406  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 52407  	}
 52408  	return SQLITE_OK
 52409  }
 52410  
 52411  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52412  	return SQLITE_OK
 52413  }
 52414  
 52415  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52416  	return SQLITE_OK
 52417  }
 52418  
 52419  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52420  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 52421  	return SQLITE_OK
 52422  }
 52423  
 52424  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52425  	if op == SQLITE_FCNTL_PRAGMA {
 52426  		return SQLITE_NOTFOUND
 52427  	}
 52428  	return SQLITE_OK
 52429  }
 52430  
 52431  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52432  	return BLOCKSIZE
 52433  }
 52434  
 52435  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52436  	return 0
 52437  }
 52438  
 52439  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52440  	bp := tls.Alloc(12)
 52441  	defer tls.Free(12)
 52442  
 52443  	var pFsVfs uintptr
 52444  	var p uintptr
 52445  	var pReal uintptr
 52446  	var eType int32
 52447  	var nName int32
 52448  	var rc int32
 52449  	var p2 uintptr
 52450  
 52451  	var real_flags int32
 52452  
 52453  	var pRealFile uintptr
 52454  	var pParent uintptr
 52455  	pFsVfs = pVfs
 52456  	p = pFile
 52457  	pReal = uintptr(0)
 52458  	rc = SQLITE_OK
 52459  
 52460  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 52461  		goto __1
 52462  	}
 52463  	p2 = pFile
 52464  	libc.Xmemset(tls, p2, 0, uint32(unsafe.Sizeof(tmp_file{})))
 52465  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 52466  	return SQLITE_OK
 52467  __1:
 52468  	;
 52469  	eType = func() int32 {
 52470  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 52471  			return DATABASE_FILE
 52472  		}
 52473  		return JOURNAL_FILE
 52474  	}()
 52475  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 52476  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 52477  
 52478  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 52479  		if eType == JOURNAL_FILE {
 52480  			return 8
 52481  		}
 52482  		return 0
 52483  	}()
 52484  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52485  __2:
 52486  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint32(nName)) != 0) {
 52487  		goto __4
 52488  	}
 52489  	goto __3
 52490  __3:
 52491  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 52492  	goto __2
 52493  	goto __4
 52494  __4:
 52495  	;
 52496  	if !!(pReal != 0) {
 52497  		goto __5
 52498  	}
 52499  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 52500  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 52501  
 52502  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(fs_real_file{}))+uint32((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 52503  	if !!(pReal != 0) {
 52504  		goto __6
 52505  	}
 52506  	rc = SQLITE_NOMEM
 52507  	goto open_out
 52508  __6:
 52509  	;
 52510  	libc.Xmemset(tls, pReal, 0, uint32(unsafe.Sizeof(fs_real_file{}))+uint32((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 52511  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 52512  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*32
 52513  
 52514  	rc = (*struct {
 52515  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52516  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 52517  	if !(rc != SQLITE_OK) {
 52518  		goto __7
 52519  	}
 52520  	goto open_out
 52521  __7:
 52522  	;
 52523  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52524  
 52525  	rc = (*struct {
 52526  		f func(*libc.TLS, uintptr, uintptr) int32
 52527  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 52528  	if !(rc != SQLITE_OK) {
 52529  		goto __8
 52530  	}
 52531  	goto open_out
 52532  __8:
 52533  	;
 52534  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 52535  		goto __9
 52536  	}
 52537  	rc = (*struct {
 52538  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52539  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, ts+35518, 1, int64(BLOBSIZE-1))
 52540  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 52541  	goto __10
 52542  __9:
 52543  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 52544  	rc = (*struct {
 52545  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52546  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 52547  	(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = int32(*(*uint8)(unsafe.Pointer(bp + 8)))<<24 + int32(*(*uint8)(unsafe.Pointer(bp + 8 + 1)))<<16 + int32(*(*uint8)(unsafe.Pointer(bp + 8 + 2)))<<8 + int32(*(*uint8)(unsafe.Pointer(bp + 8 + 3)))
 52548  	if !(rc == SQLITE_OK) {
 52549  		goto __11
 52550  	}
 52551  	rc = (*struct {
 52552  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52553  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-4))
 52554  	if !(*(*uint8)(unsafe.Pointer(bp + 8)) != 0 || *(*uint8)(unsafe.Pointer(bp + 8 + 1)) != 0 || *(*uint8)(unsafe.Pointer(bp + 8 + 2)) != 0 || *(*uint8)(unsafe.Pointer(bp + 8 + 3)) != 0) {
 52555  		goto __12
 52556  	}
 52557  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 52558  __12:
 52559  	;
 52560  __11:
 52561  	;
 52562  __10:
 52563  	;
 52564  	if !(rc == SQLITE_OK) {
 52565  		goto __13
 52566  	}
 52567  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52568  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 52569  		goto __14
 52570  	}
 52571  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 24
 52572  __14:
 52573  	;
 52574  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 88
 52575  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 52576  __13:
 52577  	;
 52578  __5:
 52579  	;
 52580  open_out:
 52581  	if !(pReal != 0) {
 52582  		goto __15
 52583  	}
 52584  	if !(rc == SQLITE_OK) {
 52585  		goto __16
 52586  	}
 52587  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 52588  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 52589  	goto __17
 52590  __16:
 52591  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 52592  		goto __18
 52593  	}
 52594  	(*struct {
 52595  		f func(*libc.TLS, uintptr) int32
 52596  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods)).FxClose})).f(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile)
 52597  __18:
 52598  	;
 52599  	sqlite3.Xsqlite3_free(tls, pReal)
 52600  __17:
 52601  	;
 52602  __15:
 52603  	;
 52604  	return rc
 52605  }
 52606  
 52607  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52608  	var rc int32 = SQLITE_OK
 52609  	var pFsVfs uintptr = pVfs
 52610  	var pReal uintptr
 52611  	var pF uintptr
 52612  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 52613  
 52614  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52615  	for ; pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zPath, uint32(nName)) != 0; pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext {
 52616  	}
 52617  	if pReal != 0 {
 52618  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 52619  		rc = (*struct {
 52620  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52621  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, ts+35520, 4, int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-BLOCKSIZE))
 52622  		if rc == SQLITE_OK {
 52623  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 52624  		}
 52625  	}
 52626  	return rc
 52627  }
 52628  
 52629  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52630  	var pFsVfs uintptr = pVfs
 52631  	var pReal uintptr
 52632  	var isJournal int32 = 0
 52633  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 52634  
 52635  	if flags != SQLITE_ACCESS_EXISTS {
 52636  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52637  		return (*struct {
 52638  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52639  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 52640  	}
 52641  
 52642  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 52643  		nName = nName - 8
 52644  		isJournal = 1
 52645  	}
 52646  
 52647  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 52648  	for ; pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zPath, uint32(nName)) != 0; pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext {
 52649  	}
 52650  
 52651  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 52652  	return SQLITE_OK
 52653  }
 52654  
 52655  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52656  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52657  	return (*struct {
 52658  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52659  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 52660  }
 52661  
 52662  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52663  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52664  	return (*struct {
 52665  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52666  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 52667  }
 52668  
 52669  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52670  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52671  	(*struct {
 52672  		f func(*libc.TLS, uintptr, int32, uintptr)
 52673  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 52674  }
 52675  
 52676  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 52677  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52678  	return (*struct {
 52679  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52680  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 52681  }
 52682  
 52683  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52684  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52685  	(*struct {
 52686  		f func(*libc.TLS, uintptr, uintptr)
 52687  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 52688  }
 52689  
 52690  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52691  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52692  	return (*struct {
 52693  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52694  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 52695  }
 52696  
 52697  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52698  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52699  	return (*struct {
 52700  		f func(*libc.TLS, uintptr, int32) int32
 52701  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 52702  }
 52703  
 52704  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52705  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 52706  	return (*struct {
 52707  		f func(*libc.TLS, uintptr, uintptr) int32
 52708  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 52709  }
 52710  
 52711  func fs_register(tls *libc.TLS) int32 {
 52712  	if fs_vfs.FpParent != 0 {
 52713  		return SQLITE_OK
 52714  	}
 52715  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52716  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 52717  	fs_vfs.Fbase.FszOsFile = func() int32 {
 52718  		if uint32(unsafe.Sizeof(tmp_file{})) > uint32(unsafe.Sizeof(fs_file{})) {
 52719  			return int32(unsafe.Sizeof(tmp_file{}))
 52720  		}
 52721  		return int32(unsafe.Sizeof(fs_file{}))
 52722  	}()
 52723  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 52724  }
 52725  
 52726  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 52727  	return fs_register(tls)
 52728  }
 52729  
 52730  type VfslogVfs1 = struct {
 52731  	Fbase        sqlite3_vfs
 52732  	FpVfs        uintptr
 52733  	FiNextFileId int32
 52734  	FpLog        uintptr
 52735  	FiOffset     sqlite3_int64
 52736  	FnBuf        int32
 52737  	FaBuf        [8192]int8
 52738  }
 52739  
 52740  type VfslogVfs = VfslogVfs1
 52741  type VfslogFile1 = struct {
 52742  	Fbase    sqlite3_file
 52743  	FpReal   uintptr
 52744  	FpVfslog uintptr
 52745  	FiFileId int32
 52746  }
 52747  
 52748  type VfslogFile = VfslogFile1
 52749  
 52750  var vfslog_vfs = sqlite3_vfs{
 52751  	FiVersion:          1,
 52752  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 52753  	FmxPathname:        INST_MAX_PATHNAME,
 52754  	FxOpen:             0,
 52755  	FxDelete:           0,
 52756  	FxAccess:           0,
 52757  	FxFullPathname:     0,
 52758  	FxDlOpen:           0,
 52759  	FxDlError:          0,
 52760  	FxDlSym:            0,
 52761  	FxDlClose:          0,
 52762  	FxRandomness:       0,
 52763  	FxSleep:            0,
 52764  	FxCurrentTime:      0,
 52765  	FxGetLastError:     0,
 52766  	FxCurrentTimeInt64: 0,
 52767  }
 52768  
 52769  var vfslog_io_methods = sqlite3_io_methods{
 52770  	FiVersion:               2,
 52771  	FxClose:                 0,
 52772  	FxRead:                  0,
 52773  	FxWrite:                 0,
 52774  	FxTruncate:              0,
 52775  	FxSync:                  0,
 52776  	FxFileSize:              0,
 52777  	FxLock:                  0,
 52778  	FxUnlock:                0,
 52779  	FxCheckReservedLock:     0,
 52780  	FxFileControl:           0,
 52781  	FxSectorSize:            0,
 52782  	FxDeviceCharacteristics: 0,
 52783  	FxShmMap:                0,
 52784  	FxShmLock:               0,
 52785  	FxShmBarrier:            0,
 52786  	FxShmUnmap:              0,
 52787  }
 52788  
 52789  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 52790  	bp := tls.Alloc(8)
 52791  	defer tls.Free(8)
 52792  
 52793  	libc.Xgettimeofday(tls, bp, uintptr(0))
 52794  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 52795  }
 52796  
 52797  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 52798  	var t sqlite3_uint64
 52799  	var rc int32 = SQLITE_OK
 52800  	var p uintptr = pFile
 52801  
 52802  	t = vfslog_time(tls)
 52803  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 52804  		rc = (*struct {
 52805  			f func(*libc.TLS, uintptr) int32
 52806  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxClose})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal)
 52807  	}
 52808  	t = vfslog_time(tls) - t
 52809  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52810  	return rc
 52811  }
 52812  
 52813  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52814  	var rc int32
 52815  	var t sqlite3_uint64
 52816  	var p uintptr = pFile
 52817  	t = vfslog_time(tls)
 52818  	rc = (*struct {
 52819  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52820  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxRead})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 52821  	t = vfslog_time(tls) - t
 52822  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52823  	return rc
 52824  }
 52825  
 52826  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52827  	var rc int32
 52828  	var t sqlite3_uint64
 52829  	var p uintptr = pFile
 52830  	t = vfslog_time(tls)
 52831  	rc = (*struct {
 52832  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52833  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxWrite})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, z, iAmt, iOfst)
 52834  	t = vfslog_time(tls) - t
 52835  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52836  	return rc
 52837  }
 52838  
 52839  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52840  	var rc int32
 52841  	var t sqlite3_uint64
 52842  	var p uintptr = pFile
 52843  	t = vfslog_time(tls)
 52844  	rc = (*struct {
 52845  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 52846  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxTruncate})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, size)
 52847  	t = vfslog_time(tls) - t
 52848  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 52849  	return rc
 52850  }
 52851  
 52852  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52853  	var rc int32
 52854  	var t sqlite3_uint64
 52855  	var p uintptr = pFile
 52856  	t = vfslog_time(tls)
 52857  	rc = (*struct {
 52858  		f func(*libc.TLS, uintptr, int32) int32
 52859  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxSync})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, flags)
 52860  	t = vfslog_time(tls) - t
 52861  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 52862  	return rc
 52863  }
 52864  
 52865  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52866  	var rc int32
 52867  	var t sqlite3_uint64
 52868  	var p uintptr = pFile
 52869  	t = vfslog_time(tls)
 52870  	rc = (*struct {
 52871  		f func(*libc.TLS, uintptr, uintptr) int32
 52872  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxFileSize})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, pSize)
 52873  	t = vfslog_time(tls) - t
 52874  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_FILESIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(*(*sqlite_int64)(unsafe.Pointer(pSize))))
 52875  	return rc
 52876  }
 52877  
 52878  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52879  	var rc int32
 52880  	var t sqlite3_uint64
 52881  	var p uintptr = pFile
 52882  	t = vfslog_time(tls)
 52883  	rc = (*struct {
 52884  		f func(*libc.TLS, uintptr, int32) int32
 52885  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxLock})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, eLock)
 52886  	t = vfslog_time(tls) - t
 52887  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52888  	return rc
 52889  }
 52890  
 52891  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52892  	var rc int32
 52893  	var t sqlite3_uint64
 52894  	var p uintptr = pFile
 52895  	t = vfslog_time(tls)
 52896  	rc = (*struct {
 52897  		f func(*libc.TLS, uintptr, int32) int32
 52898  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxUnlock})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, eLock)
 52899  	t = vfslog_time(tls) - t
 52900  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52901  	return rc
 52902  }
 52903  
 52904  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52905  	var rc int32
 52906  	var t sqlite3_uint64
 52907  	var p uintptr = pFile
 52908  	t = vfslog_time(tls)
 52909  	rc = (*struct {
 52910  		f func(*libc.TLS, uintptr, uintptr) int32
 52911  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxCheckReservedLock})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, pResOut)
 52912  	t = vfslog_time(tls) - t
 52913  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 52914  	return rc
 52915  }
 52916  
 52917  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52918  	bp := tls.Alloc(8)
 52919  	defer tls.Free(8)
 52920  
 52921  	var p uintptr = pFile
 52922  	var rc int32 = (*struct {
 52923  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52924  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxFileControl})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, op, pArg)
 52925  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 52926  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 52927  	}
 52928  	return rc
 52929  }
 52930  
 52931  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52932  	var rc int32
 52933  	var t sqlite3_uint64
 52934  	var p uintptr = pFile
 52935  	t = vfslog_time(tls)
 52936  	rc = (*struct {
 52937  		f func(*libc.TLS, uintptr) int32
 52938  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxSectorSize})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal)
 52939  	t = vfslog_time(tls) - t
 52940  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52941  	return rc
 52942  }
 52943  
 52944  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52945  	var rc int32
 52946  	var t sqlite3_uint64
 52947  	var p uintptr = pFile
 52948  	t = vfslog_time(tls)
 52949  	rc = (*struct {
 52950  		f func(*libc.TLS, uintptr) int32
 52951  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxDeviceCharacteristics})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal)
 52952  	t = vfslog_time(tls) - t
 52953  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52954  	return rc
 52955  }
 52956  
 52957  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 52958  	var rc int32
 52959  	var t sqlite3_uint64
 52960  	var p uintptr = pFile
 52961  	t = vfslog_time(tls)
 52962  	rc = (*struct {
 52963  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 52964  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmLock})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, ofst, n, flags)
 52965  	t = vfslog_time(tls) - t
 52966  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52967  	return rc
 52968  }
 52969  
 52970  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 52971  	var rc int32
 52972  	var t sqlite3_uint64
 52973  	var p uintptr = pFile
 52974  	t = vfslog_time(tls)
 52975  	rc = (*struct {
 52976  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 52977  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmMap})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, iRegion, szRegion, isWrite, pp)
 52978  	t = vfslog_time(tls) - t
 52979  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52980  	return rc
 52981  }
 52982  
 52983  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 52984  	var t sqlite3_uint64
 52985  	var p uintptr = pFile
 52986  	t = vfslog_time(tls)
 52987  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmBarrier})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal)
 52988  	t = vfslog_time(tls) - t
 52989  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 52990  }
 52991  
 52992  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 52993  	var rc int32
 52994  	var t sqlite3_uint64
 52995  	var p uintptr = pFile
 52996  	t = vfslog_time(tls)
 52997  	rc = (*struct {
 52998  		f func(*libc.TLS, uintptr, int32) int32
 52999  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods)).FxShmUnmap})).f(tls, (*VfslogFile)(unsafe.Pointer(p)).FpReal, deleteFlag)
 53000  	t = vfslog_time(tls) - t
 53001  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53002  	return rc
 53003  }
 53004  
 53005  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 53006  	var rc int32
 53007  	var t sqlite3_uint64
 53008  	var p uintptr = pFile
 53009  	var pLog uintptr = pVfs
 53010  
 53011  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 53012  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*16
 53013  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 53014  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 53015  
 53016  	t = vfslog_time(tls)
 53017  	rc = (*struct {
 53018  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53019  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zName, (*VfslogFile)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 53020  	t = vfslog_time(tls) - t
 53021  
 53022  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 53023  	vfslog_string(tls, pVfs, zName)
 53024  	return rc
 53025  }
 53026  
 53027  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 53028  	var rc int32
 53029  	var t sqlite3_uint64
 53030  	t = vfslog_time(tls)
 53031  	rc = (*struct {
 53032  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53033  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 53034  	t = vfslog_time(tls) - t
 53035  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 53036  	vfslog_string(tls, pVfs, zPath)
 53037  	return rc
 53038  }
 53039  
 53040  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 53041  	var rc int32
 53042  	var t sqlite3_uint64
 53043  	t = vfslog_time(tls)
 53044  	rc = (*struct {
 53045  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53046  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 53047  	t = vfslog_time(tls) - t
 53048  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 53049  	vfslog_string(tls, pVfs, zPath)
 53050  	return rc
 53051  }
 53052  
 53053  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 53054  	return (*struct {
 53055  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53056  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 53057  }
 53058  
 53059  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 53060  	return (*struct {
 53061  		f func(*libc.TLS, uintptr, uintptr) uintptr
 53062  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 53063  }
 53064  
 53065  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 53066  	(*struct {
 53067  		f func(*libc.TLS, uintptr, int32, uintptr)
 53068  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 53069  }
 53070  
 53071  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 53072  	return (*struct {
 53073  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 53074  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 53075  }
 53076  
 53077  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 53078  	(*struct {
 53079  		f func(*libc.TLS, uintptr, uintptr)
 53080  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 53081  }
 53082  
 53083  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 53084  	return (*struct {
 53085  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53086  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 53087  }
 53088  
 53089  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 53090  	return (*struct {
 53091  		f func(*libc.TLS, uintptr, int32) int32
 53092  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 53093  }
 53094  
 53095  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 53096  	return (*struct {
 53097  		f func(*libc.TLS, uintptr, uintptr) int32
 53098  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 53099  }
 53100  
 53101  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 53102  	return (*struct {
 53103  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53104  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 53105  }
 53106  
 53107  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 53108  	return (*struct {
 53109  		f func(*libc.TLS, uintptr, uintptr) int32
 53110  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 53111  }
 53112  
 53113  func vfslog_flush(tls *libc.TLS, p uintptr) {
 53114  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 53115  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 53116  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 53117  
 53118  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 53119  	sqlite3.Xsqlite3_io_error_persist = 0
 53120  	sqlite3.Xsqlite3_diskfull_pending = 0
 53121  
 53122  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 53123  		(*struct {
 53124  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53125  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods)).FxWrite})).f(tls, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, p+112, (*VfslogVfs)(unsafe.Pointer(p)).FnBuf, (*VfslogVfs)(unsafe.Pointer(p)).FiOffset)
 53126  		*(*sqlite3_int64)(unsafe.Pointer(p + 100)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53127  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 53128  	}
 53129  
 53130  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 53131  	sqlite3.Xsqlite3_io_error_persist = persist
 53132  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 53133  }
 53134  
 53135  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 53136  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 53137  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 53138  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 53139  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 53140  }
 53141  
 53142  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 53143  	var p uintptr = pVfs
 53144  	var zRec uintptr
 53145  	if uint32(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint32(unsafe.Sizeof([8192]int8{})) {
 53146  		vfslog_flush(tls, p)
 53147  	}
 53148  	zRec = p + 112 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53149  	put32bits(tls, zRec, uint32(eEvent))
 53150  	put32bits(tls, zRec+4, uint32(iFileid))
 53151  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 53152  	put32bits(tls, zRec+12, uint32(return_code))
 53153  	put32bits(tls, zRec+16, uint32(size))
 53154  	put32bits(tls, zRec+20, uint32(offset))
 53155  	*(*int32)(unsafe.Pointer(p + 108)) += 24
 53156  }
 53157  
 53158  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 53159  	var p uintptr = pVfs
 53160  	var zRec uintptr
 53161  	var nStr int32
 53162  	if zStr != 0 {
 53163  		nStr = int32(libc.Xstrlen(tls, zStr))
 53164  	} else {
 53165  		nStr = 0
 53166  	}
 53167  	if uint32(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint32(unsafe.Sizeof([8192]int8{})) {
 53168  		vfslog_flush(tls, p)
 53169  	}
 53170  	zRec = p + 112 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 53171  	put32bits(tls, zRec, uint32(nStr))
 53172  	if zStr != 0 {
 53173  		libc.Xmemcpy(tls, zRec+4, zStr, uint32(nStr))
 53174  	}
 53175  	*(*int32)(unsafe.Pointer(p + 108)) += 4 + nStr
 53176  }
 53177  
 53178  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 53179  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 53180  		vfslog_flush(tls, p)
 53181  		(*struct {
 53182  			f func(*libc.TLS, uintptr) int32
 53183  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods)).FxClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(p)).FpLog)
 53184  	}
 53185  	sqlite3.Xsqlite3_free(tls, p)
 53186  }
 53187  
 53188  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 53189  	var pVfs uintptr
 53190  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53191  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53192  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53193  	}{vfslogOpen})) {
 53194  		return SQLITE_ERROR
 53195  	}
 53196  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 53197  	vfslog_finalize(tls, pVfs)
 53198  	return SQLITE_OK
 53199  }
 53200  
 53201  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 53202  	bp := tls.Alloc(4)
 53203  	defer tls.Free(4)
 53204  
 53205  	var p uintptr
 53206  	var pParent uintptr
 53207  	var nByte int32
 53208  
 53209  	var rc int32
 53210  	var zFile uintptr
 53211  	var nVfs int32
 53212  
 53213  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 53214  	if !(pParent != 0) {
 53215  		return SQLITE_ERROR
 53216  	}
 53217  
 53218  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 53219  	nByte = int32(uint32(unsafe.Sizeof(VfslogVfs{})) + uint32((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile) + uint32(nVfs) + uint32(1) + uint32((*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname) + uint32(1))
 53220  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53221  	libc.Xmemset(tls, p, 0, uint32(nByte))
 53222  
 53223  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 53224  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8304
 53225  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint32(unsafe.Sizeof(sqlite3_vfs{})))
 53226  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 53227  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 53228  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint32(nVfs))
 53229  
 53230  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 53231  	(*struct {
 53232  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53233  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 53234  
 53235  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 53236  	(*struct {
 53237  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53238  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 53239  	rc = (*struct {
 53240  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53241  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 53242  	if rc == SQLITE_OK {
 53243  		libc.Xmemcpy(tls, p+112, ts+35535, uint32(20))
 53244  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 53245  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 53246  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 53247  	}
 53248  	if rc != 0 {
 53249  		vfslog_finalize(tls, p)
 53250  	}
 53251  	return rc
 53252  }
 53253  
 53254  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 53255  	var pVfs uintptr
 53256  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 53257  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 53258  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53259  	}{vfslogOpen})) {
 53260  		return SQLITE_ERROR
 53261  	}
 53262  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 53263  	vfslog_string(tls, pVfs, zMsg)
 53264  	return SQLITE_OK
 53265  }
 53266  
 53267  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 53268  	var zEvent uintptr = uintptr(0)
 53269  
 53270  	switch eEvent {
 53271  	case OS_CLOSE:
 53272  		zEvent = ts + 35556
 53273  		break
 53274  	case OS_READ:
 53275  		zEvent = ts + 35563
 53276  		break
 53277  	case OS_WRITE:
 53278  		zEvent = ts + 35569
 53279  		break
 53280  	case OS_TRUNCATE:
 53281  		zEvent = ts + 35576
 53282  		break
 53283  	case OS_SYNC:
 53284  		zEvent = ts + 27843
 53285  		break
 53286  	case OS_FILESIZE:
 53287  		zEvent = ts + 35586
 53288  		break
 53289  	case OS_LOCK:
 53290  		zEvent = ts + 35596
 53291  		break
 53292  	case OS_UNLOCK:
 53293  		zEvent = ts + 35602
 53294  		break
 53295  	case OS_CHECKRESERVEDLOCK:
 53296  		zEvent = ts + 35610
 53297  		break
 53298  	case OS_FILECONTROL:
 53299  		zEvent = ts + 35624
 53300  		break
 53301  	case OS_SECTORSIZE:
 53302  		zEvent = ts + 35637
 53303  		break
 53304  	case OS_DEVCHAR:
 53305  		zEvent = ts + 35649
 53306  		break
 53307  	case OS_OPEN:
 53308  		zEvent = ts + 27421
 53309  		break
 53310  	case OS_DELETE:
 53311  		zEvent = ts + 35661
 53312  		break
 53313  	case OS_ACCESS:
 53314  		zEvent = ts + 35669
 53315  		break
 53316  	case OS_FULLPATHNAME:
 53317  		zEvent = ts + 35677
 53318  		break
 53319  	case OS_RANDOMNESS:
 53320  		zEvent = ts + 35691
 53321  		break
 53322  	case OS_SLEEP:
 53323  		zEvent = ts + 35703
 53324  		break
 53325  	case OS_CURRENTTIME:
 53326  		zEvent = ts + 35710
 53327  		break
 53328  
 53329  	case OS_SHMUNMAP:
 53330  		zEvent = ts + 35723
 53331  		break
 53332  	case OS_SHMLOCK:
 53333  		zEvent = ts + 35733
 53334  		break
 53335  	case OS_SHMBARRIER:
 53336  		zEvent = ts + 35742
 53337  		break
 53338  	case OS_SHMMAP:
 53339  		zEvent = ts + 35754
 53340  		break
 53341  
 53342  	case OS_ANNOTATE:
 53343  		zEvent = ts + 35762
 53344  		break
 53345  	}
 53346  
 53347  	return zEvent
 53348  }
 53349  
 53350  type VfslogVtab1 = struct {
 53351  	Fbase  sqlite3_vtab
 53352  	FpFd   uintptr
 53353  	FnByte sqlite3_int64
 53354  	FzFile uintptr
 53355  }
 53356  
 53357  type VfslogVtab = VfslogVtab1
 53358  type VfslogCsr1 = struct {
 53359  	Fbase       sqlite3_vtab_cursor
 53360  	FiRowid     sqlite3_int64
 53361  	FiOffset    sqlite3_int64
 53362  	FzTransient uintptr
 53363  	FnFile      int32
 53364  	FazFile     uintptr
 53365  	FaBuf       [1024]uint8
 53366  }
 53367  
 53368  type VfslogCsr = VfslogCsr1
 53369  
 53370  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 53371  	return uint32(int32(*(*uint8)(unsafe.Pointer(p)))<<24 + int32(*(*uint8)(unsafe.Pointer(p + 1)))<<16 + int32(*(*uint8)(unsafe.Pointer(p + 2)))<<8 + int32(*(*uint8)(unsafe.Pointer(p + 3))))
 53372  }
 53373  
 53374  func dequote(tls *libc.TLS, z uintptr) {
 53375  	var quote int8
 53376  	quote = *(*int8)(unsafe.Pointer(z))
 53377  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 53378  		var iIn int32 = 1
 53379  		var iOut int32 = 0
 53380  		if int32(quote) == '[' {
 53381  			quote = int8(']')
 53382  		}
 53383  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 53384  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 53385  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 53386  					break
 53387  				}
 53388  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 53389  				iIn = iIn + 2
 53390  			} else {
 53391  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 53392  			}
 53393  		}
 53394  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 53395  	}
 53396  }
 53397  
 53398  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 53399  	bp := tls.Alloc(12)
 53400  	defer tls.Free(12)
 53401  
 53402  	var pVfs uintptr
 53403  
 53404  	var p uintptr
 53405  	var rc int32
 53406  	var nByte int32
 53407  	var zFile uintptr
 53408  
 53409  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 53410  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 53411  	nByte = int32(uint32(unsafe.Sizeof(VfslogVtab{})) + uint32((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint32((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 53412  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 53413  	if p == uintptr(0) {
 53414  		return SQLITE_NOMEM
 53415  	}
 53416  	libc.Xmemset(tls, p, 0, uint32(nByte))
 53417  
 53418  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*28
 53419  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 53420  
 53421  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*4))))
 53422  	if !(zFile != 0) {
 53423  		sqlite3.Xsqlite3_free(tls, p)
 53424  		return SQLITE_NOMEM
 53425  	}
 53426  	dequote(tls, zFile)
 53427  	(*struct {
 53428  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53429  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zFile, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname, (*VfslogVtab)(unsafe.Pointer(p)).FzFile)
 53430  	sqlite3.Xsqlite3_free(tls, zFile)
 53431  
 53432  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 53433  	rc = (*struct {
 53434  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53435  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen})).f(tls, pVfs, (*VfslogVtab)(unsafe.Pointer(p)).FzFile, (*VfslogVtab)(unsafe.Pointer(p)).FpFd, *(*int32)(unsafe.Pointer(bp + 8)), bp+8)
 53436  
 53437  	if rc == SQLITE_OK {
 53438  		(*struct {
 53439  			f func(*libc.TLS, uintptr, uintptr) int32
 53440  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods)).FxFileSize})).f(tls, (*VfslogVtab)(unsafe.Pointer(p)).FpFd, p+16)
 53441  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 53442  			ts+35773)
 53443  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 53444  	} else {
 53445  		sqlite3.Xsqlite3_free(tls, p)
 53446  	}
 53447  
 53448  	return rc
 53449  }
 53450  
 53451  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 53452  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 53453  	return SQLITE_OK
 53454  }
 53455  
 53456  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 53457  	var p uintptr = pVtab
 53458  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 53459  		(*struct {
 53460  			f func(*libc.TLS, uintptr) int32
 53461  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods)).FxClose})).f(tls, (*VfslogVtab)(unsafe.Pointer(p)).FpFd)
 53462  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 53463  	}
 53464  	sqlite3.Xsqlite3_free(tls, p)
 53465  	return SQLITE_OK
 53466  }
 53467  
 53468  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 53469  	var pCsr uintptr
 53470  
 53471  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 53472  	if !(pCsr != 0) {
 53473  		return SQLITE_NOMEM
 53474  	}
 53475  	libc.Xmemset(tls, pCsr, 0, uint32(unsafe.Sizeof(VfslogCsr{})))
 53476  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 53477  	return SQLITE_OK
 53478  }
 53479  
 53480  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 53481  	var p uintptr = pCursor
 53482  	var i int32
 53483  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 53484  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*4)))
 53485  	}
 53486  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 53487  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 53488  	sqlite3.Xsqlite3_free(tls, p)
 53489  	return SQLITE_OK
 53490  }
 53491  
 53492  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 53493  	bp := tls.Alloc(4)
 53494  	defer tls.Free(4)
 53495  
 53496  	var pCsr uintptr = pCursor
 53497  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53498  	var rc int32 = SQLITE_OK
 53499  	var nRead int32
 53500  
 53501  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 53502  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 53503  
 53504  	nRead = 24
 53505  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 53506  		var eEvent int32
 53507  		rc = (*struct {
 53508  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53509  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods)).FxRead})).f(tls, (*VfslogVtab)(unsafe.Pointer(p)).FpFd, pCsr+32, nRead, (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset)
 53510  
 53511  		eEvent = int32(get32bits(tls, pCsr+32))
 53512  		if rc == SQLITE_OK &&
 53513  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 53514  			rc = (*struct {
 53515  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53516  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods)).FxRead})).f(tls, (*VfslogVtab)(unsafe.Pointer(p)).FpFd, bp, 4, (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead))
 53517  			nRead = nRead + 4
 53518  			if rc == SQLITE_OK {
 53519  				var nStr int32 = int32(get32bits(tls, bp))
 53520  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 53521  				rc = (*struct {
 53522  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53523  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods)).FxRead})).f(tls, (*VfslogVtab)(unsafe.Pointer(p)).FpFd, zStr, nStr, (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead))
 53524  				*(*int8)(unsafe.Pointer(zStr + uintptr(nStr))) = int8(0)
 53525  				nRead = nRead + nStr
 53526  
 53527  				if eEvent == OS_OPEN {
 53528  					var iFileid int32 = int32(get32bits(tls, pCsr+32+4))
 53529  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 53530  						var nNew int32 = int32(uint32(unsafe.Sizeof(uintptr(0))) * uint32(iFileid+1))
 53531  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 53532  						nNew = int32(uint32(nNew) - uint32(unsafe.Sizeof(uintptr(0)))*uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 53533  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*4, 0, uint32(nNew))
 53534  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 53535  					}
 53536  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*4)))
 53537  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*4)) = zStr
 53538  				} else {
 53539  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 53540  				}
 53541  			}
 53542  		}
 53543  	}
 53544  
 53545  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 4)) += int64(1)
 53546  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 12)) += sqlite3_int64(nRead)
 53547  	return rc
 53548  }
 53549  
 53550  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 53551  	var pCsr uintptr = pCursor
 53552  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 53553  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 53554  }
 53555  
 53556  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 53557  	var pCsr uintptr = pCursor
 53558  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 53559  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 53560  	return vlogNext(tls, pCursor)
 53561  }
 53562  
 53563  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 53564  	var val uint32
 53565  	var pCsr uintptr = pCursor
 53566  
 53567  	val = get32bits(tls, pCsr+32+uintptr(4*i))
 53568  
 53569  	switch i {
 53570  	case 0:
 53571  		{
 53572  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 53573  			break
 53574  
 53575  		}
 53576  	case 1:
 53577  		{
 53578  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 53579  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 53580  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*4))
 53581  			}
 53582  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 53583  			break
 53584  
 53585  		}
 53586  	default:
 53587  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 53588  		break
 53589  	}
 53590  
 53591  	return SQLITE_OK
 53592  }
 53593  
 53594  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 53595  	var pCsr uintptr = pCursor
 53596  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 53597  	return SQLITE_OK
 53598  }
 53599  
 53600  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 53601  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 53602  	return SQLITE_OK
 53603  }
 53604  
 53605  var vfslog_module = sqlite3_module{
 53606  	FxCreate:     0,
 53607  	FxConnect:    0,
 53608  	FxBestIndex:  0,
 53609  	FxDisconnect: 0,
 53610  	FxDestroy:    0,
 53611  	FxOpen:       0,
 53612  	FxClose:      0,
 53613  	FxFilter:     0,
 53614  	FxNext:       0,
 53615  	FxEof:        0,
 53616  	FxColumn:     0,
 53617  	FxRowid:      0,
 53618  }
 53619  
 53620  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 53621  	bp := tls.Alloc(108)
 53622  	defer tls.Free(108)
 53623  
 53624  	var db uintptr
 53625  
 53626  	var rc int32 = SQLITE_ERROR
 53627  
 53628  	if objc < 2 {
 53629  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 53630  		return TCL_ERROR
 53631  	}
 53632  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), uintptr(unsafe.Pointer(&strs)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+72) != 0 {
 53633  		return TCL_ERROR
 53634  	}
 53635  
 53636  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 53637  	case uint32(0):
 53638  		{
 53639  			var zVfs uintptr
 53640  			var zMsg uintptr
 53641  			if objc != 4 {
 53642  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 53643  				return TCL_ERROR
 53644  			}
 53645  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 53646  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 53647  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 53648  			if rc != SQLITE_OK {
 53649  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 53650  				return TCL_ERROR
 53651  			}
 53652  			break
 53653  
 53654  		}
 53655  	case uint32(1):
 53656  		{
 53657  			var zVfs uintptr
 53658  			if objc != 3 {
 53659  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 53660  				return TCL_ERROR
 53661  			}
 53662  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 53663  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 53664  			if rc != SQLITE_OK {
 53665  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 53666  				return TCL_ERROR
 53667  			}
 53668  			break
 53669  
 53670  		}
 53671  
 53672  	case uint32(2):
 53673  		{
 53674  			var zVfs uintptr
 53675  			var zParent uintptr
 53676  			var zLog uintptr
 53677  			if objc != 5 {
 53678  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 53679  				return TCL_ERROR
 53680  			}
 53681  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 53682  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 53683  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 53684  			if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 53685  				zParent = uintptr(0)
 53686  			}
 53687  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 53688  			if rc != SQLITE_OK {
 53689  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 53690  				return TCL_ERROR
 53691  			}
 53692  			break
 53693  
 53694  		}
 53695  
 53696  	case uint32(3):
 53697  		{
 53698  			var zDb uintptr
 53699  			if objc != 3 {
 53700  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 53701  				return TCL_ERROR
 53702  			}
 53703  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 53704  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+76) != 0 {
 53705  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 76)).FobjClientData)).Fdb
 53706  				rc = sqlite3_vfslog_register(tls, db)
 53707  			}
 53708  			if rc != SQLITE_OK {
 53709  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 53710  				return TCL_ERROR
 53711  			}
 53712  			break
 53713  
 53714  		}
 53715  	}
 53716  
 53717  	return TCL_OK
 53718  }
 53719  
 53720  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 53721  
 53722  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 53723  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 53724  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53725  	}{test_vfslog})), uintptr(0), uintptr(0))
 53726  	return TCL_OK
 53727  }
 53728  
 53729  type testpcacheGlobalType1 = struct {
 53730  	FpDummy        uintptr
 53731  	FnInstance     int32
 53732  	FdiscardChance uint32
 53733  	FprngSeed      uint32
 53734  	FhighStress    uint32
 53735  }
 53736  
 53737  type testpcacheGlobalType = testpcacheGlobalType1
 53738  
 53739  var testpcacheGlobal testpcacheGlobalType
 53740  
 53741  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 53742  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 53743  	if testpcacheGlobal.FpDummy == uintptr(0) {
 53744  		return SQLITE_NOMEM
 53745  	}
 53746  	return SQLITE_OK
 53747  }
 53748  
 53749  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 53750  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 53751  	testpcacheGlobal.FpDummy = uintptr(0)
 53752  }
 53753  
 53754  type testpcache1 = struct {
 53755  	FszPage     int32
 53756  	FszExtra    int32
 53757  	FbPurgeable int32
 53758  	FnFree      int32
 53759  	FnPinned    int32
 53760  	FiRand      uint32
 53761  	FiMagic     uint32
 53762  	Fa          [217]struct {
 53763  		Fpage     sqlite3_pcache_page
 53764  		Fkey      uint32
 53765  		FisPinned int32
 53766  	}
 53767  }
 53768  
 53769  type testpcache = testpcache1
 53770  type testpcachePage = struct {
 53771  	Fpage     sqlite3_pcache_page
 53772  	Fkey      uint32
 53773  	FisPinned int32
 53774  }
 53775  
 53776  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 53777  	var x uint32 = uint32(0)
 53778  	var i int32
 53779  	for i = 0; i < 4; i++ {
 53780  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 53781  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 53782  	}
 53783  	return x
 53784  }
 53785  
 53786  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 53787  	var nMem int32
 53788  	var x uintptr
 53789  	var p uintptr
 53790  	var i int32
 53791  
 53792  	szPage = (szPage + 7) & libc.CplInt32(7)
 53793  	nMem = int32(uint32(unsafe.Sizeof(testpcache{})) + uint32(TESTPCACHE_NPAGE*(szPage+szExtra)))
 53794  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 53795  	if p == uintptr(0) {
 53796  		return uintptr(0)
 53797  	}
 53798  	x = p + 1*3500
 53799  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 53800  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 53801  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 53802  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 53803  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 53804  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 53805  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 53806  	i = 0
 53807  __1:
 53808  	if !(i < TESTPCACHE_NPAGE) {
 53809  		goto __3
 53810  	}
 53811  	{
 53812  		(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fkey = uint32(0)
 53813  		(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).FisPinned = 0
 53814  		(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fpage.FpBuf = x
 53815  		(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fpage.FpExtra = x + uintptr(szPage)
 53816  
 53817  	}
 53818  	goto __2
 53819  __2:
 53820  	i++
 53821  	x += uintptr(szPage + szExtra)
 53822  	goto __1
 53823  	goto __3
 53824  __3:
 53825  	;
 53826  	testpcacheGlobal.FnInstance++
 53827  	return p
 53828  }
 53829  
 53830  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 53831  	var p uintptr = pCache
 53832  	_ = p
 53833  
 53834  }
 53835  
 53836  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 53837  	var p uintptr = pCache
 53838  
 53839  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 53840  }
 53841  
 53842  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 53843  	var p uintptr = pCache
 53844  	var i int32
 53845  	var j int32
 53846  
 53847  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53848  		if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).Fkey == key {
 53849  			if !((*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).FisPinned != 0) {
 53850  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53851  
 53852  				(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).FisPinned = 1
 53853  			}
 53854  			return p + 28 + uintptr(i)*16
 53855  		}
 53856  	}
 53857  
 53858  	if createFlag == 0 {
 53859  		return uintptr(0)
 53860  	}
 53861  
 53862  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 53863  		return uintptr(0)
 53864  	}
 53865  
 53866  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 53867  		return uintptr(0)
 53868  	}
 53869  
 53870  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 53871  		return uintptr(0)
 53872  	}
 53873  
 53874  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 53875  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53876  		i = 0
 53877  	__1:
 53878  		if !(i < TESTPCACHE_NPAGE) {
 53879  			goto __3
 53880  		}
 53881  		{
 53882  			if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fkey == uint32(0) {
 53883  				(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(j)*16)).Fkey = key
 53884  				(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(j)*16)).FisPinned = 1
 53885  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fpage.FpBuf, 0, uint32((*testpcache)(unsafe.Pointer(p)).FszPage))
 53886  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fpage.FpExtra, 0, uint32((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53887  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53888  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 53889  
 53890  				return p + 28 + uintptr(j)*16
 53891  			}
 53892  
 53893  		}
 53894  		goto __2
 53895  	__2:
 53896  		i++
 53897  		j = (j + 1) % TESTPCACHE_NPAGE
 53898  		goto __1
 53899  		goto __3
 53900  	__3:
 53901  	}
 53902  
 53903  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 53904  		return uintptr(0)
 53905  	}
 53906  
 53907  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53908  	i = 0
 53909  __4:
 53910  	if !(i < TESTPCACHE_NPAGE) {
 53911  		goto __6
 53912  	}
 53913  	{
 53914  		if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).FisPinned == 0 {
 53915  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(j)*16)).Fkey = key
 53916  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(j)*16)).FisPinned = 1
 53917  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fpage.FpBuf, 0, uint32((*testpcache)(unsafe.Pointer(p)).FszPage))
 53918  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+28+uintptr(j)*16)).Fpage.FpExtra, 0, uint32((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53919  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53920  
 53921  			return p + 28 + uintptr(j)*16
 53922  		}
 53923  
 53924  	}
 53925  	goto __5
 53926  __5:
 53927  	i++
 53928  	j = (j + 1) % TESTPCACHE_NPAGE
 53929  	goto __4
 53930  	goto __6
 53931  __6:
 53932  	;
 53933  	return uintptr(0)
 53934  }
 53935  
 53936  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 53937  	var p uintptr = pCache
 53938  	var i int32
 53939  
 53940  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 53941  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 53942  		discard = 1
 53943  	}
 53944  
 53945  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53946  		if p+28+uintptr(i)*16 == pOldPage {
 53947  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).FisPinned = 0
 53948  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53949  
 53950  			if discard != 0 {
 53951  				(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fkey = uint32(0)
 53952  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 53953  
 53954  			}
 53955  			return
 53956  		}
 53957  	}
 53958  
 53959  }
 53960  
 53961  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 53962  	var p uintptr = pCache
 53963  	var i int32
 53964  
 53965  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53966  		if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).Fkey == newKey {
 53967  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fkey = uint32(0)
 53968  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53969  
 53970  			break
 53971  		}
 53972  	}
 53973  
 53974  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53975  		if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).Fkey == oldKey {
 53976  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fkey = newKey
 53977  			return
 53978  		}
 53979  	}
 53980  
 53981  }
 53982  
 53983  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 53984  	var p uintptr = pCache
 53985  	var i uint32
 53986  
 53987  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 53988  		if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).Fkey >= iLimit {
 53989  			(*testpcachePage)(unsafe.Pointer(p + 28 + uintptr(i)*16)).Fkey = uint32(0)
 53990  			if (*testpcachePage)(unsafe.Pointer(p+28+uintptr(i)*16)).FisPinned != 0 {
 53991  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53992  
 53993  			}
 53994  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53995  
 53996  		}
 53997  	}
 53998  }
 53999  
 54000  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 54001  	var p uintptr = pCache
 54002  
 54003  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 54004  	sqlite3.Xsqlite3_free(tls, p)
 54005  	testpcacheGlobal.FnInstance--
 54006  }
 54007  
 54008  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 54009  	bp := tls.Alloc(24)
 54010  	defer tls.Free(24)
 54011  
 54012  	testpcacheGlobal.FdiscardChance = discardChance
 54013  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 54014  	testpcacheGlobal.FhighStress = highStress
 54015  	if installFlag != isInstalled {
 54016  		if installFlag != 0 {
 54017  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 54018  
 54019  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 54020  		} else {
 54021  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 54022  		}
 54023  		isInstalled = installFlag
 54024  	}
 54025  }
 54026  
 54027  var testPcache = sqlite3_pcache_methods2{
 54028  	FiVersion:   1,
 54029  	FpArg:       0,
 54030  	FxInit:      0,
 54031  	FxShutdown:  0,
 54032  	FxCreate:    0,
 54033  	FxCachesize: 0,
 54034  	FxPagecount: 0,
 54035  	FxFetch:     0,
 54036  	FxUnpin:     0,
 54037  	FxRekey:     0,
 54038  	FxTruncate:  0,
 54039  	FxDestroy:   0,
 54040  }
 54041  var defaultPcache sqlite3_pcache_methods2
 54042  var isInstalled int32 = 0
 54043  
 54044  type quota_FILE1 = struct {
 54045  	Ff     uintptr
 54046  	FiOfst sqlite3_int64
 54047  	FpFile uintptr
 54048  }
 54049  
 54050  type quota_FILE = quota_FILE1
 54051  
 54052  type quotaGroup1 = struct {
 54053  	FzPattern  uintptr
 54054  	FiLimit    sqlite3_int64
 54055  	FiSize     sqlite3_int64
 54056  	FxCallback uintptr
 54057  	FpArg      uintptr
 54058  	FxDestroy  uintptr
 54059  	FpNext     uintptr
 54060  	FppPrev    uintptr
 54061  	FpFiles    uintptr
 54062  }
 54063  
 54064  type quotaGroup = quotaGroup1
 54065  type quotaConn1 = struct {
 54066  	Fbase  sqlite3_file
 54067  	FpFile uintptr
 54068  }
 54069  
 54070  type quotaConn = quotaConn1
 54071  type quotaFile1 = struct {
 54072  	FzFilename     uintptr
 54073  	FpGroup        uintptr
 54074  	FiSize         sqlite3_int64
 54075  	FnRef          int32
 54076  	FdeleteOnClose int32
 54077  	FpNext         uintptr
 54078  	FppPrev        uintptr
 54079  }
 54080  
 54081  type quotaFile = quotaFile1
 54082  
 54083  var gQuota struct {
 54084  	FpOrigVfs      uintptr
 54085  	FsThisVfs      sqlite3_vfs
 54086  	FsIoMethodsV1  sqlite3_io_methods
 54087  	FsIoMethodsV2  sqlite3_io_methods
 54088  	FisInitialized int32
 54089  	FpMutex        uintptr
 54090  	FpGroup        uintptr
 54091  }
 54092  
 54093  func quotaEnter(tls *libc.TLS) {
 54094  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 54095  }
 54096  
 54097  func quotaLeave(tls *libc.TLS) {
 54098  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 54099  }
 54100  
 54101  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 54102  	var N int32 = 0
 54103  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54104  	for pFile != 0 {
 54105  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54106  			N++
 54107  		}
 54108  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54109  	}
 54110  	return N
 54111  }
 54112  
 54113  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 54114  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54115  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54116  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54117  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 54118  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 54119  	}
 54120  	sqlite3.Xsqlite3_free(tls, pFile)
 54121  }
 54122  
 54123  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 54124  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54125  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 54126  	}
 54127  }
 54128  
 54129  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 54130  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 54131  		quotaRemoveAllFiles(tls, pGroup)
 54132  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54133  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 54134  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 54135  		}
 54136  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 54137  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54138  		}
 54139  		sqlite3.Xsqlite3_free(tls, pGroup)
 54140  	}
 54141  }
 54142  
 54143  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 54144  	var c int32
 54145  	var c2 int32
 54146  	var cx int32
 54147  	var invert int32
 54148  	var seen int32
 54149  
 54150  	for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 54151  		if c == '*' {
 54152  			for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 54153  				if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54154  					return 0
 54155  				}
 54156  			}
 54157  			if c == 0 {
 54158  				return 1
 54159  			} else if c == '[' {
 54160  				for *(*int8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 54161  					z++
 54162  				}
 54163  				return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
 54164  			}
 54165  			if c == '/' {
 54166  				cx = '\\'
 54167  			} else {
 54168  				cx = c
 54169  			}
 54170  			for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 54171  				for c2 != c && c2 != cx {
 54172  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54173  					if c2 == 0 {
 54174  						return 0
 54175  					}
 54176  				}
 54177  				if quotaStrglob(tls, zGlob, z) != 0 {
 54178  					return 1
 54179  				}
 54180  			}
 54181  			return 0
 54182  		} else if c == '?' {
 54183  			if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 54184  				return 0
 54185  			}
 54186  		} else if c == '[' {
 54187  			var prior_c int32 = 0
 54188  			seen = 0
 54189  			invert = 0
 54190  			c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 54191  			if c == 0 {
 54192  				return 0
 54193  			}
 54194  			c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54195  			if c2 == '^' {
 54196  				invert = 1
 54197  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54198  			}
 54199  			if c2 == ']' {
 54200  				if c == ']' {
 54201  					seen = 1
 54202  				}
 54203  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54204  			}
 54205  			for c2 != 0 && c2 != ']' {
 54206  				if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 54207  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54208  					if c >= prior_c && c <= c2 {
 54209  						seen = 1
 54210  					}
 54211  					prior_c = 0
 54212  				} else {
 54213  					if c == c2 {
 54214  						seen = 1
 54215  					}
 54216  					prior_c = c2
 54217  				}
 54218  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 54219  			}
 54220  			if c2 == 0 || seen^invert == 0 {
 54221  				return 0
 54222  			}
 54223  		} else if c == '/' {
 54224  			if int32(*(*int8)(unsafe.Pointer(z))) != '/' && int32(*(*int8)(unsafe.Pointer(z))) != '\\' {
 54225  				return 0
 54226  			}
 54227  			z++
 54228  		} else {
 54229  			if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 54230  				return 0
 54231  			}
 54232  		}
 54233  	}
 54234  	return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
 54235  }
 54236  
 54237  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 54238  	var p uintptr
 54239  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 54240  	}
 54241  	return p
 54242  }
 54243  
 54244  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 54245  	var p uintptr = pConn
 54246  	return p + 1*8
 54247  }
 54248  
 54249  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 54250  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54251  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 54252  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54253  	}
 54254  	if pFile == uintptr(0) && createFlag != 0 {
 54255  		var nName int32 = int32(libc.Xstrlen(tls, zName) & size_t(0x3fffffff))
 54256  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(quotaFile{}))+uint32(nName)+uint32(1)))
 54257  		if pFile != 0 {
 54258  			libc.Xmemset(tls, pFile, 0, uint32(unsafe.Sizeof(quotaFile{})))
 54259  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*32
 54260  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint32(nName+1))
 54261  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 54262  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 54263  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 24
 54264  			}
 54265  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 40
 54266  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 54267  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 54268  		}
 54269  	}
 54270  	return pFile
 54271  }
 54272  
 54273  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 54274  	return zUtf8
 54275  }
 54276  
 54277  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 54278  }
 54279  
 54280  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 54281  	var rc int32
 54282  	var pQuotaOpen uintptr
 54283  	var pFile uintptr
 54284  	var pGroup uintptr
 54285  	var pSubOpen uintptr
 54286  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54287  
 54288  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 54289  		return (*struct {
 54290  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54291  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54292  	}
 54293  
 54294  	quotaEnter(tls)
 54295  	pGroup = quotaGroupFind(tls, zName)
 54296  	if pGroup == uintptr(0) {
 54297  		rc = (*struct {
 54298  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54299  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 54300  	} else {
 54301  		pQuotaOpen = pConn
 54302  		pSubOpen = quotaSubOpen(tls, pConn)
 54303  		rc = (*struct {
 54304  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54305  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 54306  		if rc == SQLITE_OK {
 54307  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 54308  			if pFile == uintptr(0) {
 54309  				quotaLeave(tls)
 54310  				(*struct {
 54311  					f func(*libc.TLS, uintptr) int32
 54312  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54313  				return SQLITE_NOMEM
 54314  			}
 54315  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 54316  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54317  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 54318  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 54319  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 92
 54320  			} else {
 54321  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 168
 54322  			}
 54323  		}
 54324  	}
 54325  	quotaLeave(tls)
 54326  	return rc
 54327  }
 54328  
 54329  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 54330  	var rc int32
 54331  	var pFile uintptr
 54332  	var pGroup uintptr
 54333  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 54334  
 54335  	rc = (*struct {
 54336  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54337  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 54338  
 54339  	if rc == SQLITE_OK {
 54340  		quotaEnter(tls)
 54341  		pGroup = quotaGroupFind(tls, zName)
 54342  		if pGroup != 0 {
 54343  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 54344  			if pFile != 0 {
 54345  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54346  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54347  				} else {
 54348  					quotaRemoveFile(tls, pFile)
 54349  					quotaGroupDeref(tls, pGroup)
 54350  				}
 54351  			}
 54352  		}
 54353  		quotaLeave(tls)
 54354  	}
 54355  	return rc
 54356  }
 54357  
 54358  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 54359  	var p uintptr = pConn
 54360  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54361  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54362  	var rc int32
 54363  	rc = (*struct {
 54364  		f func(*libc.TLS, uintptr) int32
 54365  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 54366  	quotaEnter(tls)
 54367  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54368  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54369  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54370  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54371  			(*struct {
 54372  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 54373  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54374  			quotaRemoveFile(tls, pFile)
 54375  		}
 54376  		quotaGroupDeref(tls, pGroup)
 54377  	}
 54378  	quotaLeave(tls)
 54379  	return rc
 54380  }
 54381  
 54382  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54383  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54384  	return (*struct {
 54385  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54386  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54387  }
 54388  
 54389  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 54390  	var p uintptr = pConn
 54391  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54392  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 54393  	var pGroup uintptr
 54394  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54395  	var szNew sqlite3_int64
 54396  
 54397  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54398  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54399  		quotaEnter(tls)
 54400  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54401  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54402  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54403  				(*struct {
 54404  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54405  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+4, szNew,
 54406  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54407  			}
 54408  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54409  				quotaLeave(tls)
 54410  				return SQLITE_FULL
 54411  			}
 54412  		}
 54413  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54414  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54415  		quotaLeave(tls)
 54416  	}
 54417  	return (*struct {
 54418  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54419  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 54420  }
 54421  
 54422  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 54423  	var p uintptr = pConn
 54424  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54425  	var rc int32 = (*struct {
 54426  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54427  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 54428  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54429  	var pGroup uintptr
 54430  	if rc == SQLITE_OK {
 54431  		quotaEnter(tls)
 54432  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54433  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54434  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 54435  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) += size
 54436  		quotaLeave(tls)
 54437  	}
 54438  	return rc
 54439  }
 54440  
 54441  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 54442  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54443  	return (*struct {
 54444  		f func(*libc.TLS, uintptr, int32) int32
 54445  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 54446  }
 54447  
 54448  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 54449  	bp := tls.Alloc(8)
 54450  	defer tls.Free(8)
 54451  
 54452  	var p uintptr = pConn
 54453  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54454  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 54455  	var pGroup uintptr
 54456  
 54457  	var rc int32
 54458  
 54459  	rc = (*struct {
 54460  		f func(*libc.TLS, uintptr, uintptr) int32
 54461  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 54462  	if rc == SQLITE_OK {
 54463  		quotaEnter(tls)
 54464  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54465  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54466  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54467  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 54468  		quotaLeave(tls)
 54469  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 54470  	}
 54471  	return rc
 54472  }
 54473  
 54474  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54475  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54476  	return (*struct {
 54477  		f func(*libc.TLS, uintptr, int32) int32
 54478  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 54479  }
 54480  
 54481  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 54482  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54483  	return (*struct {
 54484  		f func(*libc.TLS, uintptr, int32) int32
 54485  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 54486  }
 54487  
 54488  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 54489  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54490  	return (*struct {
 54491  		f func(*libc.TLS, uintptr, uintptr) int32
 54492  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 54493  }
 54494  
 54495  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 54496  	bp := tls.Alloc(8)
 54497  	defer tls.Free(8)
 54498  
 54499  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54500  	var rc int32 = (*struct {
 54501  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54502  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 54503  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 54504  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 54505  	}
 54506  	return rc
 54507  }
 54508  
 54509  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 54510  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54511  	return (*struct {
 54512  		f func(*libc.TLS, uintptr) int32
 54513  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 54514  }
 54515  
 54516  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 54517  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54518  	return (*struct {
 54519  		f func(*libc.TLS, uintptr) int32
 54520  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 54521  }
 54522  
 54523  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 54524  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54525  	return (*struct {
 54526  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54527  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 54528  }
 54529  
 54530  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 54531  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54532  	return (*struct {
 54533  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54534  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 54535  }
 54536  
 54537  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 54538  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54539  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmBarrier})).f(tls, pSubOpen)
 54540  }
 54541  
 54542  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 54543  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 54544  	return (*struct {
 54545  		f func(*libc.TLS, uintptr, int32) int32
 54546  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 54547  }
 54548  
 54549  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 54550  	var pOrigVfs uintptr
 54551  	if gQuota.FisInitialized != 0 {
 54552  		return SQLITE_MISUSE
 54553  	}
 54554  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 54555  	if pOrigVfs == uintptr(0) {
 54556  		return SQLITE_ERROR
 54557  	}
 54558  
 54559  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 54560  	if !(int32(gQuota.FpMutex) != 0) {
 54561  		return SQLITE_NOMEM
 54562  	}
 54563  	gQuota.FisInitialized = 1
 54564  	gQuota.FpOrigVfs = pOrigVfs
 54565  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 54566  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 54567  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 54568  	}{quotaOpen}))
 54569  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 54570  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 54571  	}{quotaDelete}))
 54572  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 4 + 4)) += int32(uint32(unsafe.Sizeof(quotaConn{})))
 54573  	gQuota.FsThisVfs.FzName = ts + 35922
 54574  	gQuota.FsIoMethodsV1.FiVersion = 1
 54575  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 54576  		f func(*libc.TLS, uintptr) int32
 54577  	}{quotaClose}))
 54578  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 54579  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54580  	}{quotaRead}))
 54581  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 54582  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 54583  	}{quotaWrite}))
 54584  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 54585  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 54586  	}{quotaTruncate}))
 54587  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 54588  		f func(*libc.TLS, uintptr, int32) int32
 54589  	}{quotaSync}))
 54590  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 54591  		f func(*libc.TLS, uintptr, uintptr) int32
 54592  	}{quotaFileSize}))
 54593  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 54594  		f func(*libc.TLS, uintptr, int32) int32
 54595  	}{quotaLock}))
 54596  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 54597  		f func(*libc.TLS, uintptr, int32) int32
 54598  	}{quotaUnlock}))
 54599  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 54600  		f func(*libc.TLS, uintptr, uintptr) int32
 54601  	}{quotaCheckReservedLock}))
 54602  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 54603  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 54604  	}{quotaFileControl}))
 54605  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 54606  		f func(*libc.TLS, uintptr) int32
 54607  	}{quotaSectorSize}))
 54608  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 54609  		f func(*libc.TLS, uintptr) int32
 54610  	}{quotaDeviceCharacteristics}))
 54611  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 54612  	gQuota.FsIoMethodsV2.FiVersion = 2
 54613  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 54614  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 54615  	}{quotaShmMap}))
 54616  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 54617  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 54618  	}{quotaShmLock}))
 54619  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 54620  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 54621  		f func(*libc.TLS, uintptr, int32) int32
 54622  	}{quotaShmUnmap}))
 54623  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+4, makeDefault)
 54624  	return SQLITE_OK
 54625  }
 54626  
 54627  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 54628  	var pGroup uintptr
 54629  	if gQuota.FisInitialized == 0 {
 54630  		return SQLITE_MISUSE
 54631  	}
 54632  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 54633  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 54634  			return SQLITE_MISUSE
 54635  		}
 54636  	}
 54637  	for gQuota.FpGroup != 0 {
 54638  		pGroup = gQuota.FpGroup
 54639  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54640  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 54641  
 54642  		quotaGroupDeref(tls, pGroup)
 54643  	}
 54644  	gQuota.FisInitialized = 0
 54645  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 54646  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+4)
 54647  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint32(unsafe.Sizeof(gQuota)))
 54648  	return SQLITE_OK
 54649  }
 54650  
 54651  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 54652  	var pGroup uintptr
 54653  	quotaEnter(tls)
 54654  	pGroup = gQuota.FpGroup
 54655  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 54656  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 54657  	}
 54658  	if pGroup == uintptr(0) {
 54659  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & size_t(0x3fffffff))
 54660  		if iLimit <= int64(0) {
 54661  			quotaLeave(tls)
 54662  			return SQLITE_OK
 54663  		}
 54664  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint32(unsafe.Sizeof(quotaGroup{}))+uint32(nPattern)+uint32(1)))
 54665  		if pGroup == uintptr(0) {
 54666  			quotaLeave(tls)
 54667  			return SQLITE_NOMEM
 54668  		}
 54669  		libc.Xmemset(tls, pGroup, 0, uint32(unsafe.Sizeof(quotaGroup{})))
 54670  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*44
 54671  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint32(nPattern+1))
 54672  		if gQuota.FpGroup != 0 {
 54673  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 32
 54674  		}
 54675  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 54676  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 252
 54677  		gQuota.FpGroup = pGroup
 54678  	}
 54679  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 54680  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 54681  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 54682  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54683  	}
 54684  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 54685  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 54686  	quotaGroupDeref(tls, pGroup)
 54687  	quotaLeave(tls)
 54688  	return SQLITE_OK
 54689  }
 54690  
 54691  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 54692  	bp := tls.Alloc(12)
 54693  	defer tls.Free(12)
 54694  
 54695  	var zFull uintptr = uintptr(0)
 54696  	var fd uintptr
 54697  	var rc int32
 54698  	*(*int32)(unsafe.Pointer(bp)) = 0
 54699  
 54700  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 54701  
 54702  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 54703  	if fd == uintptr(0) {
 54704  		rc = SQLITE_NOMEM
 54705  	} else {
 54706  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 54707  		rc = (*struct {
 54708  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54709  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54710  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 54711  	}
 54712  
 54713  	if rc == SQLITE_OK {
 54714  		*(*int8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+size_t(1)))) = int8(0)
 54715  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+4, zFull, fd,
 54716  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 54717  		if rc == SQLITE_OK {
 54718  			(*struct {
 54719  				f func(*libc.TLS, uintptr, uintptr) int32
 54720  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+4)
 54721  			(*struct {
 54722  				f func(*libc.TLS, uintptr) int32
 54723  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 54724  		} else if rc == SQLITE_CANTOPEN {
 54725  			var pGroup uintptr
 54726  			var pFile uintptr
 54727  			quotaEnter(tls)
 54728  			pGroup = quotaGroupFind(tls, zFull)
 54729  			if pGroup != 0 {
 54730  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 54731  				if pFile != 0 {
 54732  					quotaRemoveFile(tls, pFile)
 54733  				}
 54734  			}
 54735  			quotaLeave(tls)
 54736  		}
 54737  	}
 54738  
 54739  	sqlite3.Xsqlite3_free(tls, fd)
 54740  	return rc
 54741  }
 54742  
 54743  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 54744  	var p uintptr
 54745  	var zFull uintptr
 54746  	var zFullTranslated uintptr
 54747  	var rc int32
 54748  	var pGroup uintptr
 54749  	var pFile uintptr
 54750  	p = uintptr(0)
 54751  	zFull = uintptr(0)
 54752  	zFullTranslated = uintptr(0)
 54753  
 54754  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54755  	if !(zFull == uintptr(0)) {
 54756  		goto __1
 54757  	}
 54758  	return uintptr(0)
 54759  __1:
 54760  	;
 54761  	rc = (*struct {
 54762  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54763  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54764  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54765  	if !(rc != 0) {
 54766  		goto __2
 54767  	}
 54768  	goto quota_fopen_error
 54769  __2:
 54770  	;
 54771  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 54772  	if !(p == uintptr(0)) {
 54773  		goto __3
 54774  	}
 54775  	goto quota_fopen_error
 54776  __3:
 54777  	;
 54778  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(quota_FILE{})))
 54779  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 54780  	if !(zFullTranslated == uintptr(0)) {
 54781  		goto __4
 54782  	}
 54783  	goto quota_fopen_error
 54784  __4:
 54785  	;
 54786  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 54787  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 54788  		goto __5
 54789  	}
 54790  	goto quota_fopen_error
 54791  __5:
 54792  	;
 54793  	quotaEnter(tls)
 54794  	pGroup = quotaGroupFind(tls, zFull)
 54795  	if !(pGroup != 0) {
 54796  		goto __6
 54797  	}
 54798  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 54799  	if !(pFile == uintptr(0)) {
 54800  		goto __7
 54801  	}
 54802  	quotaLeave(tls)
 54803  	goto quota_fopen_error
 54804  __7:
 54805  	;
 54806  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54807  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 54808  __6:
 54809  	;
 54810  	quotaLeave(tls)
 54811  	sqlite3.Xsqlite3_free(tls, zFull)
 54812  	return p
 54813  
 54814  quota_fopen_error:
 54815  	quota_mbcs_free(tls, zFullTranslated)
 54816  	sqlite3.Xsqlite3_free(tls, zFull)
 54817  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 54818  		goto __8
 54819  	}
 54820  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54821  __8:
 54822  	;
 54823  	sqlite3.Xsqlite3_free(tls, p)
 54824  	return uintptr(0)
 54825  }
 54826  
 54827  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54828  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54829  }
 54830  
 54831  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54832  	var iOfst sqlite3_int64
 54833  	var iEnd sqlite3_int64
 54834  	var szNew sqlite3_int64
 54835  	var pFile uintptr
 54836  	var rc size_t
 54837  
 54838  	iOfst = sqlite3_int64(libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff))
 54839  	iEnd = iOfst + sqlite3_int64(size*nmemb)
 54840  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54841  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54842  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54843  		quotaEnter(tls)
 54844  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54845  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54846  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54847  				(*struct {
 54848  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54849  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+4, szNew,
 54850  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54851  			}
 54852  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54853  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54854  				nmemb = size_t((iEnd - iOfst) / sqlite3_int64(size))
 54855  				iEnd = iOfst + sqlite3_int64(size*nmemb)
 54856  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54857  			}
 54858  		}
 54859  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54860  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54861  		quotaLeave(tls)
 54862  	} else {
 54863  		pFile = uintptr(0)
 54864  	}
 54865  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54866  
 54867  	if rc < nmemb && pFile != 0 {
 54868  		var nWritten size_t = rc
 54869  		var iNewEnd sqlite3_int64 = iOfst + sqlite3_int64(size*nWritten)
 54870  		if iNewEnd < iEnd {
 54871  			iNewEnd = iEnd
 54872  		}
 54873  		quotaEnter(tls)
 54874  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 12)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54875  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 54876  		quotaLeave(tls)
 54877  	}
 54878  	return rc
 54879  }
 54880  
 54881  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 54882  	var rc int32
 54883  	var pFile uintptr
 54884  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54885  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54886  	if pFile != 0 {
 54887  		quotaEnter(tls)
 54888  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54889  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54890  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54891  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54892  				(*struct {
 54893  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 54894  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54895  				quotaRemoveFile(tls, pFile)
 54896  			}
 54897  			quotaGroupDeref(tls, pGroup)
 54898  		}
 54899  		quotaLeave(tls)
 54900  	}
 54901  	sqlite3.Xsqlite3_free(tls, p)
 54902  	return rc
 54903  }
 54904  
 54905  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 54906  	var rc int32
 54907  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54908  	if rc == 0 && doFsync != 0 {
 54909  		rc = libc.Xfsync(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff))
 54910  	}
 54911  	return libc.Bool32(rc != 0)
 54912  }
 54913  
 54914  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int32, whence int32) int32 {
 54915  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 54916  }
 54917  
 54918  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 54919  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54920  }
 54921  
 54922  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int32 {
 54923  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54924  }
 54925  
 54926  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 54927  	return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54928  }
 54929  
 54930  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 54931  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54932  	var rc int32
 54933  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54934  		var pGroup uintptr
 54935  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54936  			return -1
 54937  		}
 54938  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54939  		quotaEnter(tls)
 54940  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54941  		quotaLeave(tls)
 54942  	}
 54943  	rc = libc.Xftruncate(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), szNew)
 54944  	if pFile != 0 && rc == 0 {
 54945  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54946  		quotaEnter(tls)
 54947  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 12)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54948  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 54949  		quotaLeave(tls)
 54950  	}
 54951  	return rc
 54952  }
 54953  
 54954  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 54955  	bp := tls.Alloc(96)
 54956  	defer tls.Free(96)
 54957  
 54958  	var rc int32
 54959  
 54960  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 54961  	if rc == 0 {
 54962  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 54963  	}
 54964  	return rc
 54965  }
 54966  
 54967  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54968  	bp := tls.Alloc(96)
 54969  	defer tls.Free(96)
 54970  
 54971  	var rc int32
 54972  
 54973  	rc = libc.Xfstat(tls, libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff), bp)
 54974  	if rc == 0 {
 54975  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 54976  	}
 54977  	return int64(-1)
 54978  }
 54979  
 54980  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54981  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 54982  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 54983  	}
 54984  	return int64(-1)
 54985  }
 54986  
 54987  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int32 {
 54988  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 54989  	var pos1 int32
 54990  	var pos2 int32
 54991  	var rc int32
 54992  	pos1 = libc.Xftell(tls, f)
 54993  	if pos1 < 0 {
 54994  		return -1
 54995  	}
 54996  	rc = libc.Xfseek(tls, f, 0, SEEK_END)
 54997  	if rc != 0 {
 54998  		return -1
 54999  	}
 55000  	pos2 = libc.Xftell(tls, f)
 55001  	if pos2 < 0 {
 55002  		return -1
 55003  	}
 55004  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 55005  	if rc != 0 {
 55006  		return -1
 55007  	}
 55008  	return pos2 - pos1
 55009  }
 55010  
 55011  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 55012  	var zFull uintptr
 55013  	var nFull size_t
 55014  	var rc int32
 55015  	var pGroup uintptr
 55016  	var pFile uintptr
 55017  	var pNextFile uintptr
 55018  	var diff int32
 55019  	var c int8
 55020  
 55021  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 55022  	if zFull == uintptr(0) {
 55023  		return SQLITE_NOMEM
 55024  	}
 55025  	rc = (*struct {
 55026  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55027  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 55028  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 55029  	if rc != 0 {
 55030  		sqlite3.Xsqlite3_free(tls, zFull)
 55031  		return rc
 55032  	}
 55033  
 55034  	nFull = libc.Xstrlen(tls, zFull)
 55035  	if nFull > size_t(0) && (int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-size_t(1))))) == '/' || int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-size_t(1))))) == '\\') {
 55036  		nFull--
 55037  		*(*int8)(unsafe.Pointer(zFull + uintptr(nFull))) = int8(0)
 55038  	}
 55039  
 55040  	quotaEnter(tls)
 55041  	pGroup = quotaGroupFind(tls, zFull)
 55042  	if pGroup != 0 {
 55043  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 55044  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 55045  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 55046  			if diff == 0 && (int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 55047  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 55048  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 55049  				} else {
 55050  					rc = (*struct {
 55051  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 55052  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 55053  					quotaRemoveFile(tls, pFile)
 55054  					quotaGroupDeref(tls, pGroup)
 55055  				}
 55056  			}
 55057  		}
 55058  	}
 55059  	quotaLeave(tls)
 55060  	sqlite3.Xsqlite3_free(tls, zFull)
 55061  	return rc
 55062  }
 55063  
 55064  type TclQuotaCallback1 = struct {
 55065  	Finterp  uintptr
 55066  	FpScript uintptr
 55067  }
 55068  
 55069  type TclQuotaCallback = TclQuotaCallback1
 55070  
 55071  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 55072  	bp := tls.Alloc(12)
 55073  	defer tls.Free(12)
 55074  
 55075  	var p uintptr
 55076  	var pEval uintptr
 55077  	var pVarname uintptr
 55078  
 55079  	var rc int32
 55080  
 55081  	p = pArg
 55082  	if p == uintptr(0) {
 55083  		return
 55084  	}
 55085  
 55086  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 55087  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 55088  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 55089  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 55090  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 55091  
 55092  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 55093  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 55094  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 55095  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 55096  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 55097  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 55098  
 55099  	if rc == TCL_OK {
 55100  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 55101  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+4)
 55102  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 4))
 55103  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 55104  	}
 55105  
 55106  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55107  		var _objPtr uintptr = pEval
 55108  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55109  			tcl.XTclFreeObj(tls, _objPtr)
 55110  		}
 55111  	}
 55112  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 55113  		var _objPtr uintptr = pVarname
 55114  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55115  			tcl.XTclFreeObj(tls, _objPtr)
 55116  		}
 55117  	}
 55118  	if rc != TCL_OK {
 55119  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 55120  	}
 55121  }
 55122  
 55123  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 55124  	var p uintptr = pObj
 55125  	if p != 0 {
 55126  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 55127  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 55128  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 55129  				tcl.XTclFreeObj(tls, _objPtr)
 55130  			}
 55131  		}
 55132  		sqlite3.Xsqlite3_free(tls, p)
 55133  	}
 55134  }
 55135  
 55136  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55137  	bp := tls.Alloc(4)
 55138  	defer tls.Free(4)
 55139  
 55140  	var zName uintptr
 55141  
 55142  	var rc int32
 55143  
 55144  	if objc != 3 {
 55145  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 55146  		return TCL_ERROR
 55147  	}
 55148  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55149  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55150  		return TCL_ERROR
 55151  	}
 55152  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 55153  		zName = uintptr(0)
 55154  	}
 55155  
 55156  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 55157  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55158  
 55159  	return TCL_OK
 55160  }
 55161  
 55162  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55163  	var rc int32
 55164  
 55165  	if objc != 1 {
 55166  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 55167  		return TCL_ERROR
 55168  	}
 55169  
 55170  	rc = sqlite3_quota_shutdown(tls)
 55171  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55172  
 55173  	return TCL_OK
 55174  }
 55175  
 55176  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55177  	bp := tls.Alloc(12)
 55178  	defer tls.Free(12)
 55179  
 55180  	var zPattern uintptr
 55181  
 55182  	var pScript uintptr
 55183  	var rc int32
 55184  	var p uintptr
 55185  
 55186  	var xDestroy uintptr
 55187  	var xCallback uintptr
 55188  
 55189  	if objc != 4 {
 55190  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 55191  		return TCL_ERROR
 55192  	}
 55193  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55194  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55195  		return TCL_ERROR
 55196  	}
 55197  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*4))
 55198  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 55199  
 55200  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 55201  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 55202  		if !(p != 0) {
 55203  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 55204  			return TCL_OK
 55205  		}
 55206  		libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(TclQuotaCallback{})))
 55207  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 55208  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 55209  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 55210  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 55211  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 55212  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 55213  		}{tclQuotaCallback}))
 55214  	} else {
 55215  		p = uintptr(0)
 55216  		xDestroy = uintptr(0)
 55217  		xCallback = uintptr(0)
 55218  	}
 55219  
 55220  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 55221  
 55222  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55223  	return TCL_OK
 55224  }
 55225  
 55226  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55227  	var zFilename uintptr
 55228  	var rc int32
 55229  
 55230  	if objc != 2 {
 55231  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55232  		return TCL_ERROR
 55233  	}
 55234  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55235  
 55236  	rc = sqlite3_quota_file(tls, zFilename)
 55237  
 55238  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55239  	return TCL_OK
 55240  }
 55241  
 55242  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55243  	bp := tls.Alloc(1008)
 55244  	defer tls.Free(1008)
 55245  
 55246  	var pResult uintptr
 55247  	var pGroupTerm uintptr
 55248  	var pFileTerm uintptr
 55249  	var pGroup uintptr
 55250  	var pFile uintptr
 55251  
 55252  	pResult = tcl.XTcl_NewObj(tls)
 55253  	quotaEnter(tls)
 55254  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 55255  		pGroupTerm = tcl.XTcl_NewObj(tls)
 55256  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55257  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 55258  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55259  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 55260  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 55261  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 55262  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 55263  			var i int32
 55264  
 55265  			pFileTerm = tcl.XTcl_NewObj(tls)
 55266  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 55267  			for i = 0; *(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 55268  				if int32(*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 55269  					*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8('/')
 55270  				}
 55271  			}
 55272  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55273  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 55274  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55275  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 55276  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55277  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 55278  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 55279  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 55280  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 55281  		}
 55282  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 55283  	}
 55284  	quotaLeave(tls)
 55285  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 55286  	return TCL_OK
 55287  }
 55288  
 55289  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55290  	bp := tls.Alloc(58)
 55291  	defer tls.Free(58)
 55292  
 55293  	var zFilename uintptr
 55294  	var zMode uintptr
 55295  	var p uintptr
 55296  
 55297  	if objc != 3 {
 55298  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 55299  		return TCL_ERROR
 55300  	}
 55301  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55302  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 55303  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 55304  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+8, ts+9889, libc.VaList(bp, p))
 55305  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 55306  	return TCL_OK
 55307  }
 55308  
 55309  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55310  	bp := tls.Alloc(8)
 55311  	defer tls.Free(8)
 55312  
 55313  	var p uintptr
 55314  	var zBuf uintptr
 55315  
 55316  	var got size_t
 55317  
 55318  	if objc != 4 {
 55319  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 55320  		return TCL_ERROR
 55321  	}
 55322  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55323  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55324  		return TCL_ERROR
 55325  	}
 55326  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4) != 0 {
 55327  		return TCL_ERROR
 55328  	}
 55329  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 55330  	if zBuf == uintptr(0) {
 55331  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 55332  		return TCL_ERROR
 55333  	}
 55334  	got = sqlite3_quota_fread(tls, zBuf, uint32(*(*int32)(unsafe.Pointer(bp))), uint32(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55335  	*(*int8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = int8(0)
 55336  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 55337  	sqlite3.Xsqlite3_free(tls, zBuf)
 55338  	return TCL_OK
 55339  }
 55340  
 55341  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55342  	bp := tls.Alloc(8)
 55343  	defer tls.Free(8)
 55344  
 55345  	var p uintptr
 55346  	var zBuf uintptr
 55347  
 55348  	var got size_t
 55349  
 55350  	if objc != 5 {
 55351  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 55352  		return TCL_ERROR
 55353  	}
 55354  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55355  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55356  		return TCL_ERROR
 55357  	}
 55358  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4) != 0 {
 55359  		return TCL_ERROR
 55360  	}
 55361  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 55362  	got = sqlite3_quota_fwrite(tls, zBuf, uint32(*(*int32)(unsafe.Pointer(bp))), uint32(*(*int32)(unsafe.Pointer(bp + 4))), p)
 55363  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 55364  	return TCL_OK
 55365  }
 55366  
 55367  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55368  	var p uintptr
 55369  	var rc int32
 55370  
 55371  	if objc != 2 {
 55372  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55373  		return TCL_ERROR
 55374  	}
 55375  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55376  	rc = sqlite3_quota_fclose(tls, p)
 55377  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55378  	return TCL_OK
 55379  }
 55380  
 55381  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55382  	bp := tls.Alloc(4)
 55383  	defer tls.Free(4)
 55384  
 55385  	var p uintptr
 55386  	var rc int32
 55387  	*(*int32)(unsafe.Pointer(bp)) = 0
 55388  
 55389  	if objc != 2 && objc != 3 {
 55390  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 55391  		return TCL_ERROR
 55392  	}
 55393  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55394  	if objc == 3 {
 55395  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55396  			return TCL_ERROR
 55397  		}
 55398  	}
 55399  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 55400  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55401  	return TCL_OK
 55402  }
 55403  
 55404  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55405  	bp := tls.Alloc(20)
 55406  	defer tls.Free(20)
 55407  
 55408  	var p uintptr
 55409  
 55410  	var zWhence uintptr
 55411  	var whence int32
 55412  	var rc int32
 55413  
 55414  	if objc != 4 {
 55415  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 55416  		return TCL_ERROR
 55417  	}
 55418  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55419  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16) != 0 {
 55420  		return TCL_ERROR
 55421  	}
 55422  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 55423  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 55424  		whence = SEEK_SET
 55425  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 55426  		whence = SEEK_CUR
 55427  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 55428  		whence = SEEK_END
 55429  	} else {
 55430  		tcl.XTcl_AppendResult(tls, interp,
 55431  			libc.VaList(bp, ts+36084, uintptr(0)))
 55432  		return TCL_ERROR
 55433  	}
 55434  	rc = sqlite3_quota_fseek(tls, p, *(*int32)(unsafe.Pointer(bp + 16)), whence)
 55435  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55436  	return TCL_OK
 55437  }
 55438  
 55439  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55440  	var p uintptr
 55441  	if objc != 2 {
 55442  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55443  		return TCL_ERROR
 55444  	}
 55445  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55446  	sqlite3_quota_rewind(tls, p)
 55447  	return TCL_OK
 55448  }
 55449  
 55450  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55451  	var p uintptr
 55452  	var x sqlite3_int64
 55453  	if objc != 2 {
 55454  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55455  		return TCL_ERROR
 55456  	}
 55457  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55458  	x = sqlite3_int64(sqlite3_quota_ftell(tls, p))
 55459  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55460  	return TCL_OK
 55461  }
 55462  
 55463  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55464  	bp := tls.Alloc(8)
 55465  	defer tls.Free(8)
 55466  
 55467  	var p uintptr
 55468  	var x sqlite3_int64
 55469  
 55470  	var rc int32
 55471  	if objc != 3 {
 55472  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 55473  		return TCL_ERROR
 55474  	}
 55475  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55476  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 {
 55477  		return TCL_ERROR
 55478  	}
 55479  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 55480  	rc = sqlite3_quota_ftruncate(tls, p, x)
 55481  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55482  	return TCL_OK
 55483  }
 55484  
 55485  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55486  	var p uintptr
 55487  	var x sqlite3_int64
 55488  	if objc != 2 {
 55489  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55490  		return TCL_ERROR
 55491  	}
 55492  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55493  	x = sqlite3_quota_file_size(tls, p)
 55494  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55495  	return TCL_OK
 55496  }
 55497  
 55498  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55499  	var p uintptr
 55500  	var x sqlite3_int64
 55501  	if objc != 2 {
 55502  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55503  		return TCL_ERROR
 55504  	}
 55505  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55506  	x = sqlite3_quota_file_truesize(tls, p)
 55507  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55508  	return TCL_OK
 55509  }
 55510  
 55511  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55512  	bp := tls.Alloc(4)
 55513  	defer tls.Free(4)
 55514  
 55515  	var p uintptr
 55516  
 55517  	if objc != 2 {
 55518  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55519  		return TCL_ERROR
 55520  	}
 55521  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55522  	*(*time_t)(unsafe.Pointer(bp)) = 0
 55523  	sqlite3_quota_file_mtime(tls, p, bp)
 55524  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(*(*time_t)(unsafe.Pointer(bp)))))
 55525  	return TCL_OK
 55526  }
 55527  
 55528  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55529  	var zFilename uintptr
 55530  	var rc int32
 55531  	if objc != 2 {
 55532  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 55533  		return TCL_ERROR
 55534  	}
 55535  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55536  	rc = sqlite3_quota_remove(tls, zFilename)
 55537  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55538  	return TCL_OK
 55539  }
 55540  
 55541  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55542  	var zPattern uintptr
 55543  	var zText uintptr
 55544  	var rc int32
 55545  	if objc != 3 {
 55546  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 55547  		return TCL_ERROR
 55548  	}
 55549  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 55550  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 55551  	rc = quotaStrglob(tls, zPattern, zText)
 55552  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 55553  	return TCL_OK
 55554  }
 55555  
 55556  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55557  	var p uintptr
 55558  	var x sqlite3_int64
 55559  	if objc != 2 {
 55560  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55561  		return TCL_ERROR
 55562  	}
 55563  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55564  	x = sqlite3_int64(sqlite3_quota_file_available(tls, p))
 55565  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 55566  	return TCL_OK
 55567  }
 55568  
 55569  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55570  	var p uintptr
 55571  	var x int32
 55572  	if objc != 2 {
 55573  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 55574  		return TCL_ERROR
 55575  	}
 55576  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 55577  	x = sqlite3_quota_ferror(tls, p)
 55578  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 55579  	return TCL_OK
 55580  }
 55581  
 55582  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 55583  	var i int32
 55584  
 55585  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aCmd9))/uint32(unsafe.Sizeof(struct {
 55586  		FzName uintptr
 55587  		FxProc uintptr
 55588  	}{})); i++ {
 55589  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 55590  	}
 55591  
 55592  	return TCL_OK
 55593  }
 55594  
 55595  var aCmd9 = [21]struct {
 55596  	FzName uintptr
 55597  	FxProc uintptr
 55598  }{
 55599  	{FzName: ts + 36158, FxProc: 0},
 55600  	{FzName: ts + 36183, FxProc: 0},
 55601  	{FzName: ts + 36206, FxProc: 0},
 55602  	{FzName: ts + 36224, FxProc: 0},
 55603  	{FzName: ts + 36243, FxProc: 0},
 55604  	{FzName: ts + 36262, FxProc: 0},
 55605  	{FzName: ts + 36282, FxProc: 0},
 55606  	{FzName: ts + 36302, FxProc: 0},
 55607  	{FzName: ts + 36323, FxProc: 0},
 55608  	{FzName: ts + 36344, FxProc: 0},
 55609  	{FzName: ts + 36365, FxProc: 0},
 55610  	{FzName: ts + 36385, FxProc: 0},
 55611  	{FzName: ts + 36406, FxProc: 0},
 55612  	{FzName: ts + 36426, FxProc: 0},
 55613  	{FzName: ts + 36450, FxProc: 0},
 55614  	{FzName: ts + 36474, FxProc: 0},
 55615  	{FzName: ts + 36502, FxProc: 0},
 55616  	{FzName: ts + 36527, FxProc: 0},
 55617  	{FzName: ts + 36548, FxProc: 0},
 55618  	{FzName: ts + 36567, FxProc: 0},
 55619  	{FzName: ts + 36596, FxProc: 0},
 55620  }
 55621  
 55622  type Circle1 = struct {
 55623  	FaBox [2]struct {
 55624  		Fxmin float64
 55625  		Fxmax float64
 55626  		Fymin float64
 55627  		Fymax float64
 55628  	}
 55629  	Fcenterx    float64
 55630  	Fcentery    float64
 55631  	Fradius     float64
 55632  	FmxArea     float64
 55633  	FeScoreType int32
 55634  }
 55635  
 55636  type Circle = Circle1
 55637  type Box = struct {
 55638  	Fxmin float64
 55639  	Fxmax float64
 55640  	Fymin float64
 55641  	Fymax float64
 55642  }
 55643  
 55644  func circle_del(tls *libc.TLS, p uintptr) {
 55645  	sqlite3.Xsqlite3_free(tls, p)
 55646  }
 55647  
 55648  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 55649  	var i int32
 55650  	var pCircle uintptr
 55651  	var xmin float64
 55652  	var xmax float64
 55653  	var ymin float64
 55654  	var ymax float64
 55655  
 55656  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 55657  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 55658  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 55659  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 55660  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55661  	if pCircle == uintptr(0) {
 55662  		if nCoord != 4 {
 55663  			return SQLITE_ERROR
 55664  		}
 55665  
 55666  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 3 || *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8)) < 0.0 {
 55667  			return SQLITE_ERROR
 55668  		}
 55669  
 55670  		pCircle = libc.AssignPtrUintptr(p+12, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55671  		if !(pCircle != 0) {
 55672  			return SQLITE_NOMEM
 55673  		}
 55674  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55675  
 55676  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55677  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55678  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55679  
 55680  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55681  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55682  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55683  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55684  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55685  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55686  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55687  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55688  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 55689  	}
 55690  
 55691  	for i = 0; i < 4; i++ {
 55692  		var x float64
 55693  		if i&0x01 != 0 {
 55694  			x = xmax
 55695  		} else {
 55696  			x = xmin
 55697  		}
 55698  		var y float64
 55699  		if i&0x02 != 0 {
 55700  			y = ymax
 55701  		} else {
 55702  			y = ymin
 55703  		}
 55704  		var d2 float64
 55705  
 55706  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55707  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55708  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55709  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55710  			return SQLITE_OK
 55711  		}
 55712  	}
 55713  
 55714  	for i = 0; i < 2; i++ {
 55715  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55716  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55717  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55718  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55719  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55720  			return SQLITE_OK
 55721  		}
 55722  	}
 55723  
 55724  	*(*int32)(unsafe.Pointer(pRes)) = 0
 55725  	return SQLITE_OK
 55726  }
 55727  
 55728  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 55729  	var i int32
 55730  	var pCircle uintptr
 55731  	var xmin float64
 55732  	var xmax float64
 55733  	var ymin float64
 55734  	var ymax float64
 55735  	var nWithin int32 = 0
 55736  
 55737  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55738  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55739  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55740  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55741  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 55742  	if pCircle == uintptr(0) {
 55743  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 55744  			return SQLITE_ERROR
 55745  		}
 55746  
 55747  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 55748  			return SQLITE_ERROR
 55749  		}
 55750  
 55751  		pCircle = libc.AssignPtrUintptr(p+12, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55752  		if !(pCircle != 0) {
 55753  			return SQLITE_NOMEM
 55754  		}
 55755  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55756  
 55757  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 55758  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55759  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55760  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55761  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 55762  		} else {
 55763  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 55764  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 55765  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 55766  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 55767  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 55768  			for z != 0 && *(*int8)(unsafe.Pointer(z)) != 0 {
 55769  				if int32(*(*int8)(unsafe.Pointer(z))) == 'r' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55770  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 55771  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'x' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55772  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 55773  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'y' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55774  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 55775  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'e' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55776  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 55777  				} else if int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55778  					z++
 55779  					continue
 55780  				}
 55781  				for int32(*(*int8)(unsafe.Pointer(z))) != 0 && int32(*(*int8)(unsafe.Pointer(z))) != ' ' {
 55782  					z++
 55783  				}
 55784  				for int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55785  					z++
 55786  				}
 55787  			}
 55788  		}
 55789  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 55790  			sqlite3.Xsqlite3_free(tls, pCircle)
 55791  			return SQLITE_NOMEM
 55792  		}
 55793  
 55794  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55795  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55796  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55797  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55798  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55799  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55800  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55801  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55802  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 55803  	}
 55804  
 55805  	for i = 0; i < 4; i++ {
 55806  		var x float64
 55807  		if i&0x01 != 0 {
 55808  			x = xmax
 55809  		} else {
 55810  			x = xmin
 55811  		}
 55812  		var y float64
 55813  		if i&0x02 != 0 {
 55814  			y = ymax
 55815  		} else {
 55816  			y = ymin
 55817  		}
 55818  		var d2 float64
 55819  
 55820  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55821  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55822  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55823  			nWithin++
 55824  		}
 55825  	}
 55826  
 55827  	if nWithin == 0 {
 55828  		for i = 0; i < 2; i++ {
 55829  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55830  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55831  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55832  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55833  				nWithin = 1
 55834  				break
 55835  			}
 55836  		}
 55837  	}
 55838  
 55839  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 55840  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55841  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 55842  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55843  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 55844  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 55845  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 55846  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 55847  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 55848  			}
 55849  		} else {
 55850  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 55851  		}
 55852  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 55853  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55854  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55855  			nWithin = 0
 55856  		}
 55857  	} else {
 55858  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55859  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55860  			nWithin = 0
 55861  		}
 55862  	}
 55863  	if nWithin == 0 {
 55864  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55865  	} else if nWithin >= 4 {
 55866  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55867  	} else {
 55868  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55869  	}
 55870  	return SQLITE_OK
 55871  }
 55872  
 55873  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 55874  	var x0 float64
 55875  	var x1 float64
 55876  	var y0 float64
 55877  	var y1 float64
 55878  	var bx0 float64
 55879  	var bx1 float64
 55880  	var by0 float64
 55881  	var by1 float64
 55882  
 55883  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 55884  		return SQLITE_ERROR
 55885  	}
 55886  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55887  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55888  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55889  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55890  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55891  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55892  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55893  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 55894  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55895  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 55896  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55897  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 55898  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55899  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 55900  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55901  	} else {
 55902  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55903  	}
 55904  	return SQLITE_OK
 55905  }
 55906  
 55907  type Cube1 = struct {
 55908  	Fx      float64
 55909  	Fy      float64
 55910  	Fz      float64
 55911  	Fwidth  float64
 55912  	Fheight float64
 55913  	Fdepth  float64
 55914  }
 55915  
 55916  type Cube = Cube1
 55917  
 55918  func cube_context_free(tls *libc.TLS, p uintptr) {
 55919  	sqlite3.Xsqlite3_free(tls, p)
 55920  }
 55921  
 55922  var gHere int32 = 42
 55923  
 55924  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 55925  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55926  
 55927  	if pCube == uintptr(0) {
 55928  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 55929  			*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8)) <= 0.0 || *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8)) <= 0.0 || *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8)) <= 0.0 {
 55930  			return SQLITE_ERROR
 55931  		}
 55932  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 55933  		if !(pCube != 0) {
 55934  			return SQLITE_NOMEM
 55935  		}
 55936  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55937  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55938  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55939  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 55940  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 55941  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 55942  
 55943  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 55944  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 55945  	}
 55946  
 55947  	*(*int32)(unsafe.Pointer(piRes)) = 0
 55948  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 55949  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 55950  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 55951  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 55952  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 55953  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 55954  		*(*int32)(unsafe.Pointer(piRes)) = 1
 55955  	}
 55956  
 55957  	return SQLITE_OK
 55958  }
 55959  
 55960  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55961  	bp := tls.Alloc(4)
 55962  	defer tls.Free(4)
 55963  
 55964  	var rc int32
 55965  
 55966  	if objc != 2 {
 55967  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55968  		return TCL_ERROR
 55969  	}
 55970  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 55971  		return TCL_ERROR
 55972  	}
 55973  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 55974  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55975  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 55976  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55977  	return TCL_OK
 55978  }
 55979  
 55980  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55981  	bp := tls.Alloc(4)
 55982  	defer tls.Free(4)
 55983  
 55984  	var rc int32
 55985  
 55986  	if objc != 2 {
 55987  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55988  		return TCL_ERROR
 55989  	}
 55990  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 55991  		return TCL_ERROR
 55992  	}
 55993  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 55994  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55995  	}{circle_geom})), uintptr(0))
 55996  	if rc == SQLITE_OK {
 55997  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 55998  			*(*uintptr)(unsafe.Pointer(&struct {
 55999  				f func(*libc.TLS, uintptr) int32
 56000  			}{circle_query_func})), uintptr(0), uintptr(0))
 56001  	}
 56002  	if rc == SQLITE_OK {
 56003  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 56004  			*(*uintptr)(unsafe.Pointer(&struct {
 56005  				f func(*libc.TLS, uintptr) int32
 56006  			}{bfs_query_func})), uintptr(0), uintptr(0))
 56007  	}
 56008  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 56009  	return TCL_OK
 56010  }
 56011  
 56012  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 56013  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 56014  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56015  	}{register_cube_geom})), uintptr(0), uintptr(0))
 56016  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 56017  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56018  	}{register_circle_geom})), uintptr(0), uintptr(0))
 56019  	return TCL_OK
 56020  }
 56021  
 56022  type fd_set5 = struct{ Ffds_bits [32]int32 }
 56023  
 56024  type schema_vtab1 = struct {
 56025  	Fbase sqlite3_vtab
 56026  	Fdb   uintptr
 56027  }
 56028  
 56029  type schema_vtab = schema_vtab1
 56030  type schema_cursor1 = struct {
 56031  	Fbase        sqlite3_vtab_cursor
 56032  	FpDbList     uintptr
 56033  	FpTableList  uintptr
 56034  	FpColumnList uintptr
 56035  	Frowid       int32
 56036  }
 56037  
 56038  type schema_cursor = schema_cursor1
 56039  
 56040  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 56041  	sqlite3.Xsqlite3_free(tls, pVtab)
 56042  	return 0
 56043  }
 56044  
 56045  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56046  	var rc int32 = SQLITE_NOMEM
 56047  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 56048  	if pVtab != 0 {
 56049  		libc.Xmemset(tls, pVtab, 0, uint32(unsafe.Sizeof(schema_vtab{})))
 56050  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 56051  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 56052  	}
 56053  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 56054  	return rc
 56055  }
 56056  
 56057  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56058  	var rc int32 = SQLITE_NOMEM
 56059  	var pCur uintptr
 56060  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 56061  	if pCur != 0 {
 56062  		libc.Xmemset(tls, pCur, 0, uint32(unsafe.Sizeof(schema_cursor{})))
 56063  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 56064  		rc = SQLITE_OK
 56065  	}
 56066  	return rc
 56067  }
 56068  
 56069  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 56070  	var pCur uintptr = cur
 56071  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 56072  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 56073  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 56074  	sqlite3.Xsqlite3_free(tls, pCur)
 56075  	return SQLITE_OK
 56076  }
 56077  
 56078  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 56079  	var pCur uintptr = cur
 56080  	switch i {
 56081  	case 0:
 56082  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 56083  		break
 56084  	case 1:
 56085  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 56086  		break
 56087  	default:
 56088  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 56089  		break
 56090  	}
 56091  	return SQLITE_OK
 56092  }
 56093  
 56094  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 56095  	var pCur uintptr = cur
 56096  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 56097  	return SQLITE_OK
 56098  }
 56099  
 56100  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 56101  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 56102  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 56103  	return rc
 56104  }
 56105  
 56106  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 56107  	var pCur uintptr = cur
 56108  	return func() int32 {
 56109  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 56110  			return 0
 56111  		}
 56112  		return 1
 56113  	}()
 56114  }
 56115  
 56116  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 56117  	bp := tls.Alloc(24)
 56118  	defer tls.Free(24)
 56119  
 56120  	var rc int32
 56121  	var pCur uintptr
 56122  	var pVtab uintptr
 56123  	var zSql uintptr
 56124  	var pDbList uintptr
 56125  	rc = SQLITE_OK
 56126  	pCur = cur
 56127  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 56128  	zSql = uintptr(0)
 56129  
 56130  __1:
 56131  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 56132  		goto __2
 56133  	}
 56134  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+12))) {
 56135  		goto __3
 56136  	}
 56137  	goto next_exit
 56138  __3:
 56139  	;
 56140  __4:
 56141  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 56142  		goto __5
 56143  	}
 56144  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+8))) {
 56145  		goto __6
 56146  	}
 56147  	goto next_exit
 56148  __6:
 56149  	;
 56150  __7:
 56151  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 56152  		goto __8
 56153  	}
 56154  	rc = finalize(tls, pCur+4)
 56155  	goto next_exit
 56156  	goto __7
 56157  __8:
 56158  	;
 56159  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 56160  		goto __9
 56161  	}
 56162  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56163  		ts+36768, 0)
 56164  	goto __10
 56165  __9:
 56166  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 56167  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 56168  		ts+36823,
 56169  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 56170  __10:
 56171  	;
 56172  	if !!(zSql != 0) {
 56173  		goto __11
 56174  	}
 56175  	rc = SQLITE_NOMEM
 56176  	goto next_exit
 56177  __11:
 56178  	;
 56179  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+8, uintptr(0))
 56180  	sqlite3.Xsqlite3_free(tls, zSql)
 56181  	if !(rc != SQLITE_OK) {
 56182  		goto __12
 56183  	}
 56184  	goto next_exit
 56185  __12:
 56186  	;
 56187  	goto __4
 56188  __5:
 56189  	;
 56190  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 56191  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 56192  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 56193  
 56194  	if !!(zSql != 0) {
 56195  		goto __13
 56196  	}
 56197  	rc = SQLITE_NOMEM
 56198  	goto next_exit
 56199  __13:
 56200  	;
 56201  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+12, uintptr(0))
 56202  	sqlite3.Xsqlite3_free(tls, zSql)
 56203  	if !(rc != SQLITE_OK) {
 56204  		goto __14
 56205  	}
 56206  	goto next_exit
 56207  __14:
 56208  	;
 56209  	goto __1
 56210  __2:
 56211  	;
 56212  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 56213  
 56214  next_exit:
 56215  	return rc
 56216  }
 56217  
 56218  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56219  	var rc int32
 56220  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 56221  	var pCur uintptr = pVtabCursor
 56222  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 56223  	finalize(tls, pCur+8)
 56224  	finalize(tls, pCur+12)
 56225  	finalize(tls, pCur+4)
 56226  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+4, uintptr(0))
 56227  	return func() int32 {
 56228  		if rc == SQLITE_OK {
 56229  			return schemaNext(tls, pVtabCursor)
 56230  		}
 56231  		return rc
 56232  	}()
 56233  }
 56234  
 56235  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 56236  	return SQLITE_OK
 56237  }
 56238  
 56239  var schemaModule = sqlite3_module{
 56240  	FxCreate:     0,
 56241  	FxConnect:    0,
 56242  	FxBestIndex:  0,
 56243  	FxDisconnect: 0,
 56244  	FxDestroy:    0,
 56245  	FxOpen:       0,
 56246  	FxClose:      0,
 56247  	FxFilter:     0,
 56248  	FxNext:       0,
 56249  	FxEof:        0,
 56250  	FxColumn:     0,
 56251  	FxRowid:      0,
 56252  }
 56253  
 56254  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56255  	bp := tls.Alloc(4)
 56256  	defer tls.Free(4)
 56257  
 56258  	if objc != 2 {
 56259  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 56260  		return TCL_ERROR
 56261  	}
 56262  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 56263  		return TCL_ERROR
 56264  	}
 56265  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 56266  	return TCL_OK
 56267  }
 56268  
 56269  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 56270  	var i int32
 56271  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd12))/uint32(unsafe.Sizeof(struct {
 56272  		FzName      uintptr
 56273  		FxProc      uintptr
 56274  		FclientData uintptr
 56275  	}{})); i++ {
 56276  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 56277  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 56278  	}
 56279  	return TCL_OK
 56280  }
 56281  
 56282  var aObjCmd12 = [1]struct {
 56283  	FzName      uintptr
 56284  	FxProc      uintptr
 56285  	FclientData uintptr
 56286  }{
 56287  	{FzName: ts + 36922, FxProc: 0},
 56288  }
 56289  
 56290  type SqlMessage1 = struct {
 56291  	Fop           int32
 56292  	FpDb          uintptr
 56293  	FpStmt        uintptr
 56294  	FerrCode      int32
 56295  	FzIn          uintptr
 56296  	FnByte        int32
 56297  	FzOut         uintptr
 56298  	FpNext        uintptr
 56299  	FpPrev        uintptr
 56300  	FclientMutex  pthread_mutex_t
 56301  	FclientWakeup pthread_cond_t
 56302  }
 56303  
 56304  type SqlMessage = SqlMessage1
 56305  
 56306  type ServerState = struct {
 56307  	FqueueMutex   pthread_mutex_t
 56308  	FserverMutex  pthread_mutex_t
 56309  	FserverWakeup pthread_cond_t
 56310  	FserverHalt   int32
 56311  	FpQueueHead   uintptr
 56312  	FpQueueTail   uintptr
 56313  }
 56314  
 56315  var g4 = ServerState{}
 56316  
 56317  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 56318  	libc.Xpthread_mutex_init(tls, pMsg+36, uintptr(0))
 56319  	libc.Xpthread_cond_init(tls, pMsg+60, uintptr(0))
 56320  
 56321  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56322  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 56323  	if g4.FpQueueHead == uintptr(0) {
 56324  		g4.FpQueueTail = pMsg
 56325  	} else {
 56326  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 56327  	}
 56328  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 56329  	g4.FpQueueHead = pMsg
 56330  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56331  
 56332  	libc.Xpthread_mutex_lock(tls, pMsg+36)
 56333  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+48)
 56334  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 56335  		libc.Xpthread_cond_wait(tls, pMsg+60, pMsg+36)
 56336  	}
 56337  	libc.Xpthread_mutex_unlock(tls, pMsg+36)
 56338  
 56339  	libc.Xpthread_mutex_destroy(tls, pMsg+36)
 56340  	libc.Xpthread_cond_destroy(tls, pMsg+60)
 56341  }
 56342  
 56343  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 56344  	bp := tls.Alloc(108)
 56345  	defer tls.Free(108)
 56346  
 56347  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 56348  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 56349  	sendToServer(tls, bp)
 56350  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 56351  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56352  }
 56353  
 56354  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 56355  	bp := tls.Alloc(108)
 56356  	defer tls.Free(108)
 56357  
 56358  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 56359  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56360  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 56361  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 56362  	sendToServer(tls, bp)
 56363  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 56364  	if pzTail != 0 {
 56365  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 56366  	}
 56367  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56368  }
 56369  
 56370  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 56371  	bp := tls.Alloc(108)
 56372  	defer tls.Free(108)
 56373  
 56374  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 56375  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56376  	sendToServer(tls, bp)
 56377  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56378  }
 56379  
 56380  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 56381  	bp := tls.Alloc(108)
 56382  	defer tls.Free(108)
 56383  
 56384  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 56385  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56386  	sendToServer(tls, bp)
 56387  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56388  }
 56389  
 56390  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 56391  	bp := tls.Alloc(108)
 56392  	defer tls.Free(108)
 56393  
 56394  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 56395  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 56396  	sendToServer(tls, bp)
 56397  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56398  }
 56399  
 56400  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 56401  	bp := tls.Alloc(108)
 56402  	defer tls.Free(108)
 56403  
 56404  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 56405  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 56406  	sendToServer(tls, bp)
 56407  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 56408  }
 56409  
 56410  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 56411  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+24) != 0 {
 56412  		return uintptr(0)
 56413  	}
 56414  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 56415  	for !(g4.FserverHalt != 0) {
 56416  		var pMsg uintptr
 56417  
 56418  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 56419  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 56420  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+48, uintptr(unsafe.Pointer(&g4)))
 56421  		}
 56422  		pMsg = g4.FpQueueTail
 56423  		if pMsg != 0 {
 56424  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 56425  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 56426  			} else {
 56427  				g4.FpQueueHead = uintptr(0)
 56428  			}
 56429  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 56430  		}
 56431  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 56432  		if pMsg == uintptr(0) {
 56433  			break
 56434  		}
 56435  
 56436  		libc.Xpthread_mutex_lock(tls, pMsg+36)
 56437  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 56438  		case MSG_Open:
 56439  			{
 56440  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+4)
 56441  				break
 56442  
 56443  			}
 56444  		case MSG_Prepare:
 56445  			{
 56446  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 56447  					pMsg+8, pMsg+24)
 56448  				break
 56449  
 56450  			}
 56451  		case MSG_Step:
 56452  			{
 56453  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56454  				break
 56455  
 56456  			}
 56457  		case MSG_Reset:
 56458  			{
 56459  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56460  				break
 56461  
 56462  			}
 56463  		case MSG_Finalize:
 56464  			{
 56465  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 56466  				break
 56467  
 56468  			}
 56469  		case MSG_Close:
 56470  			{
 56471  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 56472  				break
 56473  
 56474  			}
 56475  		}
 56476  
 56477  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 56478  		libc.Xpthread_mutex_unlock(tls, pMsg+36)
 56479  		libc.Xpthread_cond_signal(tls, pMsg+60)
 56480  	}
 56481  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+24)
 56482  	return uintptr(0)
 56483  }
 56484  
 56485  func sqlite3_server_start(tls *libc.TLS) {
 56486  	bp := tls.Alloc(4)
 56487  	defer tls.Free(4)
 56488  
 56489  	var rc int32
 56490  	g4.FserverHalt = 0
 56491  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56492  		f func(*libc.TLS, uintptr) uintptr
 56493  	}{sqlite3_server})), uintptr(0))
 56494  	if rc == 0 {
 56495  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56496  	}
 56497  }
 56498  
 56499  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 56500  	var p uintptr = sqlite3_server(tls, uintptr(0))
 56501  	*(*int32)(unsafe.Pointer(pnDecr))--
 56502  	return p
 56503  }
 56504  
 56505  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 56506  	bp := tls.Alloc(4)
 56507  	defer tls.Free(4)
 56508  
 56509  	var rc int32
 56510  	g4.FserverHalt = 0
 56511  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 56512  		f func(*libc.TLS, uintptr) uintptr
 56513  	}{serverWrapper})), pnDecr)
 56514  	if rc == 0 {
 56515  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 56516  	}
 56517  }
 56518  
 56519  func sqlite3_server_stop(tls *libc.TLS) {
 56520  	g4.FserverHalt = 1
 56521  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+48)
 56522  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+24)
 56523  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+24)
 56524  }
 56525  
 56526  type SuperlockBusy1 = struct {
 56527  	FxBusy    uintptr
 56528  	FpBusyArg uintptr
 56529  	FnBusy    int32
 56530  }
 56531  
 56532  type SuperlockBusy = SuperlockBusy1
 56533  
 56534  type Superlock1 = struct {
 56535  	Fdb   uintptr
 56536  	FbWal int32
 56537  }
 56538  
 56539  type Superlock = Superlock1
 56540  
 56541  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 56542  	var pBusy uintptr = pCtx
 56543  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 56544  		return 0
 56545  	}
 56546  	return (*struct {
 56547  		f func(*libc.TLS, uintptr, int32) int32
 56548  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 56549  }
 56550  
 56551  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 56552  	bp := tls.Alloc(4)
 56553  	defer tls.Free(4)
 56554  
 56555  	var rc int32
 56556  
 56557  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 56558  	if rc != SQLITE_OK {
 56559  		return rc
 56560  	}
 56561  
 56562  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 56563  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 56564  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 56565  		if zMode != 0 && libc.Xstrlen(tls, zMode) == size_t(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 56566  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 56567  		}
 56568  	}
 56569  
 56570  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 56571  }
 56572  
 56573  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 56574  	var rc int32
 56575  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 56576  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 56577  		rc = (*struct {
 56578  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56579  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 56580  	}
 56581  	return rc
 56582  }
 56583  
 56584  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 56585  	bp := tls.Alloc(8)
 56586  	defer tls.Free(8)
 56587  
 56588  	var rc int32
 56589  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56590  	*(*uintptr)(unsafe.Pointer(bp + 4)) = uintptr(0)
 56591  
 56592  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56593  	if rc != SQLITE_OK {
 56594  		return rc
 56595  	}
 56596  
 56597  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 56598  	if rc != SQLITE_OK {
 56599  		return rc
 56600  	}
 56601  
 56602  	rc = (*struct {
 56603  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 56604  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpMethods)).FxShmMap})).f(tls, *(*uintptr)(unsafe.Pointer(bp)), 0, 32*1024, 1, bp+4)
 56605  	if rc != SQLITE_OK {
 56606  		return rc
 56607  	}
 56608  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 4)), 0, uint32(32))
 56609  
 56610  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 56611  	return rc
 56612  }
 56613  
 56614  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 56615  	bp := tls.Alloc(4)
 56616  	defer tls.Free(4)
 56617  
 56618  	var p uintptr = pLock
 56619  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 56620  		var rc int32
 56621  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 56622  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 56623  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 56624  		if rc == SQLITE_OK {
 56625  			(*struct {
 56626  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56627  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpMethods)).FxShmLock})).f(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, flags)
 56628  			(*struct {
 56629  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 56630  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpMethods)).FxShmLock})).f(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, flags)
 56631  		}
 56632  	}
 56633  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 56634  	sqlite3.Xsqlite3_free(tls, p)
 56635  }
 56636  
 56637  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 56638  	bp := tls.Alloc(12)
 56639  	defer tls.Free(12)
 56640  
 56641  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 56642  	var rc int32
 56643  	var pLock uintptr
 56644  
 56645  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 56646  	if !(pLock != 0) {
 56647  		return SQLITE_NOMEM
 56648  	}
 56649  	libc.Xmemset(tls, pLock, 0, uint32(unsafe.Sizeof(Superlock{})))
 56650  
 56651  	rc = sqlite3.Xsqlite3_open_v2(tls,
 56652  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 56653  
 56654  	if rc == SQLITE_OK {
 56655  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 56656  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 56657  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 56658  			f func(*libc.TLS, uintptr, int32) int32
 56659  		}{superlockBusyHandler})), bp)
 56660  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 56661  	}
 56662  
 56663  	if rc == SQLITE_OK {
 56664  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 56665  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 56666  			if rc == SQLITE_OK {
 56667  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 56668  			}
 56669  		}
 56670  	}
 56671  
 56672  	if rc != SQLITE_OK {
 56673  		sqlite3demo_superunlock(tls, pLock)
 56674  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 56675  	} else {
 56676  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 56677  	}
 56678  
 56679  	return rc
 56680  }
 56681  
 56682  type InterpAndScript1 = struct {
 56683  	Finterp  uintptr
 56684  	FpScript uintptr
 56685  }
 56686  
 56687  type InterpAndScript = InterpAndScript1
 56688  
 56689  func superunlock_del(tls *libc.TLS, cd ClientData) {
 56690  	sqlite3demo_superunlock(tls, cd)
 56691  }
 56692  
 56693  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56694  	if objc != 1 {
 56695  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 56696  		return TCL_ERROR
 56697  	}
 56698  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 56699  	return TCL_OK
 56700  }
 56701  
 56702  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 56703  	bp := tls.Alloc(4)
 56704  	defer tls.Free(4)
 56705  
 56706  	var p uintptr = pCtx
 56707  	var pEval uintptr
 56708  	*(*int32)(unsafe.Pointer(bp)) = 0
 56709  
 56710  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 56711  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 56712  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 56713  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 56714  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 56715  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56716  		var _objPtr uintptr = pEval
 56717  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56718  			tcl.XTclFreeObj(tls, _objPtr)
 56719  		}
 56720  	}
 56721  
 56722  	return *(*int32)(unsafe.Pointer(bp))
 56723  }
 56724  
 56725  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56726  	bp := tls.Alloc(28)
 56727  	defer tls.Free(28)
 56728  
 56729  	var zPath uintptr
 56730  	var zVfs uintptr = uintptr(0)
 56731  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 56732  	var xBusy uintptr = uintptr(0)
 56733  	var rc int32
 56734  
 56735  	if objc < 3 || objc > 5 {
 56736  		tcl.XTcl_WrongNumArgs(tls,
 56737  			interp, 1, objv, ts+36970)
 56738  		return TCL_ERROR
 56739  	}
 56740  
 56741  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 56742  
 56743  	if objc > 3 {
 56744  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 56745  		if libc.Xstrlen(tls, zVfs) == size_t(0) {
 56746  			zVfs = uintptr(0)
 56747  		}
 56748  	}
 56749  	if objc > 4 {
 56750  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 56751  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*4))
 56752  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 56753  			f func(*libc.TLS, uintptr, int32) int32
 56754  		}{superlock_busy}))
 56755  	}
 56756  
 56757  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+24)
 56758  
 56759  	if rc != SQLITE_OK {
 56760  		tcl.XTcl_ResetResult(tls, interp)
 56761  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 56762  		return TCL_ERROR
 56763  	}
 56764  
 56765  	tcl.XTcl_CreateObjCommand(tls,
 56766  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), *(*uintptr)(unsafe.Pointer(&struct {
 56767  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56768  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 24)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 56769  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 56770  	return TCL_OK
 56771  }
 56772  
 56773  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 56774  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 56775  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56776  	}{superlock_cmd})), uintptr(0), uintptr(0))
 56777  	return TCL_OK
 56778  }
 56779  
 56780  type error_t = int32
 56781  
 56782  type TestSyscallGlobal = struct {
 56783  	FbPersist         int32
 56784  	FnCount           int32
 56785  	FnFail            int32
 56786  	Fpgsz             int32
 56787  	Forig_getpagesize sqlite3_syscall_ptr
 56788  }
 56789  
 56790  var gSyscall = TestSyscallGlobal{}
 56791  
 56792  type TestSyscallArray = struct {
 56793  	FzName         uintptr
 56794  	FxTest         sqlite3_syscall_ptr
 56795  	FxOrig         sqlite3_syscall_ptr
 56796  	Fdefault_errno int32
 56797  	Fcustom_errno  int32
 56798  }
 56799  
 56800  var aSyscall = [19]TestSyscallArray{
 56801  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 56802  	{FzName: ts + 9490, FxTest: 0},
 56803  	{FzName: ts + 37038, FxTest: 0},
 56804  	{FzName: ts + 37045, FxTest: 0},
 56805  	{FzName: ts + 37052, FxTest: 0},
 56806  	{FzName: ts + 37057, FxTest: 0},
 56807  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 56808  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 56809  	{FzName: ts + 25126, FxTest: 0},
 56810  	{FzName: ts + 37079, FxTest: 0},
 56811  	{FzName: ts + 37085, FxTest: 0},
 56812  	{FzName: ts + 25131, FxTest: 0},
 56813  	{FzName: ts + 37093, FxTest: 0},
 56814  	{FzName: ts + 37100, FxTest: 0},
 56815  	{FzName: ts + 37109, FxTest: 0},
 56816  	{FzName: ts + 37116, FxTest: 0},
 56817  	{FzName: ts + 29040, FxTest: 0},
 56818  	{FzName: ts + 37126, FxTest: 0},
 56819  	{},
 56820  }
 56821  
 56822  func tsIsFail(tls *libc.TLS) int32 {
 56823  	gSyscall.FnCount--
 56824  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 56825  		gSyscall.FnFail++
 56826  		return 1
 56827  	}
 56828  	return 0
 56829  }
 56830  
 56831  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56832  	var i int32
 56833  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 56834  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56835  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 56836  			continue
 56837  		}
 56838  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint32(nFunc)) != 0 {
 56839  			continue
 56840  		}
 56841  		return aSyscall[i].Fcustom_errno
 56842  	}
 56843  
 56844  	return 0
 56845  }
 56846  
 56847  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56848  	if tsIsFail(tls) != 0 {
 56849  		*(*int32)(unsafe.Pointer(libc.X__errno_location(tls))) = tsErrno(tls, zFunc)
 56850  		return 1
 56851  	}
 56852  	return 0
 56853  }
 56854  
 56855  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 56856  	if tsIsFailErrno(tls, ts+37033) != 0 {
 56857  		return -1
 56858  	}
 56859  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)))(tls, zFile, flags, mode)
 56860  }
 56861  
 56862  func ts_close(tls *libc.TLS, fd int32) int32 {
 56863  	if tsIsFail(tls) != 0 {
 56864  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*20 + 8)))(tls, fd)
 56865  		return -1
 56866  	}
 56867  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*20 + 8)))(tls, fd)
 56868  }
 56869  
 56870  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 56871  	if tsIsFail(tls) != 0 {
 56872  		return -1
 56873  	}
 56874  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*20 + 8)))(tls, zPath, mode)
 56875  }
 56876  
 56877  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 56878  	if tsIsFail(tls) != 0 {
 56879  		return uintptr(0)
 56880  	}
 56881  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*20 + 8)))(tls, zPath, nPath)
 56882  }
 56883  
 56884  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 56885  	if tsIsFail(tls) != 0 {
 56886  		return -1
 56887  	}
 56888  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*20 + 8)))(tls, zPath, p)
 56889  }
 56890  
 56891  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 56892  	if tsIsFailErrno(tls, ts+37057) != 0 {
 56893  		return -1
 56894  	}
 56895  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*20 + 8)))(tls, fd, p)
 56896  }
 56897  
 56898  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 56899  	if tsIsFailErrno(tls, ts+37063) != 0 {
 56900  		return -1
 56901  	}
 56902  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*20 + 8)))(tls, fd, n)
 56903  }
 56904  
 56905  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 56906  	bp := tls.Alloc(8)
 56907  	defer tls.Free(8)
 56908  
 56909  	var ap va_list
 56910  	_ = ap
 56911  	var pArg uintptr
 56912  	if tsIsFailErrno(tls, ts+37073) != 0 {
 56913  		return -1
 56914  	}
 56915  	ap = va
 56916  	pArg = libc.VaUintptr(&ap)
 56917  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*20 + 8)))(tls, fd, cmd, libc.VaList(bp, pArg))
 56918  }
 56919  
 56920  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56921  	if tsIsFailErrno(tls, ts+25126) != 0 {
 56922  		return -1
 56923  	}
 56924  	return (*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*20 + 8)))(tls, fd, aBuf, nBuf)
 56925  }
 56926  
 56927  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56928  	if tsIsFailErrno(tls, ts+37079) != 0 {
 56929  		return -1
 56930  	}
 56931  	return (*(*func(*libc.TLS, int32, uintptr, size_t, off_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 9*20 + 8)))(tls, fd, aBuf, nBuf, off)
 56932  }
 56933  
 56934  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56935  	if tsIsFailErrno(tls, ts+37085) != 0 {
 56936  		return -1
 56937  	}
 56938  	return (*(*func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 10*20 + 8)))(tls, fd, aBuf, nBuf, off)
 56939  }
 56940  
 56941  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56942  	if tsIsFailErrno(tls, ts+25131) != 0 {
 56943  		if tsErrno(tls, ts+25131) == EINTR {
 56944  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*20 + 8)))(tls, fd, aBuf, nBuf/size_t(2))
 56945  		}
 56946  		return -1
 56947  	}
 56948  	return (*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*20 + 8)))(tls, fd, aBuf, nBuf)
 56949  }
 56950  
 56951  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56952  	if tsIsFailErrno(tls, ts+37093) != 0 {
 56953  		return -1
 56954  	}
 56955  	return (*(*func(*libc.TLS, int32, uintptr, size_t, off_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 12*20 + 8)))(tls, fd, aBuf, nBuf, off)
 56956  }
 56957  
 56958  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56959  	if tsIsFailErrno(tls, ts+37100) != 0 {
 56960  		return -1
 56961  	}
 56962  	return (*(*func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 13*20 + 8)))(tls, fd, aBuf, nBuf, off)
 56963  }
 56964  
 56965  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 56966  	if tsIsFail(tls) != 0 {
 56967  		return -1
 56968  	}
 56969  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*20 + 8)))(tls, fd, mode)
 56970  }
 56971  
 56972  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 56973  	if tsIsFail(tls) != 0 {
 56974  		return tsErrno(tls, ts+37116)
 56975  	}
 56976  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*20 + 8)))(tls, fd, off, len)
 56977  }
 56978  
 56979  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 56980  	if tsIsFailErrno(tls, ts+29040) != 0 {
 56981  		return libc.UintptrFromInt32(-1)
 56982  	}
 56983  	return (*(*func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16*20 + 8)))(tls, pAddr, nByte, prot, flags, fd, iOff)
 56984  }
 56985  
 56986  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 56987  	bp := tls.Alloc(8)
 56988  	defer tls.Free(8)
 56989  
 56990  	var ap va_list
 56991  	_ = ap
 56992  	var pArg uintptr
 56993  	if tsIsFailErrno(tls, ts+37126) != 0 {
 56994  		return libc.UintptrFromInt32(-1)
 56995  	}
 56996  	ap = va
 56997  	pArg = libc.VaUintptr(&ap)
 56998  	return (*(*func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 17*20 + 8)))(tls, a, b, c, d, libc.VaList(bp, pArg))
 56999  }
 57000  
 57001  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57002  	bp := tls.Alloc(12)
 57003  	defer tls.Free(12)
 57004  
 57005  	var pVfs uintptr
 57006  
 57007  	var i int32
 57008  
 57009  	if objc != 3 {
 57010  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 57011  		return TCL_ERROR
 57012  	}
 57013  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp, bp+4) != 0 {
 57014  		return TCL_ERROR
 57015  	}
 57016  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57017  
 57018  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 57019  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57020  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 4)) + uintptr(i)*4)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+8)
 57021  		if rc != 0 {
 57022  			return rc
 57023  		}
 57024  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].FxOrig == uintptr(0) {
 57025  			aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].FxOrig = (*struct {
 57026  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57027  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].FzName)
 57028  			(*struct {
 57029  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57030  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].FzName, aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].FxTest)
 57031  		}
 57032  		aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 8))].Fdefault_errno
 57033  	}
 57034  
 57035  	return TCL_OK
 57036  }
 57037  
 57038  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57039  	var pVfs uintptr
 57040  	var i int32
 57041  
 57042  	if objc != 2 {
 57043  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57044  		return TCL_ERROR
 57045  	}
 57046  
 57047  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57048  	for i = 0; aSyscall[i].FzName != 0; i++ {
 57049  		if aSyscall[i].FxOrig != 0 {
 57050  			(*struct {
 57051  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57052  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 57053  			aSyscall[i].FxOrig = uintptr(0)
 57054  		}
 57055  	}
 57056  	return TCL_OK
 57057  }
 57058  
 57059  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57060  	bp := tls.Alloc(4)
 57061  	defer tls.Free(4)
 57062  
 57063  	var pVfs uintptr
 57064  	var i int32
 57065  	var rc int32
 57066  
 57067  	if objc != 2 && objc != 3 {
 57068  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57069  		return TCL_ERROR
 57070  	}
 57071  
 57072  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57073  	if objc == 2 {
 57074  		rc = (*struct {
 57075  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57076  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 57077  		for i = 0; aSyscall[i].FzName != 0; i++ {
 57078  			aSyscall[i].FxOrig = uintptr(0)
 57079  		}
 57080  	} else {
 57081  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp)
 57082  		rc = (*struct {
 57083  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57084  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), uintptr(0))
 57085  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 57086  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 57087  				continue
 57088  			}
 57089  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint32(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 57090  				continue
 57091  			}
 57092  			aSyscall[i].FxOrig = uintptr(0)
 57093  		}
 57094  	}
 57095  	if rc != SQLITE_OK {
 57096  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 57097  		return TCL_ERROR
 57098  	}
 57099  
 57100  	tcl.XTcl_ResetResult(tls, interp)
 57101  	return TCL_OK
 57102  }
 57103  
 57104  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57105  	var pVfs uintptr
 57106  	var x sqlite3_syscall_ptr
 57107  
 57108  	if objc != 3 {
 57109  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57110  		return TCL_ERROR
 57111  	}
 57112  
 57113  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57114  	x = (*struct {
 57115  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57116  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))))
 57117  
 57118  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 57119  	return TCL_OK
 57120  }
 57121  
 57122  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57123  	bp := tls.Alloc(8)
 57124  	defer tls.Free(8)
 57125  
 57126  	*(*int32)(unsafe.Pointer(bp)) = 0
 57127  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 57128  
 57129  	if objc != 2 && objc != 4 {
 57130  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 57131  		return TCL_ERROR
 57132  	}
 57133  
 57134  	if objc == 4 {
 57135  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp) != 0 ||
 57136  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4) != 0 {
 57137  			return TCL_ERROR
 57138  		}
 57139  	}
 57140  
 57141  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 57142  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 57143  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 57144  	gSyscall.FnFail = 0
 57145  	return TCL_OK
 57146  }
 57147  
 57148  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57149  	bp := tls.Alloc(104)
 57150  	defer tls.Free(104)
 57151  
 57152  	var rc int32
 57153  
 57154  	*(*[12]Errno)(unsafe.Pointer(bp + 4)) = [12]Errno{
 57155  		{Fz: ts + 37174, Fi: EACCES},
 57156  		{Fz: ts + 37181, Fi: EINTR},
 57157  		{Fz: ts + 37187, Fi: EIO},
 57158  		{Fz: ts + 37191, Fi: EOVERFLOW},
 57159  		{Fz: ts + 37201, Fi: ENOMEM},
 57160  		{Fz: ts + 37208, Fi: EAGAIN},
 57161  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 57162  		{Fz: ts + 37225, Fi: EBUSY},
 57163  		{Fz: ts + 37231, Fi: EPERM},
 57164  		{Fz: ts + 37237, Fi: EDEADLK},
 57165  		{Fz: ts + 37245, Fi: ENOLCK},
 57166  		{},
 57167  	}
 57168  
 57169  	if objc != 4 {
 57170  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 57171  		return TCL_ERROR
 57172  	}
 57173  
 57174  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57175  		*(*uintptr)(unsafe.Pointer(objv + 2*4)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 57176  	if rc != TCL_OK {
 57177  		return rc
 57178  	}
 57179  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57180  		*(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+100)
 57181  	if rc != TCL_OK {
 57182  		return rc
 57183  	}
 57184  
 57185  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 4 + uintptr(*(*int32)(unsafe.Pointer(bp + 100)))*8)).Fi
 57186  	return TCL_OK
 57187  }
 57188  
 57189  type Errno = struct {
 57190  	Fz uintptr
 57191  	Fi int32
 57192  }
 57193  
 57194  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57195  	var zSys uintptr
 57196  	var pVfs uintptr
 57197  	var pList uintptr
 57198  
 57199  	if objc != 2 {
 57200  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57201  		return TCL_ERROR
 57202  	}
 57203  
 57204  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57205  	pList = tcl.XTcl_NewObj(tls)
 57206  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57207  	for zSys = (*struct {
 57208  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57209  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 57210  		f func(*libc.TLS, uintptr, uintptr) uintptr
 57211  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 57212  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 57213  	}
 57214  
 57215  	tcl.XTcl_SetObjResult(tls, interp, pList)
 57216  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57217  		var _objPtr uintptr = pList
 57218  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57219  			tcl.XTclFreeObj(tls, _objPtr)
 57220  		}
 57221  	}
 57222  	return TCL_OK
 57223  }
 57224  
 57225  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57226  	var pVfs uintptr
 57227  
 57228  	if objc != 2 {
 57229  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 57230  		return TCL_ERROR
 57231  	}
 57232  
 57233  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57234  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 57235  	return TCL_OK
 57236  }
 57237  
 57238  func ts_getpagesize(tls *libc.TLS) int32 {
 57239  	return gSyscall.Fpgsz
 57240  }
 57241  
 57242  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57243  	bp := tls.Alloc(20)
 57244  	defer tls.Free(20)
 57245  
 57246  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57247  
 57248  	if objc != 3 {
 57249  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 57250  		return TCL_ERROR
 57251  	}
 57252  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16) != 0 {
 57253  		return TCL_ERROR
 57254  	}
 57255  
 57256  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 57257  		if gSyscall.Forig_getpagesize != 0 {
 57258  			(*struct {
 57259  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57260  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 57261  		}
 57262  	} else {
 57263  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 57264  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 57265  			return TCL_ERROR
 57266  		}
 57267  		gSyscall.Forig_getpagesize = (*struct {
 57268  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 57269  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 57270  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 57271  		(*struct {
 57272  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 57273  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 57274  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 57275  	}
 57276  
 57277  	return TCL_OK
 57278  }
 57279  
 57280  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57281  	bp := tls.Alloc(100)
 57282  	defer tls.Free(100)
 57283  
 57284  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 57285  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57286  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57287  		}{test_syscall_fault}))},
 57288  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57289  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57290  		}{test_syscall_install}))},
 57291  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57292  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57293  		}{test_syscall_uninstall}))},
 57294  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57295  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57296  		}{test_syscall_reset}))},
 57297  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57298  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57299  		}{test_syscall_errno}))},
 57300  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57301  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57302  		}{test_syscall_exists}))},
 57303  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57304  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57305  		}{test_syscall_list}))},
 57306  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57307  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57308  		}{test_syscall_defaultvfs}))},
 57309  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57310  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57311  		}{test_syscall_pagesize}))},
 57312  		{},
 57313  	}
 57314  
 57315  	var rc int32
 57316  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 57317  
 57318  	if objc < 2 {
 57319  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 57320  		return TCL_ERROR
 57321  	}
 57322  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 57323  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 57324  		rc = TCL_ERROR
 57325  	} else {
 57326  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 57327  			*(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+96)
 57328  	}
 57329  	if rc != TCL_OK {
 57330  		return rc
 57331  	}
 57332  	return (*struct {
 57333  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57334  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 96)))*8)).FxCmd})).f(tls, clientData, interp, objc, objv)
 57335  }
 57336  
 57337  type SyscallCmd = struct {
 57338  	FzName uintptr
 57339  	FxCmd  uintptr
 57340  }
 57341  
 57342  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 57343  	bp := tls.Alloc(8)
 57344  	defer tls.Free(8)
 57345  
 57346  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 57347  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 57348  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57349  		}{test_syscall}))},
 57350  	}
 57351  	var i int32
 57352  
 57353  	for i = 0; uint32(i) < uint32(unsafe.Sizeof([1]SyscallCmd{}))/uint32(unsafe.Sizeof(SyscallCmd{})); i++ {
 57354  		tcl.XTcl_CreateObjCommand(tls, interp, (*SyscallCmd)(unsafe.Pointer(bp+uintptr(i)*8)).FzName, (*SyscallCmd)(unsafe.Pointer(bp+uintptr(i)*8)).FxCmd, uintptr(0), uintptr(0))
 57355  	}
 57356  	return TCL_OK
 57357  }
 57358  
 57359  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 57360  	bp := tls.Alloc(48)
 57361  	defer tls.Free(48)
 57362  
 57363  	{
 57364  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 57365  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 57366  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 57367  
 57368  	}
 57369  
 57370  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 57371  		Sqlite3_Init(tls, interp)
 57372  	}
 57373  	Md5_Init(tls, interp)
 57374  	Sqliteconfig_Init(tls, interp)
 57375  	Sqlitetest1_Init(tls, interp)
 57376  	Sqlitetest2_Init(tls, interp)
 57377  	Sqlitetest3_Init(tls, interp)
 57378  	Sqlitetest4_Init(tls, interp)
 57379  	Sqlitetest5_Init(tls, interp)
 57380  	Sqlitetest6_Init(tls, interp)
 57381  	Sqlitetest7_Init(tls, interp)
 57382  	Sqlitetest8_Init(tls, interp)
 57383  	Sqlitetest9_Init(tls, interp)
 57384  	Sqlitetestasync_Init(tls, interp)
 57385  	Sqlitetest_autoext_Init(tls, interp)
 57386  	Sqlitetest_blob_Init(tls, interp)
 57387  	Sqlitetest_demovfs_Init(tls, interp)
 57388  	Sqlitetest_func_Init(tls, interp)
 57389  	Sqlitetest_hexio_Init(tls, interp)
 57390  	Sqlitetest_init_Init(tls, interp)
 57391  	Sqlitetest_malloc_Init(tls, interp)
 57392  	Sqlitetest_mutex_Init(tls, interp)
 57393  	Sqlitetestschema_Init(tls, interp)
 57394  	Sqlitetesttclvar_Init(tls, interp)
 57395  	Sqlitetestfs_Init(tls, interp)
 57396  	SqlitetestThread_Init(tls, interp)
 57397  	SqlitetestOnefile_Init(tls)
 57398  	SqlitetestOsinst_Init(tls, interp)
 57399  	Sqlitetestbackup_Init(tls, interp)
 57400  	Sqlitetestintarray_Init(tls, interp)
 57401  	Sqlitetestvfs_Init(tls, interp)
 57402  	Sqlitetestrtree_Init(tls, interp)
 57403  	Sqlitetestrtreedoc_Init(tls, interp)
 57404  	Sqlitequota_Init(tls, interp)
 57405  	Sqlitemultiplex_Init(tls, interp)
 57406  	SqliteSuperlock_Init(tls, interp)
 57407  	SqlitetestSyscall_Init(tls, interp)
 57408  	TestSession_Init(tls, interp)
 57409  	Fts5tcl_Init(tls, interp)
 57410  	SqliteRbu_Init(tls, interp)
 57411  	Sqlitetesttcl_Init(tls, interp)
 57412  
 57413  	TestExpert_Init(tls, interp)
 57414  	Sqlitetest_window_Init(tls, interp)
 57415  	Sqlitetestvdbecov_Init(tls, interp)
 57416  
 57417  	tcl.XTcl_CreateObjCommand(tls,
 57418  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 57419  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57420  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 57421  	return uintptr(0)
 57422  }
 57423  
 57424  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57425  	var slave uintptr
 57426  	if objc != 2 {
 57427  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 57428  		return TCL_ERROR
 57429  	}
 57430  
 57431  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 57432  	if !(slave != 0) {
 57433  		return TCL_ERROR
 57434  	}
 57435  
 57436  	sqlite3TestInit(tls, slave)
 57437  	return TCL_OK
 57438  }
 57439  
 57440  type tclvar_vtab1 = struct {
 57441  	Fbase   sqlite3_vtab
 57442  	Finterp uintptr
 57443  }
 57444  
 57445  type tclvar_vtab = tclvar_vtab1
 57446  type tclvar_cursor1 = struct {
 57447  	Fbase   sqlite3_vtab_cursor
 57448  	FpList1 uintptr
 57449  	FpList2 uintptr
 57450  	Fi1     int32
 57451  	Fi2     int32
 57452  }
 57453  
 57454  type tclvar_cursor = tclvar_cursor1
 57455  
 57456  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 57457  	var pVtab uintptr
 57458  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 57459  	if pVtab == uintptr(0) {
 57460  		return SQLITE_NOMEM
 57461  	}
 57462  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 57463  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 57464  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 57465  	return SQLITE_OK
 57466  }
 57467  
 57468  var zSchema = *(*[100]int8)(unsafe.Pointer(ts + 37439))
 57469  
 57470  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 57471  	sqlite3.Xsqlite3_free(tls, pVtab)
 57472  	return SQLITE_OK
 57473  }
 57474  
 57475  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 57476  	var pCur uintptr
 57477  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 57478  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 57479  	return SQLITE_OK
 57480  }
 57481  
 57482  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 57483  	var pCur uintptr = cur
 57484  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57485  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57486  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57487  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57488  				tcl.XTclFreeObj(tls, _objPtr)
 57489  			}
 57490  		}
 57491  	}
 57492  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57493  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57494  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57495  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57496  				tcl.XTclFreeObj(tls, _objPtr)
 57497  			}
 57498  		}
 57499  	}
 57500  	sqlite3.Xsqlite3_free(tls, pCur)
 57501  	return SQLITE_OK
 57502  }
 57503  
 57504  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 57505  	bp := tls.Alloc(4)
 57506  	defer tls.Free(4)
 57507  
 57508  	var p uintptr
 57509  
 57510  	if pObj != 0 {
 57511  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 57512  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 57513  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57514  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 57515  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57516  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57517  				var _objPtr uintptr = p
 57518  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57519  					tcl.XTclFreeObj(tls, _objPtr)
 57520  				}
 57521  			}
 57522  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 57523  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 57524  
 57525  		} else {
 57526  			*(*int32)(unsafe.Pointer(bp)) = 0
 57527  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 57528  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 57529  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 57530  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57531  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57532  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57533  						tcl.XTclFreeObj(tls, _objPtr)
 57534  					}
 57535  				}
 57536  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57537  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57538  				return 0
 57539  			}
 57540  		}
 57541  	}
 57542  
 57543  	return 1
 57544  }
 57545  
 57546  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 57547  	bp := tls.Alloc(8)
 57548  	defer tls.Free(8)
 57549  
 57550  	*(*int32)(unsafe.Pointer(bp)) = 0
 57551  	var ok int32 = 0
 57552  
 57553  	var pCur uintptr = cur
 57554  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57555  
 57556  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 57557  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 57558  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+4)
 57559  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 4)))
 57560  		if !(ok != 0) {
 57561  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 57562  		}
 57563  	}
 57564  
 57565  	return 0
 57566  }
 57567  
 57568  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 57569  	var pCur uintptr = pVtabCursor
 57570  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 57571  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 57572  
 57573  	var zEq uintptr = ts + 584
 57574  	var zMatch uintptr = ts + 584
 57575  	var zGlob uintptr = ts + 584
 57576  	var zRegexp uintptr = ts + 584
 57577  	var zLike uintptr = ts + 584
 57578  	var i int32
 57579  
 57580  	for i = 0; *(*int8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 57581  		switch int32(*(*int8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 57582  		case 'e':
 57583  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 57584  			break
 57585  		case 'm':
 57586  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 57587  			break
 57588  		case 'g':
 57589  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 57590  			break
 57591  		case 'r':
 57592  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 57593  			break
 57594  		case 'l':
 57595  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*4)))
 57596  			break
 57597  		default:
 57598  		}
 57599  	}
 57600  
 57601  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 57602  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 57603  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 57604  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 57605  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 57606  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 57607  
 57608  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 57609  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 57610  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57611  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 57612  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57613  				tcl.XTclFreeObj(tls, _objPtr)
 57614  			}
 57615  		}
 57616  	}
 57617  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57618  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57619  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 57620  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57621  				tcl.XTclFreeObj(tls, _objPtr)
 57622  			}
 57623  		}
 57624  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 57625  	}
 57626  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 57627  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 57628  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 57629  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 57630  
 57631  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57632  		var _objPtr uintptr = p
 57633  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57634  			tcl.XTclFreeObj(tls, _objPtr)
 57635  		}
 57636  	}
 57637  	return tclvarNext(tls, pVtabCursor)
 57638  }
 57639  
 57640  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 57641  	bp := tls.Alloc(24)
 57642  	defer tls.Free(24)
 57643  
 57644  	var z1 uintptr
 57645  	var z2 uintptr = ts + 584
 57646  	var pCur uintptr = cur
 57647  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 57648  
 57649  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 57650  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+20)
 57651  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 57652  	if *(*uintptr)(unsafe.Pointer(bp + 20)) != 0 {
 57653  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 20)))
 57654  	}
 57655  	switch i {
 57656  	case 0:
 57657  		{
 57658  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57659  			break
 57660  
 57661  		}
 57662  	case 1:
 57663  		{
 57664  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 57665  			break
 57666  
 57667  		}
 57668  	case 2:
 57669  		{
 57670  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 57671  				if *(*int8)(unsafe.Pointer(z2)) != 0 {
 57672  					return z2
 57673  				}
 57674  				return uintptr(0)
 57675  			}(), TCL_GLOBAL_ONLY)
 57676  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 57677  			break
 57678  
 57679  		}
 57680  	case 3:
 57681  		{
 57682  			var z3 uintptr
 57683  			if *(*uintptr)(unsafe.Pointer(bp + 20)) != 0 {
 57684  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 57685  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 57686  			} else {
 57687  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57688  			}
 57689  			break
 57690  
 57691  		}
 57692  	}
 57693  	return SQLITE_OK
 57694  }
 57695  
 57696  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 57697  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 57698  	return SQLITE_OK
 57699  }
 57700  
 57701  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 57702  	var pCur uintptr = cur
 57703  	return func() int32 {
 57704  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57705  			return 0
 57706  		}
 57707  		return 1
 57708  	}()
 57709  }
 57710  
 57711  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x int8) int32 {
 57712  	var i int32
 57713  	for i = 0; *(*int8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 57714  		if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 57715  			return 1
 57716  		}
 57717  	}
 57718  	*(*int8)(unsafe.Pointer(zStr + uintptr(i))) = x
 57719  	*(*int8)(unsafe.Pointer(zStr + uintptr(i+1))) = int8(0)
 57720  	return 0
 57721  }
 57722  
 57723  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 57724  	bp := tls.Alloc(4)
 57725  	defer tls.Free(4)
 57726  
 57727  	var rc int32
 57728  	*(*int32)(unsafe.Pointer(bp)) = 0
 57729  	var pRes uintptr
 57730  	rc = tcl.XTcl_Eval(tls, interp,
 57731  		ts+37576)
 57732  	if rc == TCL_OK {
 57733  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 57734  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 57735  	}
 57736  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 57737  }
 57738  
 57739  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 57740  	var pTab uintptr = tab
 57741  	var ii int32
 57742  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 57743  	var iStr int32 = 0
 57744  
 57745  	if zStr == uintptr(0) {
 57746  		return SQLITE_NOMEM
 57747  	}
 57748  	*(*int8)(unsafe.Pointer(zStr)) = int8(0)
 57749  
 57750  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 57751  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 57752  		var pUsage uintptr
 57753  
 57754  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 57755  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 57756  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57757  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('e')) {
 57758  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57759  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 57760  				}
 57761  			}
 57762  
 57763  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57764  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('m')) {
 57765  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57766  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 57767  				}
 57768  			}
 57769  
 57770  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57771  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('g')) {
 57772  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57773  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57774  				}
 57775  			}
 57776  
 57777  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57778  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('r')) {
 57779  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57780  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57781  				}
 57782  			}
 57783  
 57784  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57785  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('l')) {
 57786  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57787  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57788  				}
 57789  			}
 57790  		}
 57791  	}
 57792  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 57793  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 57794  
 57795  	return SQLITE_OK
 57796  }
 57797  
 57798  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 57799  	var pTab uintptr = tab
 57800  	if argc == 1 {
 57801  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57802  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 57803  		return SQLITE_OK
 57804  	}
 57805  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 57806  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)))
 57807  		var zName uintptr
 57808  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*4))) != SQLITE_TEXT {
 57809  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 57810  			return SQLITE_ERROR
 57811  		}
 57812  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*4)))
 57813  		if zValue != 0 {
 57814  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57815  		} else {
 57816  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 57817  		}
 57818  		return SQLITE_OK
 57819  	}
 57820  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 57821  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4))) == SQLITE_TEXT {
 57822  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57823  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)))
 57824  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*4)))
 57825  
 57826  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 57827  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 57828  		}
 57829  		if zValue != uintptr(0) {
 57830  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57831  		}
 57832  		return SQLITE_OK
 57833  	}
 57834  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 57835  	return SQLITE_ERROR
 57836  }
 57837  
 57838  var tclvarModule = sqlite3_module{
 57839  	FxCreate:     0,
 57840  	FxConnect:    0,
 57841  	FxBestIndex:  0,
 57842  	FxDisconnect: 0,
 57843  	FxDestroy:    0,
 57844  	FxOpen:       0,
 57845  	FxClose:      0,
 57846  	FxFilter:     0,
 57847  	FxNext:       0,
 57848  	FxEof:        0,
 57849  	FxColumn:     0,
 57850  	FxRowid:      0,
 57851  	FxUpdate:     0,
 57852  }
 57853  
 57854  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57855  	bp := tls.Alloc(4)
 57856  	defer tls.Free(4)
 57857  
 57858  	var rc int32 = TCL_OK
 57859  
 57860  	if objc != 2 {
 57861  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 57862  		return TCL_ERROR
 57863  	}
 57864  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 57865  		return TCL_ERROR
 57866  	}
 57867  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 57868  	rc = tcl.XTcl_Eval(tls, interp,
 57869  		ts+37703)
 57870  	return rc
 57871  }
 57872  
 57873  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 57874  	var i int32
 57875  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd13))/uint32(unsafe.Sizeof(struct {
 57876  		FzName      uintptr
 57877  		FxProc      uintptr
 57878  		FclientData uintptr
 57879  	}{})); i++ {
 57880  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 57881  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 57882  	}
 57883  	return TCL_OK
 57884  }
 57885  
 57886  var aObjCmd13 = [1]struct {
 57887  	FzName      uintptr
 57888  	FxProc      uintptr
 57889  	FclientData uintptr
 57890  }{
 57891  	{FzName: ts + 38239, FxProc: 0},
 57892  }
 57893  
 57894  type SqlThread1 = struct {
 57895  	Fparent   Tcl_ThreadId
 57896  	Finterp   uintptr
 57897  	FzScript  uintptr
 57898  	FzVarname uintptr
 57899  }
 57900  
 57901  type SqlThread = SqlThread1
 57902  
 57903  type EvalEvent1 = struct {
 57904  	Fbase    Tcl_Event
 57905  	FzScript uintptr
 57906  	Finterp  uintptr
 57907  }
 57908  
 57909  type EvalEvent = EvalEvent1
 57910  
 57911  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 57912  	var rc int32
 57913  	var p uintptr = evPtr
 57914  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 57915  	if rc != TCL_OK {
 57916  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 57917  	}
 57918  	_ = flags
 57919  	return 1
 57920  }
 57921  
 57922  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 57923  	bp := tls.Alloc(4)
 57924  	defer tls.Free(4)
 57925  
 57926  	var pEvent uintptr
 57927  	var zMsg uintptr
 57928  
 57929  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 57930  	pEvent = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(EvalEvent{}))+uint32(*(*int32)(unsafe.Pointer(bp)))+uint32(1))
 57931  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57932  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57933  		f func(*libc.TLS, uintptr, int32) int32
 57934  	}{tclScriptEvent}))
 57935  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*16
 57936  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint32(*(*int32)(unsafe.Pointer(bp))+1))
 57937  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57938  
 57939  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57940  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57941  }
 57942  
 57943  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 57944  	var interp uintptr
 57945  	var pRes uintptr
 57946  	var pList uintptr
 57947  	var rc int32
 57948  	var p uintptr = pSqlThread
 57949  
 57950  	interp = tcl.XTcl_CreateInterp(tls)
 57951  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57952  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57953  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57954  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57955  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57956  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 57957  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57958  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57959  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57960  	tcl.XTcl_CreateObjCommand(tls, interp,
 57961  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57962  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57963  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57964  	tcl.XTcl_CreateObjCommand(tls, interp,
 57965  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57966  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57967  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57968  	Sqlitetest1_Init(tls, interp)
 57969  	Sqlitetest_mutex_Init(tls, interp)
 57970  	Sqlite3_Init(tls, interp)
 57971  
 57972  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 57973  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 57974  	pList = tcl.XTcl_NewObj(tls)
 57975  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57976  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 57977  
 57978  	if rc != TCL_OK {
 57979  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 57980  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57981  		postToParent(tls, p, pList)
 57982  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57983  			var _objPtr uintptr = pList
 57984  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57985  				tcl.XTclFreeObj(tls, _objPtr)
 57986  			}
 57987  		}
 57988  		pList = tcl.XTcl_NewObj(tls)
 57989  	}
 57990  
 57991  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 57992  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 57993  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57994  	postToParent(tls, p, pList)
 57995  
 57996  	tcl.XTcl_Free(tls, p)
 57997  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57998  		var _objPtr uintptr = pList
 57999  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58000  			tcl.XTclFreeObj(tls, _objPtr)
 58001  		}
 58002  	}
 58003  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 58004  		var _objPtr uintptr = pRes
 58005  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58006  			tcl.XTclFreeObj(tls, _objPtr)
 58007  		}
 58008  	}
 58009  	tcl.XTcl_DeleteInterp(tls, interp)
 58010  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 58011  	}
 58012  	tcl.XTcl_ExitThread(tls, 0)
 58013  
 58014  }
 58015  
 58016  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58017  	bp := tls.Alloc(28)
 58018  	defer tls.Free(28)
 58019  
 58020  	var pNew uintptr
 58021  	var rc int32
 58022  
 58023  	var zVarname uintptr
 58024  
 58025  	var zScript uintptr
 58026  
 58027  	var nStack int32 = 0
 58028  	var flags int32 = 0000
 58029  
 58030  	_ = clientData
 58031  	_ = objc
 58032  
 58033  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16)
 58034  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+20)
 58035  
 58036  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqlThread{}))+uint32(*(*int32)(unsafe.Pointer(bp + 16)))+uint32(*(*int32)(unsafe.Pointer(bp + 20)))+uint32(2))
 58037  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*16
 58038  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 58039  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint32(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58040  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint32(*(*int32)(unsafe.Pointer(bp + 20))+1))
 58041  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 58042  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 58043  
 58044  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 58045  	if rc != TCL_OK {
 58046  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 58047  		tcl.XTcl_Free(tls, pNew)
 58048  		return TCL_ERROR
 58049  	}
 58050  
 58051  	return TCL_OK
 58052  }
 58053  
 58054  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58055  	bp := tls.Alloc(20)
 58056  	defer tls.Free(20)
 58057  
 58058  	var pEvent uintptr
 58059  	var zMsg uintptr
 58060  
 58061  	var p uintptr = clientData
 58062  
 58063  	_ = objc
 58064  
 58065  	if p == uintptr(0) {
 58066  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 58067  		return TCL_ERROR
 58068  	}
 58069  
 58070  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+16)
 58071  	pEvent = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(EvalEvent{}))+uint32(*(*int32)(unsafe.Pointer(bp + 16)))+uint32(1))
 58072  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 58073  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 58074  		f func(*libc.TLS, uintptr, int32) int32
 58075  	}{tclScriptEvent}))
 58076  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*16
 58077  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint32(*(*int32)(unsafe.Pointer(bp + 16))+1))
 58078  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 58079  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 58080  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 58081  
 58082  	return TCL_OK
 58083  }
 58084  
 58085  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 58086  	_ = pArg
 58087  	_ = nBusy
 58088  	sqlite3.Xsqlite3_sleep(tls, 50)
 58089  	return 1
 58090  }
 58091  
 58092  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58093  	bp := tls.Alloc(120)
 58094  	defer tls.Free(120)
 58095  
 58096  	var zFilename uintptr
 58097  
 58098  	_ = clientData
 58099  	_ = objc
 58100  
 58101  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 58102  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 58103  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 58104  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 58105  		f func(*libc.TLS, uintptr, int32) int32
 58106  	}{xBusy})), uintptr(0))
 58107  
 58108  	if sqlite3TestMakePointerStr(tls, interp, bp+20, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 58109  		return TCL_ERROR
 58110  	}
 58111  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, 0))
 58112  
 58113  	return TCL_OK
 58114  }
 58115  
 58116  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58117  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 58118  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 58119  	_ = clientData
 58120  	_ = objc
 58121  	_ = objv
 58122  	return TCL_OK
 58123  }
 58124  
 58125  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58126  	bp := tls.Alloc(84)
 58127  	defer tls.Free(84)
 58128  
 58129  	*(*[5]struct {
 58130  		FzName  uintptr
 58131  		FxProc  uintptr
 58132  		FnArg   int32
 58133  		FzUsage uintptr
 58134  	})(unsafe.Pointer(bp)) = [5]struct {
 58135  		FzName  uintptr
 58136  		FxProc  uintptr
 58137  		FnArg   int32
 58138  		FzUsage uintptr
 58139  	}{
 58140  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58141  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58142  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 58143  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58144  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58145  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 58146  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58147  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58148  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 58149  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 58150  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58151  		}{sqlthread_id})), FzUsage: ts + 584},
 58152  		{},
 58153  	}
 58154  	var pSub uintptr
 58155  	var rc int32
 58156  
 58157  	if objc < 2 {
 58158  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 58159  		return TCL_ERROR
 58160  	}
 58161  
 58162  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 58163  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp, int32(unsafe.Sizeof(struct {
 58164  			FzName  uintptr
 58165  			FxProc  uintptr
 58166  			FnArg   int32
 58167  			FzUsage uintptr
 58168  		}{})), ts+2014, 0, bp+80)
 58169  	if rc != TCL_OK {
 58170  		return rc
 58171  	}
 58172  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*16
 58173  
 58174  	if objc < (*struct {
 58175  		FzName  uintptr
 58176  		FxProc  uintptr
 58177  		FnArg   int32
 58178  		FzUsage uintptr
 58179  	})(unsafe.Pointer(pSub)).FnArg+2 {
 58180  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 58181  			FzName  uintptr
 58182  			FxProc  uintptr
 58183  			FnArg   int32
 58184  			FzUsage uintptr
 58185  		})(unsafe.Pointer(pSub)).FzUsage)
 58186  		return TCL_ERROR
 58187  	}
 58188  
 58189  	return (*struct {
 58190  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58191  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 58192  		FzName  uintptr
 58193  		FxProc  uintptr
 58194  		FnArg   int32
 58195  		FzUsage uintptr
 58196  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 58197  }
 58198  
 58199  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58200  	bp := tls.Alloc(8)
 58201  	defer tls.Free(8)
 58202  
 58203  	tcl.XTcl_GetTime(tls, bp)
 58204  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Tcl_Time)(unsafe.Pointer(bp)).Fsec))
 58205  	_ = clientData
 58206  	_ = objc
 58207  	_ = objv
 58208  	return TCL_OK
 58209  }
 58210  
 58211  type UnlockNotification1 = struct {
 58212  	Ffired int32
 58213  	Fcond  pthread_cond_t
 58214  	Fmutex pthread_mutex_t
 58215  }
 58216  
 58217  type UnlockNotification = UnlockNotification1
 58218  
 58219  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 58220  	var i int32
 58221  	for i = 0; i < nArg; i++ {
 58222  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*4))
 58223  		libc.Xpthread_mutex_lock(tls, p+52)
 58224  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 58225  		libc.Xpthread_cond_signal(tls, p+4)
 58226  		libc.Xpthread_mutex_unlock(tls, p+52)
 58227  	}
 58228  }
 58229  
 58230  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 58231  	bp := tls.Alloc(76)
 58232  	defer tls.Free(76)
 58233  
 58234  	var rc int32
 58235  
 58236  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 58237  	libc.Xpthread_mutex_init(tls, bp+52, uintptr(0))
 58238  	libc.Xpthread_cond_init(tls, bp+4, uintptr(0))
 58239  
 58240  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 58241  		f func(*libc.TLS, uintptr, int32)
 58242  	}{unlock_notify_cb})), bp)
 58243  
 58244  	if rc == SQLITE_OK {
 58245  		libc.Xpthread_mutex_lock(tls, bp+52)
 58246  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 58247  			libc.Xpthread_cond_wait(tls, bp+4, bp+52)
 58248  		}
 58249  		libc.Xpthread_mutex_unlock(tls, bp+52)
 58250  	}
 58251  
 58252  	libc.Xpthread_cond_destroy(tls, bp+4)
 58253  	libc.Xpthread_mutex_destroy(tls, bp+52)
 58254  
 58255  	return rc
 58256  }
 58257  
 58258  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 58259  	var rc int32
 58260  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 58261  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 58262  		if rc != SQLITE_OK {
 58263  			break
 58264  		}
 58265  		sqlite3.Xsqlite3_reset(tls, pStmt)
 58266  	}
 58267  	return rc
 58268  }
 58269  
 58270  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 58271  	var rc int32
 58272  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 58273  		rc = wait_for_unlock_notify(tls, db)
 58274  		if rc != SQLITE_OK {
 58275  			break
 58276  		}
 58277  	}
 58278  	return rc
 58279  }
 58280  
 58281  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58282  	var pStmt uintptr
 58283  	var rc int32
 58284  
 58285  	if objc != 2 {
 58286  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 58287  		return TCL_ERROR
 58288  	}
 58289  
 58290  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))))
 58291  	rc = sqlite3_blocking_step(tls, pStmt)
 58292  
 58293  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 58294  	return TCL_OK
 58295  }
 58296  
 58297  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 58298  	bp := tls.Alloc(146)
 58299  	defer tls.Free(146)
 58300  
 58301  	var zSql uintptr
 58302  
 58303  	*(*uintptr)(unsafe.Pointer(bp + 92)) = uintptr(0)
 58304  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 58305  
 58306  	var rc int32
 58307  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 58308  
 58309  	if objc != 5 && objc != 4 {
 58310  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 58311  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 58312  		return TCL_ERROR
 58313  	}
 58314  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+80) != 0 {
 58315  		return TCL_ERROR
 58316  	}
 58317  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 58318  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+84) != 0 {
 58319  		return TCL_ERROR
 58320  	}
 58321  
 58322  	if isBlocking != 0 {
 58323  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 84)), bp+88, bp+92)
 58324  	} else {
 58325  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 84)), bp+88, bp+92)
 58326  	}
 58327  
 58328  	if *(*uintptr)(unsafe.Pointer(bp + 92)) != 0 && objc >= 5 {
 58329  		if *(*int32)(unsafe.Pointer(bp + 84)) >= 0 {
 58330  			*(*int32)(unsafe.Pointer(bp + 84)) = *(*int32)(unsafe.Pointer(bp + 84)) - (int32(*(*uintptr)(unsafe.Pointer(bp + 92)))-int32(zSql))/1
 58331  		}
 58332  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 92)), *(*int32)(unsafe.Pointer(bp + 84))), 0)
 58333  	}
 58334  	if rc != SQLITE_OK {
 58335  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 58336  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 58337  		return TCL_ERROR
 58338  	}
 58339  
 58340  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 58341  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 58342  			return TCL_ERROR
 58343  		}
 58344  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 58345  	}
 58346  	return TCL_OK
 58347  }
 58348  
 58349  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 58350  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 58351  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58352  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 58353  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 58354  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 58355  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 58356  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 58357  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58358  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 58359  	tcl.XTcl_CreateObjCommand(tls, interp,
 58360  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 58361  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58362  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 58363  	tcl.XTcl_CreateObjCommand(tls, interp,
 58364  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 58365  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58366  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 58367  	return TCL_OK
 58368  }
 58369  
 58370  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 58371  	return TCL_OK
 58372  }
 58373  
 58374  type Testvfs1 = struct {
 58375  	FzName        uintptr
 58376  	FpParent      uintptr
 58377  	FpVfs         uintptr
 58378  	Finterp       uintptr
 58379  	FpScript      uintptr
 58380  	FpBuffer      uintptr
 58381  	FisNoshm      int32
 58382  	FisFullshm    int32
 58383  	Fmask         int32
 58384  	Fioerr_err    TestFaultInject
 58385  	Ffull_err     TestFaultInject
 58386  	Fcantopen_err TestFaultInject
 58387  	FiDevchar     int32
 58388  	FiSectorsize  int32
 58389  }
 58390  
 58391  type Testvfs = Testvfs1
 58392  type TestvfsBuffer1 = struct {
 58393  	FzFile uintptr
 58394  	Fpgsz  int32
 58395  	FaPage [1024]uintptr
 58396  	FpFile uintptr
 58397  	FpNext uintptr
 58398  }
 58399  
 58400  type TestvfsBuffer = TestvfsBuffer1
 58401  type TestvfsFile1 = struct {
 58402  	Fbase sqlite3_file
 58403  	FpFd  uintptr
 58404  }
 58405  
 58406  type TestvfsFile = TestvfsFile1
 58407  type TestvfsFd1 = struct {
 58408  	FpVfs       uintptr
 58409  	FzFilename  uintptr
 58410  	FpReal      uintptr
 58411  	FpShmId     uintptr
 58412  	FpShm       uintptr
 58413  	Fexcllock   u32
 58414  	Fsharedlock u32
 58415  	FpNext      uintptr
 58416  }
 58417  
 58418  type TestvfsFd = TestvfsFd1
 58419  
 58420  type TestFaultInject1 = struct {
 58421  	FiCnt   int32
 58422  	FeFault int32
 58423  	FnFail  int32
 58424  }
 58425  
 58426  type TestFaultInject = TestFaultInject1
 58427  
 58428  var tvfs_io_methods = sqlite3_io_methods{
 58429  	FiVersion:               3,
 58430  	FxClose:                 0,
 58431  	FxRead:                  0,
 58432  	FxWrite:                 0,
 58433  	FxTruncate:              0,
 58434  	FxSync:                  0,
 58435  	FxFileSize:              0,
 58436  	FxLock:                  0,
 58437  	FxUnlock:                0,
 58438  	FxCheckReservedLock:     0,
 58439  	FxFileControl:           0,
 58440  	FxSectorSize:            0,
 58441  	FxDeviceCharacteristics: 0,
 58442  	FxShmMap:                0,
 58443  	FxShmLock:               0,
 58444  	FxShmBarrier:            0,
 58445  	FxShmUnmap:              0,
 58446  	FxFetch:                 0,
 58447  	FxUnfetch:               0,
 58448  }
 58449  
 58450  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 58451  	bp := tls.Alloc(72)
 58452  	defer tls.Free(72)
 58453  
 58454  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 58455  		{FzCode: ts + 2127},
 58456  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 58457  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 58458  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 58459  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 58460  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 58461  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 58462  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 58463  		{FeCode: -1, FzCode: ts + 38554},
 58464  	}
 58465  	var z uintptr
 58466  	var i int32
 58467  
 58468  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58469  	for i = 0; i < int32(uint32(unsafe.Sizeof([9]errcode{}))/uint32(unsafe.Sizeof(errcode{}))); i++ {
 58470  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*8)).FzCode) {
 58471  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*8)).FeCode
 58472  			return 1
 58473  		}
 58474  	}
 58475  
 58476  	return 0
 58477  }
 58478  
 58479  type errcode = struct {
 58480  	FeCode int32
 58481  	FzCode uintptr
 58482  }
 58483  
 58484  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 58485  	var ret int32 = 0
 58486  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 58487  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 58488  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 58489  			ret = 1
 58490  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 58491  		}
 58492  	}
 58493  	return ret
 58494  }
 58495  
 58496  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 58497  	return tvfsInjectFault(tls, p+36)
 58498  }
 58499  
 58500  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 58501  	return tvfsInjectFault(tls, p+48)
 58502  }
 58503  
 58504  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 58505  	return tvfsInjectFault(tls, p+60)
 58506  }
 58507  
 58508  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 58509  	var rc int32
 58510  	var pEval uintptr
 58511  
 58512  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 58513  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 58514  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 58515  	if arg1 != 0 {
 58516  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 58517  	}
 58518  	if arg2 != 0 {
 58519  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 58520  	}
 58521  	if arg3 != 0 {
 58522  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 58523  	}
 58524  	if arg4 != 0 {
 58525  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 58526  	}
 58527  
 58528  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 58529  	if rc != TCL_OK {
 58530  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58531  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58532  	}
 58533  }
 58534  
 58535  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 58536  	var pTestfile uintptr = pFile
 58537  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 58538  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58539  
 58540  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 58541  		tvfsExecTcl(tls, p, ts+35556,
 58542  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58543  	}
 58544  
 58545  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 58546  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58547  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 58548  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58549  				tcl.XTclFreeObj(tls, _objPtr)
 58550  			}
 58551  		}
 58552  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58553  	}
 58554  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 58555  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 58556  	}
 58557  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58558  	tcl.XTcl_Free(tls, pFd)
 58559  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 58560  	return SQLITE_OK
 58561  }
 58562  
 58563  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58564  	bp := tls.Alloc(4)
 58565  	defer tls.Free(4)
 58566  
 58567  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58568  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58569  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58570  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 58571  		tvfsExecTcl(tls, p, ts+35563,
 58572  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58573  		tvfsResultCode(tls, p, bp)
 58574  	}
 58575  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58576  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58577  	}
 58578  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58579  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58580  	}
 58581  	return *(*int32)(unsafe.Pointer(bp))
 58582  }
 58583  
 58584  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 58585  	bp := tls.Alloc(4)
 58586  	defer tls.Free(4)
 58587  
 58588  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58589  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58590  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58591  
 58592  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 58593  		tvfsExecTcl(tls, p, ts+35569,
 58594  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58595  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 58596  		tvfsResultCode(tls, p, bp)
 58597  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 58598  			return SQLITE_OK
 58599  		}
 58600  	}
 58601  
 58602  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58603  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58604  	}
 58605  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58606  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58607  	}
 58608  
 58609  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58610  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 58611  	}
 58612  	return *(*int32)(unsafe.Pointer(bp))
 58613  }
 58614  
 58615  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 58616  	bp := tls.Alloc(4)
 58617  	defer tls.Free(4)
 58618  
 58619  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58620  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58621  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58622  
 58623  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 58624  		tvfsExecTcl(tls, p, ts+35576,
 58625  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58626  		tvfsResultCode(tls, p, bp)
 58627  	}
 58628  
 58629  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58630  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 58631  	}
 58632  	return *(*int32)(unsafe.Pointer(bp))
 58633  }
 58634  
 58635  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 58636  	bp := tls.Alloc(4)
 58637  	defer tls.Free(4)
 58638  
 58639  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58640  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58641  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58642  
 58643  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 58644  		var zFlags uintptr = uintptr(0)
 58645  
 58646  		switch flags {
 58647  		case SQLITE_SYNC_NORMAL:
 58648  			zFlags = ts + 16397
 58649  			break
 58650  			fallthrough
 58651  		case SQLITE_SYNC_FULL:
 58652  			zFlags = ts + 18291
 58653  			break
 58654  			fallthrough
 58655  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 58656  			zFlags = ts + 38566
 58657  			break
 58658  			fallthrough
 58659  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 58660  			zFlags = ts + 38582
 58661  			break
 58662  			fallthrough
 58663  		default:
 58664  		}
 58665  
 58666  		tvfsExecTcl(tls, p, ts+27843,
 58667  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58668  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 58669  		tvfsResultCode(tls, p, bp)
 58670  	}
 58671  
 58672  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58673  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58674  	}
 58675  
 58676  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58677  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 58678  	}
 58679  
 58680  	return *(*int32)(unsafe.Pointer(bp))
 58681  }
 58682  
 58683  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 58684  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58685  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 58686  }
 58687  
 58688  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58689  	bp := tls.Alloc(38)
 58690  	defer tls.Free(38)
 58691  
 58692  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58693  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58694  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 58695  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58696  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58697  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58698  	}
 58699  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58700  }
 58701  
 58702  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58703  	bp := tls.Alloc(38)
 58704  	defer tls.Free(38)
 58705  
 58706  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58707  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58708  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 58709  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58710  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58711  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58712  	}
 58713  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58714  		return SQLITE_IOERR | int32(8)<<8
 58715  	}
 58716  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58717  }
 58718  
 58719  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 58720  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58721  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58722  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 58723  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58724  			uintptr(0), uintptr(0), uintptr(0))
 58725  	}
 58726  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 58727  }
 58728  
 58729  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 58730  	bp := tls.Alloc(44)
 58731  	defer tls.Free(44)
 58732  
 58733  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58734  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58735  	if op == SQLITE_FCNTL_PRAGMA {
 58736  		var argv uintptr = pArg
 58737  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+9674) == 0 {
 58738  			var rc int32 = SQLITE_ERROR
 58739  			if *(*uintptr)(unsafe.Pointer(argv + 2*4)) != 0 {
 58740  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*4))
 58741  				var x int32 = libc.Xatoi(tls, z)
 58742  				if x != 0 {
 58743  					rc = x
 58744  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 58745  						z++
 58746  					}
 58747  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x01 != 0 {
 58748  						z++
 58749  					}
 58750  				}
 58751  				if *(*int8)(unsafe.Pointer(z)) != 0 {
 58752  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 58753  				}
 58754  			}
 58755  			return rc
 58756  		}
 58757  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*4)), ts+4794) == 0 {
 58758  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58759  			return SQLITE_OK
 58760  		}
 58761  	}
 58762  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 58763  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 58764  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 58765  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 58766  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 58767  		}
 58768  		var i int32
 58769  		for i = 0; uint32(i) < uint32(unsafe.Sizeof([3]Fcntl{}))/uint32(unsafe.Sizeof(Fcntl{})); i++ {
 58770  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*8)).FiFnctl {
 58771  				break
 58772  			}
 58773  		}
 58774  		if uint32(i) < uint32(unsafe.Sizeof([3]Fcntl{}))/uint32(unsafe.Sizeof(Fcntl{})) {
 58775  			*(*int32)(unsafe.Pointer(bp + 40)) = 0
 58776  			tvfsExecTcl(tls, p, ts+35624,
 58777  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58778  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*8)).FzFnctl, -1),
 58779  				uintptr(0), uintptr(0))
 58780  			tvfsResultCode(tls, p, bp+40)
 58781  			if *(*int32)(unsafe.Pointer(bp + 40)) != 0 {
 58782  				return func() int32 {
 58783  					if *(*int32)(unsafe.Pointer(bp + 40)) < 0 {
 58784  						return SQLITE_OK
 58785  					}
 58786  					return *(*int32)(unsafe.Pointer(bp + 40))
 58787  				}()
 58788  			}
 58789  		}
 58790  	}
 58791  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 58792  }
 58793  
 58794  type Fcntl = struct {
 58795  	FiFnctl int32
 58796  	FzFnctl uintptr
 58797  }
 58798  
 58799  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 58800  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58801  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58802  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 58803  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 58804  	}
 58805  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58806  }
 58807  
 58808  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 58809  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58810  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58811  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 58812  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 58813  	}
 58814  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58815  }
 58816  
 58817  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 58818  	bp := tls.Alloc(4)
 58819  	defer tls.Free(4)
 58820  
 58821  	var pTestfile uintptr = pFile
 58822  	var pFd uintptr
 58823  	var pId uintptr = uintptr(0)
 58824  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58825  
 58826  	pFd = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestvfsFd{}))+uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FszOsFile))
 58827  	libc.Xmemset(tls, pFd, 0, uint32(unsafe.Sizeof(TestvfsFd{}))+uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FszOsFile))
 58828  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58829  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58830  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 58831  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 58832  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*32
 58833  	libc.Xmemset(tls, pTestfile, 0, uint32(unsafe.Sizeof(TestvfsFile{})))
 58834  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 58835  
 58836  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58837  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 58838  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58839  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58840  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 58841  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+size_t(1))
 58842  			for *(*int8)(unsafe.Pointer(z)) != 0 {
 58843  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58844  				z += uintptr(libc.Xstrlen(tls, z) + size_t(1))
 58845  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58846  				z += uintptr(libc.Xstrlen(tls, z) + size_t(1))
 58847  			}
 58848  		}
 58849  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 58850  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58851  			var _objPtr uintptr = pArg
 58852  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58853  				tcl.XTclFreeObj(tls, _objPtr)
 58854  			}
 58855  		}
 58856  		if tvfsResultCode(tls, p, bp) != 0 {
 58857  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58858  				return *(*int32)(unsafe.Pointer(bp))
 58859  			}
 58860  		} else {
 58861  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58862  		}
 58863  	}
 58864  
 58865  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58866  		return SQLITE_IOERR
 58867  	}
 58868  	if tvfsInjectCantopenerr(tls, p) != 0 {
 58869  		return SQLITE_CANTOPEN
 58870  	}
 58871  	if tvfsInjectFullerr(tls, p) != 0 {
 58872  		return SQLITE_FULL
 58873  	}
 58874  
 58875  	if !(pId != 0) {
 58876  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 58877  	}
 58878  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 58879  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 58880  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58881  
 58882  	*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsOpen(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zName, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags, pOutFlags)
 58883  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 58884  		var pMethods uintptr
 58885  		var nByte int32
 58886  
 58887  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 58888  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 58889  		} else {
 58890  			nByte = int32(uintptr(0) + 52)
 58891  		}
 58892  
 58893  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 58894  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint32(nByte))
 58895  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 58896  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 58897  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 58898  		}
 58899  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 58900  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 58901  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 58902  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 58903  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 58904  		}
 58905  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 58906  	}
 58907  
 58908  	return *(*int32)(unsafe.Pointer(bp))
 58909  }
 58910  
 58911  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 58912  	bp := tls.Alloc(4)
 58913  	defer tls.Free(4)
 58914  
 58915  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58916  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58917  
 58918  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 58919  		tvfsExecTcl(tls, p, ts+35661,
 58920  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 58921  		tvfsResultCode(tls, p, bp)
 58922  	}
 58923  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58924  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 58925  	}
 58926  	return *(*int32)(unsafe.Pointer(bp))
 58927  }
 58928  
 58929  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 58930  	bp := tls.Alloc(4)
 58931  	defer tls.Free(4)
 58932  
 58933  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58934  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 58935  		var zArg uintptr = uintptr(0)
 58936  		if flags == SQLITE_ACCESS_EXISTS {
 58937  			zArg = ts + 38666
 58938  		}
 58939  		if flags == SQLITE_ACCESS_READWRITE {
 58940  			zArg = ts + 38687
 58941  		}
 58942  		if flags == SQLITE_ACCESS_READ {
 58943  			zArg = ts + 38711
 58944  		}
 58945  		tvfsExecTcl(tls, p, ts+35669,
 58946  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 58947  		if tvfsResultCode(tls, p, bp) != 0 {
 58948  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58949  				return *(*int32)(unsafe.Pointer(bp))
 58950  			}
 58951  		} else {
 58952  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 58953  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 58954  				return SQLITE_OK
 58955  			}
 58956  		}
 58957  	}
 58958  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 58959  }
 58960  
 58961  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 58962  	bp := tls.Alloc(4)
 58963  	defer tls.Free(4)
 58964  
 58965  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58966  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 58967  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 58968  		if tvfsResultCode(tls, p, bp) != 0 {
 58969  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58970  				return *(*int32)(unsafe.Pointer(bp))
 58971  			}
 58972  		}
 58973  	}
 58974  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 58975  }
 58976  
 58977  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 58978  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 58979  }
 58980  
 58981  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 58982  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 58983  }
 58984  
 58985  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 58986  	return (*struct {
 58987  		f func(*libc.TLS, uintptr, uintptr) int32
 58988  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FxCurrentTime})).f(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, pTimeOut)
 58989  }
 58990  
 58991  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 58992  	bp := tls.Alloc(4)
 58993  	defer tls.Free(4)
 58994  
 58995  	var p uintptr
 58996  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58997  	var pBuffer uintptr
 58998  	var pFd uintptr
 58999  
 59000  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59001  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59002  
 59003  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 59004  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 59005  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 59006  		if tvfsResultCode(tls, p, bp) != 0 {
 59007  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59008  				return *(*int32)(unsafe.Pointer(bp))
 59009  			}
 59010  		}
 59011  	}
 59012  
 59013  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59014  		return SQLITE_IOERR
 59015  	}
 59016  
 59017  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59018  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 59019  			break
 59020  		}
 59021  	}
 59022  	if !(pBuffer != 0) {
 59023  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 59024  		var nByte int32 = int32(uint32(unsafe.Sizeof(TestvfsBuffer{})) + uint32(szName) + uint32(1))
 59025  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 59026  		libc.Xmemset(tls, pBuffer, 0, uint32(nByte))
 59027  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*4112
 59028  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint32(szName+1))
 59029  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 59030  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 59031  	}
 59032  
 59033  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 59034  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 59035  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 59036  	return *(*int32)(unsafe.Pointer(bp))
 59037  }
 59038  
 59039  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 59040  	if *(*uintptr)(unsafe.Pointer(p + 8 + uintptr(iPage)*4)) == uintptr(0) {
 59041  		*(*uintptr)(unsafe.Pointer(p + 8 + uintptr(iPage)*4)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 59042  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 8 + uintptr(iPage)*4)), 0, uint32(pgsz))
 59043  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 59044  	}
 59045  }
 59046  
 59047  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 59048  	bp := tls.Alloc(4)
 59049  	defer tls.Free(4)
 59050  
 59051  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59052  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59053  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59054  
 59055  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59056  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59057  		return (*struct {
 59058  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59059  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 59060  	}
 59061  
 59062  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 59063  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 59064  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 59065  			return *(*int32)(unsafe.Pointer(bp))
 59066  		}
 59067  	}
 59068  
 59069  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 59070  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 59071  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 59072  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 59073  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 59074  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 59075  		tvfsExecTcl(tls, p, ts+35754,
 59076  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 59077  		tvfsResultCode(tls, p, bp)
 59078  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59079  			var _objPtr uintptr = pArg
 59080  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59081  				tcl.XTclFreeObj(tls, _objPtr)
 59082  			}
 59083  		}
 59084  	}
 59085  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59086  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 59087  	}
 59088  
 59089  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 8 + uintptr(iPage)*4))) != 0) {
 59090  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 59091  	}
 59092  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 59093  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 8 + uintptr(iPage)*4))
 59094  	}
 59095  
 59096  	return *(*int32)(unsafe.Pointer(bp))
 59097  }
 59098  
 59099  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 59100  	bp := tls.Alloc(100)
 59101  	defer tls.Free(100)
 59102  
 59103  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 59104  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59105  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59106  	var nLock int32
 59107  
 59108  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59109  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59110  		return (*struct {
 59111  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59112  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 59113  	}
 59114  
 59115  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 59116  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 59117  		nLock = int32(libc.Xstrlen(tls, bp+16))
 59118  		if flags&SQLITE_SHM_LOCK != 0 {
 59119  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 59120  		} else {
 59121  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 59122  		}
 59123  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 59124  		if flags&SQLITE_SHM_SHARED != 0 {
 59125  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 59126  		} else {
 59127  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 59128  		}
 59129  		tvfsExecTcl(tls, p, ts+35733,
 59130  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 59131  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 59132  		tvfsResultCode(tls, p, bp+96)
 59133  	}
 59134  
 59135  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 59136  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 59137  	}
 59138  
 59139  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59140  		var isLock int32 = flags & SQLITE_SHM_LOCK
 59141  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 59142  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 59143  		if isLock != 0 {
 59144  			var p2 uintptr
 59145  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 59146  				if p2 == pFd {
 59147  					continue
 59148  				}
 59149  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 59150  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 59151  					break
 59152  				}
 59153  			}
 59154  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 59155  				if isExcl != 0 {
 59156  					*(*u32)(unsafe.Pointer(pFd + 20)) |= mask
 59157  				}
 59158  				if !(isExcl != 0) {
 59159  					*(*u32)(unsafe.Pointer(pFd + 24)) |= mask
 59160  				}
 59161  			}
 59162  		} else {
 59163  			if isExcl != 0 {
 59164  				*(*u32)(unsafe.Pointer(pFd + 20)) &= ^mask
 59165  			}
 59166  			if !(isExcl != 0) {
 59167  				*(*u32)(unsafe.Pointer(pFd + 24)) &= ^mask
 59168  			}
 59169  		}
 59170  	}
 59171  
 59172  	return *(*int32)(unsafe.Pointer(bp + 96))
 59173  }
 59174  
 59175  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 59176  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59177  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59178  
 59179  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 59180  		var z uintptr
 59181  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 59182  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 59183  		} else {
 59184  			z = ts + 584
 59185  		}
 59186  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59187  	}
 59188  
 59189  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59190  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59191  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmBarrier})).f(tls, pReal)
 59192  		return
 59193  	}
 59194  }
 59195  
 59196  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 59197  	bp := tls.Alloc(4)
 59198  	defer tls.Free(4)
 59199  
 59200  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 59201  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59202  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 59203  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 59204  	var ppFd uintptr
 59205  
 59206  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 59207  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 59208  		return (*struct {
 59209  			f func(*libc.TLS, uintptr, int32) int32
 59210  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 59211  	}
 59212  
 59213  	if !(pBuffer != 0) {
 59214  		return SQLITE_OK
 59215  	}
 59216  
 59217  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 59218  		tvfsExecTcl(tls, p, ts+35723,
 59219  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 59220  		tvfsResultCode(tls, p, bp)
 59221  	}
 59222  
 59223  	for ppFd = pBuffer + 4104; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 28 {
 59224  	}
 59225  
 59226  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 59227  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 59228  
 59229  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 59230  		var i int32
 59231  		var pp uintptr
 59232  		for pp = p + 20; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 4108 {
 59233  		}
 59234  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 59235  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 8 + uintptr(i)*4)) != 0; i++ {
 59236  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 8 + uintptr(i)*4)))
 59237  		}
 59238  		tcl.XTcl_Free(tls, pBuffer)
 59239  	}
 59240  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 59241  
 59242  	return *(*int32)(unsafe.Pointer(bp))
 59243  }
 59244  
 59245  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 59246  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59247  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 59248  }
 59249  
 59250  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 59251  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 59252  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 59253  }
 59254  
 59255  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59256  	bp := tls.Alloc(348)
 59257  	defer tls.Free(348)
 59258  
 59259  	var p uintptr = cd
 59260  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 59261  		{FzName: ts + 38772},
 59262  		{FzName: ts + 10138, FeCmd: uint32(1)},
 59263  		{FzName: ts + 38776, FeCmd: uint32(2)},
 59264  		{FzName: ts + 38783, FeCmd: uint32(3)},
 59265  		{FzName: ts + 38789, FeCmd: uint32(7)},
 59266  		{FzName: ts + 38797, FeCmd: uint32(8)},
 59267  		{FzName: ts + 38809, FeCmd: uint32(4)},
 59268  		{FzName: ts + 38816, FeCmd: uint32(5)},
 59269  		{FzName: ts + 38824, FeCmd: uint32(6)},
 59270  		{},
 59271  	}
 59272  
 59273  	if objc < 2 {
 59274  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 59275  		return TCL_ERROR
 59276  	}
 59277  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 59278  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*4)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+176) != 0 {
 59279  		return TCL_ERROR
 59280  	}
 59281  	tcl.XTcl_ResetResult(tls, interp)
 59282  
 59283  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*8)).FeCmd {
 59284  	case uint32(0):
 59285  		{
 59286  			var pObj uintptr
 59287  			var rc int32
 59288  			var pBuffer uintptr
 59289  			var zName uintptr
 59290  			if objc != 3 && objc != 4 {
 59291  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 59292  				return TCL_ERROR
 59293  			}
 59294  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 59295  			rc = (*struct {
 59296  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59297  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 59298  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))),
 59299  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 59300  			if rc != SQLITE_OK {
 59301  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 59302  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 0))
 59303  				tcl.XTcl_Free(tls, zName)
 59304  				return TCL_ERROR
 59305  			}
 59306  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 59307  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 59308  					break
 59309  				}
 59310  			}
 59311  			tcl.XTcl_Free(tls, zName)
 59312  			if !(pBuffer != 0) {
 59313  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 0))
 59314  				return TCL_ERROR
 59315  			}
 59316  			if objc == 4 {
 59317  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+180)
 59318  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59319  				if pgsz == 0 {
 59320  					pgsz = 65536
 59321  				}
 59322  				for *(*int32)(unsafe.Pointer(bp + 176)) = 0; *(*int32)(unsafe.Pointer(bp + 176))*pgsz < *(*int32)(unsafe.Pointer(bp + 180)); *(*int32)(unsafe.Pointer(bp + 176))++ {
 59323  					var nByte int32 = pgsz
 59324  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 176)), pgsz)
 59325  					if *(*int32)(unsafe.Pointer(bp + 180))-*(*int32)(unsafe.Pointer(bp + 176))*pgsz < pgsz {
 59326  						nByte = *(*int32)(unsafe.Pointer(bp + 180))
 59327  					}
 59328  					libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*4)), a+uintptr(*(*int32)(unsafe.Pointer(bp + 176))*pgsz), uint32(nByte))
 59329  				}
 59330  			}
 59331  
 59332  			pObj = tcl.XTcl_NewObj(tls)
 59333  			for *(*int32)(unsafe.Pointer(bp + 176)) = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*4)) != 0; *(*int32)(unsafe.Pointer(bp + 176))++ {
 59334  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 59335  				if pgsz == 0 {
 59336  					pgsz = 65536
 59337  				}
 59338  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*4)), pgsz))
 59339  			}
 59340  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 59341  			break
 59342  
 59343  		}
 59344  
 59345  	case uint32(2):
 59346  		{
 59347  			*(*uintptr)(unsafe.Pointer(bp + 188)) = uintptr(0)
 59348  			*(*int32)(unsafe.Pointer(bp + 184)) = 0
 59349  			var mask int32 = 0
 59350  			if objc != 3 {
 59351  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 59352  				return TCL_ERROR
 59353  			}
 59354  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+184, bp+188) != 0 {
 59355  				return TCL_ERROR
 59356  			}
 59357  			tcl.XTcl_ResetResult(tls, interp)
 59358  			for *(*int32)(unsafe.Pointer(bp + 176)) = 0; *(*int32)(unsafe.Pointer(bp + 176)) < *(*int32)(unsafe.Pointer(bp + 184)); *(*int32)(unsafe.Pointer(bp + 176))++ {
 59359  				var iMethod int32
 59360  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 188)) + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*4)))
 59361  				for iMethod = 0; iMethod < int32(uint32(unsafe.Sizeof(vfsmethod))/uint32(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 59362  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 59363  						mask = mask | vfsmethod[iMethod].Fmask
 59364  						break
 59365  					}
 59366  				}
 59367  				if iMethod == int32(uint32(unsafe.Sizeof(vfsmethod))/uint32(unsafe.Sizeof(VfsMethod{}))) {
 59368  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 59369  					return TCL_ERROR
 59370  				}
 59371  			}
 59372  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 59373  			break
 59374  
 59375  		}
 59376  
 59377  	case uint32(4):
 59378  		{
 59379  			if objc == 3 {
 59380  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59381  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59382  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59383  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59384  							tcl.XTclFreeObj(tls, _objPtr)
 59385  						}
 59386  					}
 59387  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 59388  				}
 59389  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+192)
 59390  				if *(*int32)(unsafe.Pointer(bp + 192)) > 0 {
 59391  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 59392  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 59393  				}
 59394  			} else if objc != 2 {
 59395  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 59396  				return TCL_ERROR
 59397  			}
 59398  
 59399  			tcl.XTcl_ResetResult(tls, interp)
 59400  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59401  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 59402  			}
 59403  
 59404  			break
 59405  
 59406  		}
 59407  
 59408  	case uint32(8):
 59409  		fallthrough
 59410  	case uint32(3):
 59411  		fallthrough
 59412  	case uint32(7):
 59413  		{
 59414  			var pTest uintptr = uintptr(0)
 59415  			var iRet int32
 59416  
 59417  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*8)).FeCmd {
 59418  			case uint32(3):
 59419  				pTest = p + 36
 59420  				break
 59421  			case uint32(7):
 59422  				pTest = p + 48
 59423  				break
 59424  			case uint32(8):
 59425  				pTest = p + 60
 59426  				break
 59427  			default:
 59428  			}
 59429  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 59430  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 59431  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 59432  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 59433  
 59434  			if objc == 4 {
 59435  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+196) ||
 59436  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+200) {
 59437  					return TCL_ERROR
 59438  				}
 59439  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 59440  					if *(*int32)(unsafe.Pointer(bp + 200)) != 0 {
 59441  						return FAULT_INJECT_PERSISTENT
 59442  					}
 59443  					return FAULT_INJECT_TRANSIENT
 59444  				}()
 59445  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 196))
 59446  			} else if objc != 2 {
 59447  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 59448  				return TCL_ERROR
 59449  			}
 59450  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 59451  			break
 59452  
 59453  		}
 59454  
 59455  	case uint32(1):
 59456  		{
 59457  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 59458  			break
 59459  
 59460  		}
 59461  
 59462  	case uint32(5):
 59463  		{
 59464  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 212)) = [16]DeviceFlag{
 59465  				{FzName: ts + 38931, FiValue: -1},
 59466  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 59467  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 59468  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 59469  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 59470  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 59471  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 59472  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 59473  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 59474  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 59475  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 59476  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 59477  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 59478  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 59479  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 59480  				{},
 59481  			}
 59482  			var pRet uintptr
 59483  			var iFlag int32
 59484  
 59485  			if objc > 3 {
 59486  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 59487  				return TCL_ERROR
 59488  			}
 59489  			if objc == 3 {
 59490  				var j int32
 59491  				var iNew int32 = 0
 59492  				*(*uintptr)(unsafe.Pointer(bp + 208)) = uintptr(0)
 59493  				*(*int32)(unsafe.Pointer(bp + 204)) = 0
 59494  
 59495  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+204, bp+208) != 0 {
 59496  					return TCL_ERROR
 59497  				}
 59498  
 59499  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 204)); j++ {
 59500  					*(*int32)(unsafe.Pointer(bp + 340)) = 0
 59501  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 208)) + uintptr(j)*4)), bp+212,
 59502  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+340) != 0 {
 59503  						return TCL_ERROR
 59504  					}
 59505  					if (*DeviceFlag)(unsafe.Pointer(bp+212+uintptr(*(*int32)(unsafe.Pointer(bp + 340)))*8)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 204)) > 1 {
 59506  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4))), 0))
 59507  						return TCL_ERROR
 59508  					}
 59509  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+212+uintptr(*(*int32)(unsafe.Pointer(bp + 340)))*8)).FiValue
 59510  				}
 59511  
 59512  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 59513  			}
 59514  
 59515  			pRet = tcl.XTcl_NewObj(tls)
 59516  			for iFlag = 0; uint32(iFlag) < uint32(unsafe.Sizeof([16]DeviceFlag{}))/uint32(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 59517  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+212+uintptr(iFlag)*8)).FiValue != 0 {
 59518  					tcl.XTcl_ListObjAppendElement(tls,
 59519  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+212+uintptr(iFlag)*8)).FzName, -1))
 59520  				}
 59521  			}
 59522  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 59523  
 59524  			break
 59525  
 59526  		}
 59527  
 59528  	case uint32(6):
 59529  		{
 59530  			if objc > 3 {
 59531  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 59532  				return TCL_ERROR
 59533  			}
 59534  			if objc == 3 {
 59535  				*(*int32)(unsafe.Pointer(bp + 344)) = 0
 59536  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*4)), bp+344) != 0 {
 59537  					return TCL_ERROR
 59538  				}
 59539  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 344))
 59540  			}
 59541  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 59542  			break
 59543  
 59544  		}
 59545  	}
 59546  
 59547  	return TCL_OK
 59548  }
 59549  
 59550  type TestvfsSubcmd = struct {
 59551  	FzName uintptr
 59552  	FeCmd  uint32
 59553  }
 59554  
 59555  type VfsMethod = struct {
 59556  	FzName uintptr
 59557  	Fmask  int32
 59558  }
 59559  
 59560  var vfsmethod = [18]VfsMethod{
 59561  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 59562  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 59563  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 59564  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 59565  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 59566  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 59567  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 59568  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 59569  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 59570  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 59571  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 59572  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 59573  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 59574  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 59575  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 59576  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 59577  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 59578  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 59579  }
 59580  
 59581  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 59582  	var p uintptr = cd
 59583  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 59584  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59585  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 59586  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59587  				tcl.XTclFreeObj(tls, _objPtr)
 59588  			}
 59589  		}
 59590  	}
 59591  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59592  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59593  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 59594  	libc.Xmemset(tls, p, 0, uint32(unsafe.Sizeof(Testvfs{})))
 59595  	tcl.XTcl_Free(tls, p)
 59596  }
 59597  
 59598  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 59599  	bp := tls.Alloc(28)
 59600  	defer tls.Free(28)
 59601  
 59602  	var p uintptr
 59603  	var pVfs uintptr
 59604  	var zVfs uintptr
 59605  	var nByte int32
 59606  
 59607  	var i int32
 59608  
 59609  	var zSwitch uintptr
 59610  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59611  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59612  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 59613  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 59614  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 59615  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 59616  
 59617  	if !(objc < 2 || 0 != objc%2) {
 59618  		goto __1
 59619  	}
 59620  	goto bad_args
 59621  __1:
 59622  	;
 59623  	i = 2
 59624  __2:
 59625  	if !(i < objc) {
 59626  		goto __4
 59627  	}
 59628  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*4)), bp)
 59629  
 59630  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59631  		goto __5
 59632  	}
 59633  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+4) != 0) {
 59634  		goto __7
 59635  	}
 59636  	return TCL_ERROR
 59637  __7:
 59638  	;
 59639  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 59640  		goto __8
 59641  	}
 59642  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59643  __8:
 59644  	;
 59645  	goto __6
 59646  __5:
 59647  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59648  		goto __9
 59649  	}
 59650  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+8) != 0) {
 59651  		goto __11
 59652  	}
 59653  	return TCL_ERROR
 59654  __11:
 59655  	;
 59656  	goto __10
 59657  __9:
 59658  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59659  		goto __12
 59660  	}
 59661  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+12) != 0) {
 59662  		goto __14
 59663  	}
 59664  	return TCL_ERROR
 59665  __14:
 59666  	;
 59667  	goto __13
 59668  __12:
 59669  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59670  		goto __15
 59671  	}
 59672  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+16) != 0) {
 59673  		goto __17
 59674  	}
 59675  	return TCL_ERROR
 59676  __17:
 59677  	;
 59678  	goto __16
 59679  __15:
 59680  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59681  		goto __18
 59682  	}
 59683  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+20) != 0) {
 59684  		goto __20
 59685  	}
 59686  	return TCL_ERROR
 59687  __20:
 59688  	;
 59689  	goto __19
 59690  __18:
 59691  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint32(*(*int32)(unsafe.Pointer(bp))))) {
 59692  		goto __21
 59693  	}
 59694  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*4)), bp+24) != 0) {
 59695  		goto __23
 59696  	}
 59697  	return TCL_ERROR
 59698  __23:
 59699  	;
 59700  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 59701  		goto __24
 59702  	}
 59703  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59704  __24:
 59705  	;
 59706  	goto __22
 59707  __21:
 59708  	goto bad_args
 59709  __22:
 59710  	;
 59711  __19:
 59712  	;
 59713  __16:
 59714  	;
 59715  __13:
 59716  	;
 59717  __10:
 59718  	;
 59719  __6:
 59720  	;
 59721  	goto __3
 59722  __3:
 59723  	i = i + 2
 59724  	goto __2
 59725  	goto __4
 59726  __4:
 59727  	;
 59728  	if !(uint32(*(*int32)(unsafe.Pointer(bp + 12))) < uint32(unsafe.Sizeof(TestvfsFile{}))) {
 59729  		goto __25
 59730  	}
 59731  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 59732  __25:
 59733  	;
 59734  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4)))
 59735  	nByte = int32(uint32(unsafe.Sizeof(Testvfs{})) + uint32(int32(libc.Xstrlen(tls, zVfs))) + uint32(1))
 59736  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 59737  	libc.Xmemset(tls, p, 0, uint32(nByte))
 59738  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 59739  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 59740  
 59741  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 59742  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59743  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 59744  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59745  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 59746  
 59747  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*80
 59748  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+size_t(1))
 59749  
 59750  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59751  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59752  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 59753  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 59754  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 59755  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 59756  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 59757  		goto __26
 59758  	}
 59759  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 59760  __26:
 59761  	;
 59762  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 59763  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 59764  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 59765  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 59766  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 59767  
 59768  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 59769  
 59770  	return TCL_OK
 59771  
 59772  bad_args:
 59773  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 59774  	return TCL_ERROR
 59775  }
 59776  
 59777  var tvfs_vfs = sqlite3_vfs{
 59778  	FiVersion:      3,
 59779  	FxOpen:         0,
 59780  	FxDelete:       0,
 59781  	FxAccess:       0,
 59782  	FxFullPathname: 0,
 59783  	FxRandomness:   0,
 59784  	FxSleep:        0,
 59785  	FxCurrentTime:  0,
 59786  }
 59787  
 59788  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59789  	bp := tls.Alloc(48)
 59790  	defer tls.Free(48)
 59791  
 59792  	*(*[3]uintptr)(unsafe.Pointer(bp + 4)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 59793  	*(*[3]uintptr)(unsafe.Pointer(bp + 20)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 59794  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59795  	var rc int32 = SQLITE_OK
 59796  	var zDbname uintptr = uintptr(0)
 59797  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 59798  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 59799  	*(*int32)(unsafe.Pointer(bp + 36)) = 0
 59800  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 59801  
 59802  	if objc != 7 {
 59803  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 59804  			ts+39174)
 59805  		return TCL_ERROR
 59806  	}
 59807  
 59808  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 59809  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 ||
 59810  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+4, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+16) != 0 ||
 59811  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+20, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 59812  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*4)), bp+36) != 0 ||
 59813  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*4)), bp+40) != 0 {
 59814  		return TCL_ERROR
 59815  	}
 59816  
 59817  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+44)
 59818  	if *(*uintptr)(unsafe.Pointer(bp + 44)) == uintptr(0) {
 59819  		return TCL_ERROR
 59820  	}
 59821  	rc = (*struct {
 59822  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59823  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 44)))).FpMethods)).FxShmLock})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 44)), *(*int32)(unsafe.Pointer(bp + 36)), *(*int32)(unsafe.Pointer(bp + 40)),
 59824  		func() int32 {
 59825  			if *(*int32)(unsafe.Pointer(bp + 16)) == 0 {
 59826  				return SQLITE_SHM_SHARED
 59827  			}
 59828  			return SQLITE_SHM_EXCLUSIVE
 59829  		}()|
 59830  			func() int32 {
 59831  				if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 59832  					return SQLITE_SHM_LOCK
 59833  				}
 59834  				return SQLITE_SHM_UNLOCK
 59835  			}())
 59836  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59837  	return TCL_OK
 59838  }
 59839  
 59840  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59841  	bp := tls.Alloc(36)
 59842  	defer tls.Free(36)
 59843  
 59844  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 59845  	var rc int32 = SQLITE_OK
 59846  	var zDbname uintptr = uintptr(0)
 59847  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 59848  	*(*int32)(unsafe.Pointer(bp + 24)) = -1
 59849  
 59850  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 59851  	var aShm uintptr
 59852  	var iOff int32
 59853  
 59854  	if objc != 4 && objc != 5 {
 59855  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 59856  		return TCL_ERROR
 59857  	}
 59858  
 59859  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 59860  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp+16) != 0 ||
 59861  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*4)), bp+20) != 0 ||
 59862  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*4)), bp+24) != 0 {
 59863  		return TCL_ERROR
 59864  	}
 59865  
 59866  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+28)
 59867  	if *(*uintptr)(unsafe.Pointer(bp + 28)) == uintptr(0) {
 59868  		return TCL_ERROR
 59869  	}
 59870  	rc = (*struct {
 59871  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59872  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 28)))).FpMethods)).FxShmMap})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 28)), 0, 32*1024, 0, bp+32)
 59873  	if rc != SQLITE_OK {
 59874  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59875  		return TCL_ERROR
 59876  	}
 59877  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 59878  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 59879  		return TCL_ERROR
 59880  	}
 59881  	aShm = *(*uintptr)(unsafe.Pointer(bp + 32))
 59882  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 20))
 59883  
 59884  	if objc == 5 {
 59885  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 24)))
 59886  	}
 59887  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 59888  
 59889  	return TCL_OK
 59890  }
 59891  
 59892  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 59893  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 59894  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59895  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 59896  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 59897  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59898  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 59899  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 59900  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59901  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 59902  	return TCL_OK
 59903  }
 59904  
 59905  type TestWindow1 = struct {
 59906  	FxStep    uintptr
 59907  	FxFinal   uintptr
 59908  	FxValue   uintptr
 59909  	FxInverse uintptr
 59910  	Finterp   uintptr
 59911  }
 59912  
 59913  type TestWindow = TestWindow1
 59914  
 59915  type TestWindowCtx1 = struct{ FpVal uintptr }
 59916  
 59917  type TestWindowCtx = TestWindowCtx1
 59918  
 59919  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 59920  	var i int32
 59921  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59922  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59923  		if bInverse != 0 {
 59924  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 59925  		}
 59926  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 59927  	}())
 59928  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59929  
 59930  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59931  	if pCtx != 0 {
 59932  		var zResult uintptr
 59933  		var rc int32
 59934  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59935  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59936  		} else {
 59937  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59938  		}
 59939  		for i = 0; i < nArg; i++ {
 59940  			var pArg uintptr
 59941  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*4))), -1)
 59942  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 59943  		}
 59944  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59945  		if rc != TCL_OK {
 59946  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59947  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59948  		} else {
 59949  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59950  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59951  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59952  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59953  						tcl.XTclFreeObj(tls, _objPtr)
 59954  					}
 59955  				}
 59956  			}
 59957  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 59958  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 59959  		}
 59960  	}
 59961  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59962  		var _objPtr uintptr = pEval
 59963  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59964  			tcl.XTclFreeObj(tls, _objPtr)
 59965  		}
 59966  	}
 59967  }
 59968  
 59969  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 59970  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59971  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59972  		if bValue != 0 {
 59973  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 59974  		}
 59975  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 59976  	}())
 59977  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59978  
 59979  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59980  	if pCtx != 0 {
 59981  		var zResult uintptr
 59982  		var rc int32
 59983  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59984  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59985  		} else {
 59986  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59987  		}
 59988  
 59989  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59990  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59991  		if rc != TCL_OK {
 59992  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59993  		} else {
 59994  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 59995  		}
 59996  
 59997  		if bValue == 0 {
 59998  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59999  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 60000  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 60001  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60002  						tcl.XTclFreeObj(tls, _objPtr)
 60003  					}
 60004  				}
 60005  			}
 60006  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 60007  		}
 60008  	}
 60009  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 60010  		var _objPtr uintptr = pEval
 60011  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 60012  			tcl.XTclFreeObj(tls, _objPtr)
 60013  		}
 60014  	}
 60015  }
 60016  
 60017  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60018  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 60019  }
 60020  
 60021  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60022  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 60023  }
 60024  
 60025  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 60026  	doTestWindowFinalize(tls, 0, ctx)
 60027  }
 60028  
 60029  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 60030  	doTestWindowFinalize(tls, 1, ctx)
 60031  }
 60032  
 60033  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 60034  	tcl.XTcl_Free(tls, pCtx)
 60035  }
 60036  
 60037  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60038  	bp := tls.Alloc(4)
 60039  	defer tls.Free(4)
 60040  
 60041  	var pNew uintptr
 60042  
 60043  	var zName uintptr
 60044  	var rc int32
 60045  
 60046  	if objc != 7 {
 60047  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 60048  		return TCL_ERROR
 60049  	}
 60050  
 60051  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 60052  		return TCL_ERROR
 60053  	}
 60054  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*4)))
 60055  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 60056  	libc.Xmemset(tls, pNew, 0, uint32(unsafe.Sizeof(TestWindow{})))
 60057  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*4)))
 60058  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*4)))
 60059  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*4)))
 60060  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*4)))
 60061  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 60062  
 60063  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 60064  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 60065  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 60066  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 60067  
 60068  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 60069  		*(*uintptr)(unsafe.Pointer(&struct {
 60070  			f func(*libc.TLS, uintptr, int32, uintptr)
 60071  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60072  			f func(*libc.TLS, uintptr, int32, uintptr)
 60073  		}{testWindowInverse})),
 60074  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 60075  	if rc != SQLITE_OK {
 60076  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60077  		return TCL_ERROR
 60078  	}
 60079  
 60080  	return TCL_OK
 60081  }
 60082  
 60083  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60084  	bp := tls.Alloc(4)
 60085  	defer tls.Free(4)
 60086  
 60087  	var rc int32
 60088  
 60089  	if !(objc != 2) {
 60090  		goto __1
 60091  	}
 60092  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60093  	return TCL_ERROR
 60094  __1:
 60095  	;
 60096  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0) {
 60097  		goto __2
 60098  	}
 60099  	return TCL_ERROR
 60100  __2:
 60101  	;
 60102  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60103  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60104  			f func(*libc.TLS, uintptr, int32, uintptr)
 60105  		}{testWindowInverse})),
 60106  		uintptr(0))
 60107  	if !(rc != SQLITE_MISUSE) {
 60108  		goto __3
 60109  	}
 60110  	goto error
 60111  __3:
 60112  	;
 60113  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60114  		*(*uintptr)(unsafe.Pointer(&struct {
 60115  			f func(*libc.TLS, uintptr, int32, uintptr)
 60116  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60117  			f func(*libc.TLS, uintptr, int32, uintptr)
 60118  		}{testWindowInverse})),
 60119  		uintptr(0))
 60120  	if !(rc != SQLITE_MISUSE) {
 60121  		goto __4
 60122  	}
 60123  	goto error
 60124  __4:
 60125  	;
 60126  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60127  		*(*uintptr)(unsafe.Pointer(&struct {
 60128  			f func(*libc.TLS, uintptr, int32, uintptr)
 60129  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60130  			f func(*libc.TLS, uintptr, int32, uintptr)
 60131  		}{testWindowInverse})),
 60132  		uintptr(0))
 60133  	if !(rc != SQLITE_MISUSE) {
 60134  		goto __5
 60135  	}
 60136  	goto error
 60137  __5:
 60138  	;
 60139  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 60140  		*(*uintptr)(unsafe.Pointer(&struct {
 60141  			f func(*libc.TLS, uintptr, int32, uintptr)
 60142  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 60143  		uintptr(0))
 60144  	if !(rc != SQLITE_MISUSE) {
 60145  		goto __6
 60146  	}
 60147  	goto error
 60148  __6:
 60149  	;
 60150  	return TCL_OK
 60151  
 60152  error:
 60153  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 60154  	return TCL_ERROR
 60155  }
 60156  
 60157  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60158  	var pInt uintptr
 60159  
 60160  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 60161  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 60162  		return
 60163  	}
 60164  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60165  	if pInt != 0 {
 60166  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60167  	}
 60168  }
 60169  
 60170  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 60171  	var pInt uintptr
 60172  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 60173  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 60174  }
 60175  
 60176  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 60177  	var res sqlite3_int64 = int64(0)
 60178  	var pInt uintptr
 60179  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60180  	if pInt != 0 {
 60181  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60182  	}
 60183  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60184  }
 60185  
 60186  func sumintValue(tls *libc.TLS, ctx uintptr) {
 60187  	var res sqlite3_int64 = int64(0)
 60188  	var pInt uintptr
 60189  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 60190  	if pInt != 0 {
 60191  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 60192  	}
 60193  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 60194  }
 60195  
 60196  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60197  	bp := tls.Alloc(4)
 60198  	defer tls.Free(4)
 60199  
 60200  	var rc int32
 60201  
 60202  	if objc != 2 {
 60203  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60204  		return TCL_ERROR
 60205  	}
 60206  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 60207  		return TCL_ERROR
 60208  	}
 60209  
 60210  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 60211  		*(*uintptr)(unsafe.Pointer(&struct {
 60212  			f func(*libc.TLS, uintptr, int32, uintptr)
 60213  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintValue})), *(*uintptr)(unsafe.Pointer(&struct {
 60214  			f func(*libc.TLS, uintptr, int32, uintptr)
 60215  		}{sumintInverse})),
 60216  		uintptr(0))
 60217  
 60218  	if rc != SQLITE_OK {
 60219  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60220  		return TCL_ERROR
 60221  	}
 60222  	return TCL_OK
 60223  }
 60224  
 60225  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 60226  	bp := tls.Alloc(4)
 60227  	defer tls.Free(4)
 60228  
 60229  	var rc int32
 60230  
 60231  	if objc != 2 {
 60232  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 60233  		return TCL_ERROR
 60234  	}
 60235  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*4))), bp) != 0 {
 60236  		return TCL_ERROR
 60237  	}
 60238  
 60239  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 60240  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 60241  			f func(*libc.TLS, uintptr, int32, uintptr)
 60242  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 60243  
 60244  	if rc != SQLITE_OK {
 60245  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 60246  		return TCL_ERROR
 60247  	}
 60248  	return TCL_OK
 60249  }
 60250  
 60251  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 60252  	var i int32
 60253  	for i = 0; uint32(i) < uint32(unsafe.Sizeof(aObjCmd14))/uint32(unsafe.Sizeof(struct {
 60254  		FzName      uintptr
 60255  		FxProc      uintptr
 60256  		FclientData int32
 60257  	}{})); i++ {
 60258  		var c ClientData = uintptr(aObjCmd14[i].FclientData)
 60259  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 60260  	}
 60261  	return TCL_OK
 60262  }
 60263  
 60264  var aObjCmd14 = [4]struct {
 60265  	FzName      uintptr
 60266  	FxProc      uintptr
 60267  	FclientData int32
 60268  }{
 60269  	{FzName: ts + 39401, FxProc: 0},
 60270  	{FzName: ts + 39432, FxProc: 0},
 60271  	{FzName: ts + 39467, FxProc: 0},
 60272  	{FzName: ts + 39486, FxProc: 0},
 60273  }
 60274  
 60275  func init() {
 60276  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 4)) = cfClose
 60277  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfRead
 60278  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 12)) = cfWrite
 60279  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfTruncate
 60280  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 20)) = cfSync
 60281  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfFileSize
 60282  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 28)) = cfLock
 60283  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfUnlock
 60284  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 36)) = cfCheckReservedLock
 60285  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfFileControl
 60286  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 44)) = cfSectorSize
 60287  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfDeviceCharacteristics
 60288  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 52)) = cfShmMap
 60289  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfShmLock
 60290  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 60)) = cfShmBarrier
 60291  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfShmUnmap
 60292  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 4)) = csvtabCreate
 60293  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabConnect
 60294  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 12)) = csvtabBestIndex
 60295  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabDisconnect
 60296  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 20)) = csvtabDisconnect
 60297  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabOpen
 60298  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 28)) = csvtabClose
 60299  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabFilter
 60300  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 36)) = csvtabNext
 60301  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabEof
 60302  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 44)) = csvtabColumn
 60303  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabRowid
 60304  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 4)) = csvtabCreate
 60305  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabConnect
 60306  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 12)) = csvtabBestIndex
 60307  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabDisconnect
 60308  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 20)) = csvtabDisconnect
 60309  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabOpen
 60310  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 28)) = csvtabClose
 60311  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabFilter
 60312  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 36)) = csvtabNext
 60313  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabEof
 60314  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 44)) = csvtabColumn
 60315  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabRowid
 60316  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 52)) = csvtabUpdate
 60317  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 8)) = incrblobClose
 60318  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 12)) = incrblobInput
 60319  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobOutput
 60320  	*(*func(*libc.TLS, ClientData, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 20)) = incrblobSeek
 60321  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobWatch
 60322  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 36)) = incrblobHandle
 60323  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 4)) = f5tCreateTokenizer
 60324  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 16)) = f5tTokenizerReturn
 60325  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 28)) = f5tTokenize
 60326  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 40)) = f5tCreateFunction
 60327  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 52)) = f5tMayBeCorrupt
 60328  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 64)) = f5tTokenHash
 60329  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 76)) = f5tRegisterMatchinfo
 60330  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 88)) = f5tRegisterTok
 60331  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60332  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60333  	}{db_enter}))
 60334  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60335  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60336  	}{db_leave}))
 60337  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60338  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60339  	}{sqlite3_mprintf_int}))
 60340  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60341  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60342  	}{sqlite3_mprintf_int64}))
 60343  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60344  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60345  	}{sqlite3_mprintf_long}))
 60346  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60347  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60348  	}{sqlite3_mprintf_str}))
 60349  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60350  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60351  	}{sqlite3_snprintf_str}))
 60352  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60353  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60354  	}{sqlite3_mprintf_stronly}))
 60355  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60356  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60357  	}{sqlite3_mprintf_double}))
 60358  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60359  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60360  	}{sqlite3_mprintf_scaled}))
 60361  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60362  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60363  	}{sqlite3_mprintf_hexdouble}))
 60364  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 92)) = *(*uintptr)(unsafe.Pointer(&struct {
 60365  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60366  	}{test_mprintf_z}))
 60367  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60368  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60369  	}{test_mprintf_n}))
 60370  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 108)) = *(*uintptr)(unsafe.Pointer(&struct {
 60371  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60372  	}{test_snprintf_int}))
 60373  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 116)) = *(*uintptr)(unsafe.Pointer(&struct {
 60374  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60375  	}{test_last_rowid}))
 60376  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 124)) = *(*uintptr)(unsafe.Pointer(&struct {
 60377  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60378  	}{test_exec_printf}))
 60379  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 132)) = *(*uintptr)(unsafe.Pointer(&struct {
 60380  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60381  	}{test_exec_hex}))
 60382  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 140)) = *(*uintptr)(unsafe.Pointer(&struct {
 60383  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60384  	}{test_exec}))
 60385  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 148)) = *(*uintptr)(unsafe.Pointer(&struct {
 60386  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60387  	}{test_exec_nr}))
 60388  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 156)) = *(*uintptr)(unsafe.Pointer(&struct {
 60389  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60390  	}{test_get_table_printf}))
 60391  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 164)) = *(*uintptr)(unsafe.Pointer(&struct {
 60392  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60393  	}{sqlite_test_close}))
 60394  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 172)) = *(*uintptr)(unsafe.Pointer(&struct {
 60395  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60396  	}{sqlite_test_close_v2}))
 60397  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 180)) = *(*uintptr)(unsafe.Pointer(&struct {
 60398  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60399  	}{test_create_function}))
 60400  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 188)) = *(*uintptr)(unsafe.Pointer(&struct {
 60401  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60402  	}{test_create_aggregate}))
 60403  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 196)) = *(*uintptr)(unsafe.Pointer(&struct {
 60404  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60405  	}{test_drop_modules}))
 60406  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 204)) = *(*uintptr)(unsafe.Pointer(&struct {
 60407  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60408  	}{test_register_func}))
 60409  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 212)) = *(*uintptr)(unsafe.Pointer(&struct {
 60410  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60411  	}{sqlite_abort}))
 60412  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 220)) = *(*uintptr)(unsafe.Pointer(&struct {
 60413  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60414  	}{test_bind}))
 60415  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 228)) = *(*uintptr)(unsafe.Pointer(&struct {
 60416  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60417  	}{test_breakpoint}))
 60418  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 236)) = *(*uintptr)(unsafe.Pointer(&struct {
 60419  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60420  	}{test_key}))
 60421  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 244)) = *(*uintptr)(unsafe.Pointer(&struct {
 60422  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60423  	}{test_rekey}))
 60424  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 252)) = *(*uintptr)(unsafe.Pointer(&struct {
 60425  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60426  	}{test_interrupt}))
 60427  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 260)) = *(*uintptr)(unsafe.Pointer(&struct {
 60428  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60429  	}{delete_function}))
 60430  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 268)) = *(*uintptr)(unsafe.Pointer(&struct {
 60431  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60432  	}{delete_collation}))
 60433  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 276)) = *(*uintptr)(unsafe.Pointer(&struct {
 60434  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60435  	}{get_autocommit}))
 60436  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 284)) = *(*uintptr)(unsafe.Pointer(&struct {
 60437  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60438  	}{test_busy_timeout}))
 60439  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 292)) = *(*uintptr)(unsafe.Pointer(&struct {
 60440  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60441  	}{test_printf}))
 60442  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 300)) = *(*uintptr)(unsafe.Pointer(&struct {
 60443  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60444  	}{test_io_trace}))
 60445  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 308)) = *(*uintptr)(unsafe.Pointer(&struct {
 60446  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60447  	}{clang_sanitize_address}))
 60448  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60449  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60450  	}{pager_open}))
 60451  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60452  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60453  	}{pager_close}))
 60454  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60455  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60456  	}{pager_commit}))
 60457  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60458  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60459  	}{pager_rollback}))
 60460  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60461  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60462  	}{pager_stmt_begin}))
 60463  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60464  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60465  	}{pager_stmt_commit}))
 60466  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60467  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60468  	}{pager_stmt_rollback}))
 60469  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60470  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60471  	}{pager_stats}))
 60472  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60473  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60474  	}{pager_pagecount}))
 60475  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60476  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60477  	}{page_get}))
 60478  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60479  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60480  	}{page_lookup}))
 60481  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 92)) = *(*uintptr)(unsafe.Pointer(&struct {
 60482  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60483  	}{page_unref}))
 60484  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60485  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60486  	}{page_read}))
 60487  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 108)) = *(*uintptr)(unsafe.Pointer(&struct {
 60488  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60489  	}{page_write}))
 60490  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 116)) = *(*uintptr)(unsafe.Pointer(&struct {
 60491  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60492  	}{page_number}))
 60493  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 124)) = *(*uintptr)(unsafe.Pointer(&struct {
 60494  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60495  	}{pager_truncate}))
 60496  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 132)) = *(*uintptr)(unsafe.Pointer(&struct {
 60497  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60498  	}{fake_big_file}))
 60499  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 140)) = *(*uintptr)(unsafe.Pointer(&struct {
 60500  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60501  	}{testBitvecBuiltinTest}))
 60502  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 148)) = *(*uintptr)(unsafe.Pointer(&struct {
 60503  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60504  	}{testPendingByte}))
 60505  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 156)) = *(*uintptr)(unsafe.Pointer(&struct {
 60506  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60507  	}{faultInstallCmd}))
 60508  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60509  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60510  	}{btree_open}))
 60511  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60512  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60513  	}{btree_close}))
 60514  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60515  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60516  	}{btree_begin_transaction}))
 60517  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60518  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60519  	}{btree_pager_stats}))
 60520  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60521  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60522  	}{btree_cursor}))
 60523  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60524  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60525  	}{btree_close_cursor}))
 60526  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60527  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60528  	}{btree_next}))
 60529  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60530  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60531  	}{btree_eof}))
 60532  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60533  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60534  	}{btree_payload_size}))
 60535  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60536  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60537  	}{btree_first}))
 60538  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60539  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60540  	}{btree_varint_test}))
 60541  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 92)) = *(*uintptr)(unsafe.Pointer(&struct {
 60542  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60543  	}{btree_from_db}))
 60544  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60545  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60546  	}{btree_ismemdb}))
 60547  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 108)) = *(*uintptr)(unsafe.Pointer(&struct {
 60548  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60549  	}{btree_set_cache_size}))
 60550  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60551  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60552  	}{tcl_thread_create}))
 60553  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60554  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60555  	}{tcl_thread_wait}))
 60556  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60557  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60558  	}{tcl_thread_halt}))
 60559  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60560  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60561  	}{tcl_thread_argc}))
 60562  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60563  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60564  	}{tcl_thread_argv}))
 60565  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60566  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60567  	}{tcl_thread_colname}))
 60568  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60569  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60570  	}{tcl_thread_result}))
 60571  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60572  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60573  	}{tcl_thread_error}))
 60574  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60575  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60576  	}{tcl_thread_compile}))
 60577  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60578  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60579  	}{tcl_thread_step}))
 60580  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60581  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60582  	}{tcl_thread_finalize}))
 60583  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 92)) = *(*uintptr)(unsafe.Pointer(&struct {
 60584  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60585  	}{tcl_thread_swap}))
 60586  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60587  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60588  	}{tcl_thread_db_get}))
 60589  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 108)) = *(*uintptr)(unsafe.Pointer(&struct {
 60590  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60591  	}{tcl_thread_db_put}))
 60592  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 116)) = *(*uintptr)(unsafe.Pointer(&struct {
 60593  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60594  	}{tcl_thread_stmt_get}))
 60595  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60596  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60597  	}{binarize}))
 60598  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60599  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60600  	}{test_value_overhead}))
 60601  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60602  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60603  	}{test_translate}))
 60604  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60605  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60606  	}{test_translate_selftest}))
 60607  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60608  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60609  	}{tcl_client_create}))
 60610  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60611  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60612  	}{tcl_client_wait}))
 60613  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60614  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60615  	}{tcl_client_halt}))
 60616  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60617  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60618  	}{tcl_client_argc}))
 60619  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60620  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60621  	}{tcl_client_argv}))
 60622  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60623  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60624  	}{tcl_client_colname}))
 60625  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60626  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60627  	}{tcl_client_result}))
 60628  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60629  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60630  	}{tcl_client_error}))
 60631  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60632  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60633  	}{tcl_client_compile}))
 60634  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60635  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60636  	}{tcl_client_step}))
 60637  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60638  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60639  	}{tcl_client_reset}))
 60640  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 92)) = *(*uintptr)(unsafe.Pointer(&struct {
 60641  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60642  	}{tcl_client_finalize}))
 60643  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60644  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60645  	}{tcl_client_swap}))
 60646  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 4)) = test_multiplex_initialize
 60647  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 12)) = test_multiplex_shutdown
 60648  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 20)) = test_multiplex_control
 60649  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 60650  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60651  	}{test_shutdown}))
 60652  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 12)) = *(*uintptr)(unsafe.Pointer(&struct {
 60653  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60654  	}{test_initialize}))
 60655  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 20)) = *(*uintptr)(unsafe.Pointer(&struct {
 60656  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60657  	}{test_config}))
 60658  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 28)) = *(*uintptr)(unsafe.Pointer(&struct {
 60659  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60660  	}{test_enter_static_mutex}))
 60661  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 36)) = *(*uintptr)(unsafe.Pointer(&struct {
 60662  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60663  	}{test_leave_static_mutex}))
 60664  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 60665  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60666  	}{test_enter_db_mutex}))
 60667  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 52)) = *(*uintptr)(unsafe.Pointer(&struct {
 60668  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60669  	}{test_leave_db_mutex}))
 60670  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 60)) = *(*uintptr)(unsafe.Pointer(&struct {
 60671  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60672  	}{test_alloc_mutex}))
 60673  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 68)) = *(*uintptr)(unsafe.Pointer(&struct {
 60674  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60675  	}{test_install_mutex_counters}))
 60676  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 76)) = *(*uintptr)(unsafe.Pointer(&struct {
 60677  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60678  	}{test_read_mutex_counters}))
 60679  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 60680  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60681  	}{test_clear_mutex_counters}))
 60682  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 4)) = test_quota_initialize
 60683  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 12)) = test_quota_shutdown
 60684  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 20)) = test_quota_set
 60685  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 28)) = test_quota_file
 60686  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 36)) = test_quota_dump
 60687  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 44)) = test_quota_fopen
 60688  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 52)) = test_quota_fread
 60689  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 60)) = test_quota_fwrite
 60690  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 68)) = test_quota_fclose
 60691  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 76)) = test_quota_fflush
 60692  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 84)) = test_quota_fseek
 60693  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 92)) = test_quota_rewind
 60694  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 100)) = test_quota_ftell
 60695  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 108)) = test_quota_ftruncate
 60696  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 116)) = test_quota_file_size
 60697  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 124)) = test_quota_file_truesize
 60698  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 132)) = test_quota_file_mtime
 60699  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 140)) = test_quota_remove
 60700  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 148)) = test_quota_glob
 60701  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 156)) = test_quota_file_available
 60702  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 164)) = test_quota_ferror
 60703  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 4)) = sqlite3_amatch_init
 60704  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 12)) = sqlite3_appendvfs_init
 60705  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 20)) = sqlite3_carray_init
 60706  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 28)) = sqlite3_closure_init
 60707  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 36)) = sqlite3_csv_init
 60708  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 44)) = sqlite3_decimal_init
 60709  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 52)) = sqlite3_eval_init
 60710  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 60)) = sqlite3_explain_init
 60711  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 68)) = sqlite3_fileio_init
 60712  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 76)) = sqlite3_fuzzer_init
 60713  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 84)) = sqlite3_ieee_init
 60714  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 92)) = sqlite3_nextchar_init
 60715  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 100)) = sqlite3_percentile_init
 60716  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 108)) = sqlite3_prefixes_init
 60717  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 116)) = sqlite3_qpvtab_init
 60718  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 124)) = sqlite3_regexp_init
 60719  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 132)) = sqlite3_remember_init
 60720  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 140)) = sqlite3_series_init
 60721  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 148)) = sqlite3_spellfix_init
 60722  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 156)) = sqlite3_totype_init
 60723  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 164)) = sqlite3_unionvtab_init
 60724  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 172)) = sqlite3_wholenumber_init
 60725  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 8)) = decimalFunc
 60726  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 20)) = decimalCmpFunc
 60727  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 32)) = decimalAddFunc
 60728  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 44)) = decimalSubFunc
 60729  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 56)) = decimalMulFunc
 60730  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 12)) = ieee754func
 60731  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 28)) = ieee754func
 60732  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 44)) = ieee754func
 60733  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 60)) = ieee754func
 60734  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 76)) = ieee754func_to_blob
 60735  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 92)) = ieee754func_from_blob
 60736  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 12)) = randStr
 60737  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 28)) = test_destructor
 60738  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 44)) = test_destructor16
 60739  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 60)) = testHexToUtf16be
 60740  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 76)) = testHexToUtf16le
 60741  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 92)) = testHexToUtf8
 60742  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 108)) = test_destructor_count
 60743  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 124)) = test_auxdata
 60744  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 140)) = test_error
 60745  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 156)) = test_error
 60746  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 172)) = test_eval
 60747  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 188)) = test_isolation
 60748  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 204)) = counterFunc
 60749  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 220)) = real2hex
 60750  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 236)) = test_decode
 60751  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 252)) = test_extract
 60752  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 268)) = test_zeroblob
 60753  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 284)) = test_getsubtype
 60754  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 300)) = test_setsubtype
 60755  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 316)) = test_frombind
 60756  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 4)) = test_sqlite3rbu
 60757  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 12)) = test_sqlite3rbu_vacuum
 60758  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 20)) = test_sqlite3rbu_create_vfs
 60759  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 28)) = test_sqlite3rbu_destroy_vfs
 60760  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 36)) = test_sqlite3rbu_internal_test
 60761  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 4)) = test_sqlite3_db_config
 60762  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 16)) = test_sqlite3_txn_state
 60763  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 28)) = test_bad_behavior
 60764  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = uintptr(unsafe.Pointer(&iZero))
 60765  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 40)) = test_register_dbstat_vtab
 60766  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 52)) = get_sqlite_pointer
 60767  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = test_intarray_addr
 60768  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 76)) = test_int64array_addr
 60769  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 88)) = test_doublearray_addr
 60770  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 100)) = test_textarray_addr
 60771  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 112)) = test_bind_int
 60772  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 124)) = test_bind_zeroblob
 60773  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 136)) = test_bind_zeroblob64
 60774  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 148)) = test_bind_int64
 60775  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 160)) = test_bind_double
 60776  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 172)) = test_bind_null
 60777  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 184)) = test_bind_text
 60778  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 196)) = test_bind_text16
 60779  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 208)) = test_bind_blob
 60780  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 220)) = test_bind_value_from_select
 60781  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 232)) = test_bind_value_from_preupdate
 60782  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 244)) = test_carray_bind
 60783  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 256)) = test_bind_parameter_count
 60784  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 268)) = test_bind_parameter_name
 60785  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 280)) = test_bind_parameter_index
 60786  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 292)) = test_clear_bindings
 60787  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 304)) = test_sleep
 60788  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 316)) = test_errcode
 60789  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 328)) = test_ex_errcode
 60790  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 340)) = test_errmsg
 60791  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 352)) = test_error_offset
 60792  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 364)) = test_errmsg16
 60793  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 376)) = test_open
 60794  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 388)) = test_open16
 60795  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 400)) = test_open_v2
 60796  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 412)) = test_complete16
 60797  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 424)) = test_normalize
 60798  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 436)) = test_prepare
 60799  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 448)) = test_prepare16
 60800  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 460)) = test_prepare_v2
 60801  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 472)) = test_prepare_v3
 60802  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 484)) = test_prepare_tkt3134
 60803  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 496)) = test_prepare16_v2
 60804  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 508)) = test_finalize
 60805  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 520)) = test_stmt_status
 60806  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 532)) = test_reset
 60807  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 544)) = test_expired
 60808  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 556)) = test_transfer_bind
 60809  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 568)) = test_changes
 60810  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 580)) = test_step
 60811  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 592)) = test_sql
 60812  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 604)) = test_ex_sql
 60813  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 616)) = test_next_stmt
 60814  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 628)) = test_stmt_readonly
 60815  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 640)) = test_stmt_isexplain
 60816  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 652)) = test_stmt_busy
 60817  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 664)) = uses_stmt_journal
 60818  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 676)) = test_release_memory
 60819  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 688)) = test_db_release_memory
 60820  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 700)) = test_db_cacheflush
 60821  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 712)) = test_system_errno
 60822  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 724)) = test_db_filename
 60823  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 736)) = test_db_readonly
 60824  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 748)) = test_soft_heap_limit
 60825  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 760)) = test_soft_heap_limit
 60826  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 772)) = test_hard_heap_limit
 60827  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 784)) = test_thread_cleanup
 60828  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 796)) = test_pager_refcounts
 60829  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 808)) = test_load_extension
 60830  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 820)) = test_enable_load
 60831  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 832)) = test_extended_result_codes
 60832  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 844)) = test_limit
 60833  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 856)) = test_dbconfig_maindbname_icecube
 60834  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 868)) = save_prng_state
 60835  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 880)) = restore_prng_state
 60836  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 892)) = reset_prng_state
 60837  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 904)) = prng_seed
 60838  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 916)) = extra_schema_checks
 60839  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 928)) = database_never_corrupt
 60840  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 940)) = database_may_be_corrupt
 60841  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 952)) = optimization_control
 60842  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 964)) = runAsObjProc
 60843  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 976)) = test_column_count
 60844  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 988)) = test_data_count
 60845  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1000)) = test_column_type
 60846  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1012)) = test_column_blob
 60847  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1024)) = test_column_double
 60848  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1036)) = test_column_int64
 60849  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1048)) = test_stmt_utf8
 60850  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1052)) = *(*uintptr)(unsafe.Pointer(&struct {
 60851  		f func(*libc.TLS, uintptr, int32) uintptr
 60852  	}{sqlite3.Xsqlite3_column_text}))
 60853  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1060)) = test_stmt_utf8
 60854  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = *(*uintptr)(unsafe.Pointer(&struct {
 60855  		f func(*libc.TLS, uintptr, int32) uintptr
 60856  	}{sqlite3.Xsqlite3_column_name}))
 60857  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1072)) = test_stmt_int
 60858  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1076)) = *(*uintptr)(unsafe.Pointer(&struct {
 60859  		f func(*libc.TLS, uintptr, int32) int32
 60860  	}{sqlite3.Xsqlite3_column_int}))
 60861  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1084)) = test_stmt_int
 60862  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = *(*uintptr)(unsafe.Pointer(&struct {
 60863  		f func(*libc.TLS, uintptr, int32) int32
 60864  	}{sqlite3.Xsqlite3_column_bytes}))
 60865  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1096)) = test_stmt_utf8
 60866  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1100)) = *(*uintptr)(unsafe.Pointer(&struct {
 60867  		f func(*libc.TLS, uintptr, int32) uintptr
 60868  	}{sqlite3.Xsqlite3_column_decltype}))
 60869  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1108)) = test_stmt_utf8
 60870  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = *(*uintptr)(unsafe.Pointer(&struct {
 60871  		f func(*libc.TLS, uintptr, int32) uintptr
 60872  	}{sqlite3.Xsqlite3_column_database_name}))
 60873  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1120)) = test_stmt_utf8
 60874  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1124)) = *(*uintptr)(unsafe.Pointer(&struct {
 60875  		f func(*libc.TLS, uintptr, int32) uintptr
 60876  	}{sqlite3.Xsqlite3_column_table_name}))
 60877  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1132)) = test_stmt_utf8
 60878  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60879  		f func(*libc.TLS, uintptr, int32) uintptr
 60880  	}{sqlite3.Xsqlite3_column_origin_name}))
 60881  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1144)) = test_stmt_int
 60882  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1148)) = *(*uintptr)(unsafe.Pointer(&struct {
 60883  		f func(*libc.TLS, uintptr, int32) int32
 60884  	}{sqlite3.Xsqlite3_column_bytes16}))
 60885  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1156)) = test_stmt_utf16
 60886  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = *(*uintptr)(unsafe.Pointer(&struct {
 60887  		f func(*libc.TLS, uintptr, int32) uintptr
 60888  	}{sqlite3.Xsqlite3_column_text16}))
 60889  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1168)) = test_stmt_utf16
 60890  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1172)) = *(*uintptr)(unsafe.Pointer(&struct {
 60891  		f func(*libc.TLS, uintptr, int32) uintptr
 60892  	}{sqlite3.Xsqlite3_column_name16}))
 60893  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1180)) = add_alignment_test_collations
 60894  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1192)) = test_stmt_utf16
 60895  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1196)) = *(*uintptr)(unsafe.Pointer(&struct {
 60896  		f func(*libc.TLS, uintptr, int32) uintptr
 60897  	}{sqlite3.Xsqlite3_column_decltype16}))
 60898  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1204)) = test_stmt_utf16
 60899  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = *(*uintptr)(unsafe.Pointer(&struct {
 60900  		f func(*libc.TLS, uintptr, int32) uintptr
 60901  	}{sqlite3.Xsqlite3_column_database_name16}))
 60902  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1216)) = test_stmt_utf16
 60903  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1220)) = *(*uintptr)(unsafe.Pointer(&struct {
 60904  		f func(*libc.TLS, uintptr, int32) uintptr
 60905  	}{sqlite3.Xsqlite3_column_table_name16}))
 60906  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1228)) = test_stmt_utf16
 60907  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60908  		f func(*libc.TLS, uintptr, int32) uintptr
 60909  	}{sqlite3.Xsqlite3_column_origin_name16}))
 60910  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1240)) = test_create_collation_v2
 60911  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1252)) = test_global_recover
 60912  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1264)) = working_64bit_int
 60913  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1276)) = vfs_unlink_test
 60914  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1288)) = vfs_initfail_test
 60915  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1300)) = vfs_unregister_all
 60916  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1312)) = vfs_reregister_all
 60917  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1324)) = file_control_test
 60918  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1336)) = file_control_lasterrno_test
 60919  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1348)) = file_control_lockproxy_test
 60920  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1360)) = file_control_chunksize_test
 60921  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1372)) = file_control_sizehint_test
 60922  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1384)) = file_control_data_version
 60923  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1396)) = file_control_persist_wal
 60924  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1408)) = file_control_powersafe_overwrite
 60925  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1420)) = file_control_vfsname
 60926  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1432)) = file_control_reservebytes
 60927  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1444)) = file_control_tempfilename
 60928  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1456)) = file_control_external_reader
 60929  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1468)) = vfs_list
 60930  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1480)) = test_create_function_v2
 60931  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1492)) = test_collate
 60932  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1504)) = test_collate_needed
 60933  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1516)) = test_function
 60934  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1528)) = test_utf16bin_collate
 60935  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1540)) = test_errstr
 60936  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1552)) = tcl_variable_type
 60937  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1564)) = test_enable_shared
 60938  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1576)) = sqlite3BtreeSharedCacheReport
 60939  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1588)) = test_libversion_number
 60940  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1600)) = test_table_column_metadata
 60941  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1612)) = test_blob_reopen
 60942  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1624)) = test_pcache_stats
 60943  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1636)) = test_unlock_notify
 60944  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1648)) = test_wal_checkpoint
 60945  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1660)) = test_wal_checkpoint_v2
 60946  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1672)) = test_wal_autocheckpoint
 60947  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1684)) = test_sqlite3_log
 60948  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1696)) = test_print_eqp
 60949  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1708)) = test_test_control
 60950  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1720)) = test_getrusage
 60951  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1732)) = tclLoadStaticExtensionCmd
 60952  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1744)) = sorter_test_fakeheap
 60953  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1756)) = sorter_test_sort4_helper
 60954  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1768)) = vfsCurrentTimeInt64
 60955  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1780)) = test_snapshot_get
 60956  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1792)) = test_snapshot_open
 60957  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1804)) = test_snapshot_free
 60958  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1816)) = test_snapshot_cmp
 60959  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1828)) = test_snapshot_recover
 60960  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1840)) = test_snapshot_get_blob
 60961  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1852)) = test_snapshot_open_blob
 60962  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1864)) = test_snapshot_cmp_blob
 60963  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1876)) = test_delete_database
 60964  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1888)) = test_atomic_batch_write
 60965  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1900)) = test_mmap_warm
 60966  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1912)) = test_config_sorterref
 60967  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1924)) = test_autovacuum_pages
 60968  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1936)) = test_decode_hexdb
 60969  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1948)) = test_write_db
 60970  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1960)) = test_register_cksumvfs
 60971  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1972)) = test_unregister_cksumvfs
 60972  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 4)) = test_intarray_create
 60973  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 16)) = test_intarray_bind
 60974  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 4)) = test_malloc
 60975  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 16)) = test_realloc
 60976  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 28)) = test_free
 60977  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 40)) = test_memset
 60978  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 52)) = test_memget
 60979  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 64)) = test_memory_used
 60980  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 76)) = test_memory_highwater
 60981  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 88)) = test_memdebug_backtrace
 60982  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 100)) = test_memdebug_dump
 60983  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 112)) = test_memdebug_fail
 60984  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 124)) = test_memdebug_pending
 60985  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 136)) = test_memdebug_settitle
 60986  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 148)) = test_memdebug_malloc_count
 60987  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 160)) = test_memdebug_log
 60988  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 172)) = test_config_pagecache
 60989  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 184)) = test_alt_pcache
 60990  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 196)) = test_status
 60991  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 208)) = test_db_status
 60992  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 220)) = test_install_malloc_faultsim
 60993  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 232)) = test_config_heap
 60994  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 244)) = test_config_heap_size
 60995  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 256)) = test_config_memstatus
 60996  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 268)) = test_config_lookaside
 60997  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 280)) = test_config_error
 60998  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 292)) = test_config_uri
 60999  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 304)) = test_config_cis
 61000  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 316)) = test_config_pmasz
 61001  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 328)) = test_db_config_lookaside
 61002  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 340)) = test_dump_memsys3
 61003  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 352)) = test_dump_memsys3
 61004  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 364)) = test_install_memsys3
 61005  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 376)) = test_vfs_oom_test
 61006  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 4)) = register_schema_module
 61007  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 4)) = register_tclvar_module
 61008  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 4)) = test_create_window
 61009  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 16)) = test_create_window_misuse
 61010  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 28)) = test_create_sumint
 61011  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 40)) = test_override_sum
 61012  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 4)) = register_echo_module
 61013  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 16)) = declare_vtab
 61014  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 4)) = c_misuse_test
 61015  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 16)) = c_realloc_test
 61016  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 28)) = c_collation_test
 61017  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 4)) = register_tcl_module
 61018  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 4)) = test_blob_open
 61019  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 12)) = test_blob_close
 61020  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 20)) = test_blob_bytes
 61021  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 28)) = test_blob_read
 61022  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 36)) = test_blob_write
 61023  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 4)) = register_fs_module
 61024  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 4)) = autoinstall_test_funcs
 61025  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 12)) = abuse_create_function
 61026  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 20)) = install_fts3_rank_function
 61027  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 4)) = hexio_read
 61028  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 12)) = hexio_write
 61029  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 20)) = hexio_get_int
 61030  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 28)) = hexio_render_int16
 61031  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 36)) = hexio_render_int32
 61032  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 44)) = utf8_to_utf8
 61033  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 52)) = read_fts3varint
 61034  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 60)) = make_fts3record
 61035  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 4)) = init_wrapper_install
 61036  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 12)) = init_wrapper_query
 61037  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 20)) = init_wrapper_uninstall
 61038  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 28)) = init_wrapper_clear
 61039  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4)) = *(*uintptr)(unsafe.Pointer(&struct {
 61040  		f func(*libc.TLS, uintptr, int32, int32) int32
 61041  	}{ts_open}))
 61042  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 61043  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 44)) = *(*uintptr)(unsafe.Pointer(&struct {
 61044  		f func(*libc.TLS, uintptr, int32) int32
 61045  	}{ts_access}))
 61046  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 64)) = *(*uintptr)(unsafe.Pointer(&struct {
 61047  		f func(*libc.TLS, uintptr, size_t) uintptr
 61048  	}{ts_getcwd}))
 61049  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 84)) = *(*uintptr)(unsafe.Pointer(&struct {
 61050  		f func(*libc.TLS, uintptr, uintptr) int32
 61051  	}{ts_stat}))
 61052  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 61053  		f func(*libc.TLS, int32, uintptr) int32
 61054  	}{ts_fstat}))
 61055  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 124)) = *(*uintptr)(unsafe.Pointer(&struct {
 61056  		f func(*libc.TLS, int32, off_t) int32
 61057  	}{ts_ftruncate}))
 61058  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 144)) = *(*uintptr)(unsafe.Pointer(&struct {
 61059  		f func(*libc.TLS, int32, int32, uintptr) int32
 61060  	}{ts_fcntl}))
 61061  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 164)) = *(*uintptr)(unsafe.Pointer(&struct {
 61062  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61063  	}{ts_read}))
 61064  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 61065  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61066  	}{ts_pread}))
 61067  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 204)) = *(*uintptr)(unsafe.Pointer(&struct {
 61068  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61069  	}{ts_pread64}))
 61070  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 224)) = *(*uintptr)(unsafe.Pointer(&struct {
 61071  		f func(*libc.TLS, int32, uintptr, size_t) int32
 61072  	}{ts_write}))
 61073  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 244)) = *(*uintptr)(unsafe.Pointer(&struct {
 61074  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 61075  	}{ts_pwrite}))
 61076  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 61077  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 61078  	}{ts_pwrite64}))
 61079  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 284)) = *(*uintptr)(unsafe.Pointer(&struct {
 61080  		f func(*libc.TLS, int32, mode_t) int32
 61081  	}{ts_fchmod}))
 61082  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 304)) = *(*uintptr)(unsafe.Pointer(&struct {
 61083  		f func(*libc.TLS, int32, off_t, off_t) int32
 61084  	}{ts_fallocate}))
 61085  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 324)) = *(*uintptr)(unsafe.Pointer(&struct {
 61086  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 61087  	}{ts_mmap}))
 61088  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 61089  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 61090  	}{ts_mremap}))
 61091  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 4)) = amatchConnect
 61092  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 61093  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 12)) = amatchBestIndex
 61094  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchDisconnect
 61095  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 20)) = amatchDisconnect
 61096  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchOpen
 61097  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 28)) = amatchClose
 61098  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchFilter
 61099  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 36)) = amatchNext
 61100  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchEof
 61101  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 44)) = amatchColumn
 61102  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchRowid
 61103  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 52)) = amatchUpdate
 61104  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 4)) = apndClose
 61105  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndRead
 61106  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 12)) = apndWrite
 61107  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndTruncate
 61108  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 20)) = apndSync
 61109  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndFileSize
 61110  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 28)) = apndLock
 61111  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndUnlock
 61112  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 36)) = apndCheckReservedLock
 61113  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndFileControl
 61114  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 44)) = apndSectorSize
 61115  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndDeviceCharacteristics
 61116  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 52)) = apndShmMap
 61117  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndShmLock
 61118  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 60)) = apndShmBarrier
 61119  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndShmUnmap
 61120  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 68)) = apndFetch
 61121  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndUnfetch
 61122  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 24)) = apndOpen
 61123  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 28)) = apndDelete
 61124  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 32)) = apndAccess
 61125  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 36)) = apndFullPathname
 61126  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndDlOpen
 61127  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 44)) = apndDlError
 61128  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDlSym
 61129  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 52)) = apndDlClose
 61130  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndRandomness
 61131  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 60)) = apndSleep
 61132  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndCurrentTime
 61133  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 68)) = apndGetLastError
 61134  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndCurrentTimeInt64
 61135  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 76)) = apndSetSystemCall
 61136  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndGetSystemCall
 61137  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 84)) = apndNextSystemCall
 61138  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 8)) = carrayConnect
 61139  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 12)) = carrayBestIndex
 61140  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayDisconnect
 61141  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayOpen
 61142  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 28)) = carrayClose
 61143  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayFilter
 61144  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 36)) = carrayNext
 61145  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 40)) = carrayEof
 61146  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 44)) = carrayColumn
 61147  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayRowid
 61148  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 4)) = cksmClose
 61149  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmRead
 61150  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 12)) = cksmWrite
 61151  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmTruncate
 61152  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 20)) = cksmSync
 61153  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmFileSize
 61154  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 28)) = cksmLock
 61155  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmUnlock
 61156  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 36)) = cksmCheckReservedLock
 61157  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmFileControl
 61158  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 44)) = cksmSectorSize
 61159  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmDeviceCharacteristics
 61160  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 52)) = cksmShmMap
 61161  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmShmLock
 61162  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 60)) = cksmShmBarrier
 61163  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmShmUnmap
 61164  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 68)) = cksmFetch
 61165  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmUnfetch
 61166  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 24)) = cksmOpen
 61167  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 28)) = cksmDelete
 61168  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 32)) = cksmAccess
 61169  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 36)) = cksmFullPathname
 61170  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmDlOpen
 61171  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 44)) = cksmDlError
 61172  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDlSym
 61173  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 52)) = cksmDlClose
 61174  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmRandomness
 61175  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 60)) = cksmSleep
 61176  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmCurrentTime
 61177  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 68)) = cksmGetLastError
 61178  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmCurrentTimeInt64
 61179  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 76)) = cksmSetSystemCall
 61180  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmGetSystemCall
 61181  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 84)) = cksmNextSystemCall
 61182  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 4)) = closureConnect
 61183  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 61184  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 12)) = closureBestIndex
 61185  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureDisconnect
 61186  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 20)) = closureDisconnect
 61187  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureOpen
 61188  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 28)) = closureClose
 61189  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureFilter
 61190  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 36)) = closureNext
 61191  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureEof
 61192  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 44)) = closureColumn
 61193  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureRowid
 61194  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 24)) = cfOpen
 61195  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 28)) = cfDelete
 61196  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 32)) = cfAccess
 61197  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 36)) = cfFullPathname
 61198  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfDlOpen
 61199  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 44)) = cfDlError
 61200  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDlSym
 61201  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 52)) = cfDlClose
 61202  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfRandomness
 61203  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 60)) = cfSleep
 61204  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfCurrentTime
 61205  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 68)) = cfGetLastError
 61206  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 4)) = devsymClose
 61207  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymRead
 61208  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 12)) = devsymWrite
 61209  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymTruncate
 61210  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 20)) = devsymSync
 61211  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymFileSize
 61212  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 28)) = devsymLock
 61213  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymUnlock
 61214  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 36)) = devsymCheckReservedLock
 61215  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymFileControl
 61216  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 44)) = devsymSectorSize
 61217  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymDeviceCharacteristics
 61218  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 52)) = devsymShmMap
 61219  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymShmLock
 61220  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 60)) = devsymShmBarrier
 61221  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymShmUnmap
 61222  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 24)) = devsymOpen
 61223  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 28)) = devsymDelete
 61224  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 32)) = devsymAccess
 61225  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 36)) = devsymFullPathname
 61226  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymRandomness
 61227  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 60)) = devsymSleep
 61228  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymCurrentTime
 61229  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 4)) = echoCreate
 61230  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoConnect
 61231  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 12)) = echoBestIndex
 61232  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoDisconnect
 61233  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 20)) = echoDestroy
 61234  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoOpen
 61235  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 28)) = echoClose
 61236  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoFilter
 61237  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 36)) = echoNext
 61238  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoEof
 61239  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 44)) = echoColumn
 61240  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoRowid
 61241  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 52)) = echoUpdate
 61242  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoBegin
 61243  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 60)) = echoSync
 61244  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoCommit
 61245  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 68)) = echoRollback
 61246  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoFindFunction
 61247  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 76)) = echoRename
 61248  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 4)) = echoCreate
 61249  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoConnect
 61250  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 12)) = echoBestIndex
 61251  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoDisconnect
 61252  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 20)) = echoDestroy
 61253  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoOpen
 61254  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 28)) = echoClose
 61255  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoFilter
 61256  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 36)) = echoNext
 61257  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoEof
 61258  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 44)) = echoColumn
 61259  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoRowid
 61260  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 52)) = echoUpdate
 61261  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoBegin
 61262  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 60)) = echoSync
 61263  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoCommit
 61264  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 68)) = echoRollback
 61265  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoFindFunction
 61266  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 76)) = echoRename
 61267  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoSavepoint
 61268  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 84)) = echoRelease
 61269  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoRollbackTo
 61270  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 4)) = expertConnect
 61271  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 61272  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 12)) = expertBestIndex
 61273  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertDisconnect
 61274  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 20)) = expertDisconnect
 61275  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertOpen
 61276  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 28)) = expertClose
 61277  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertFilter
 61278  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 36)) = expertNext
 61279  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertEof
 61280  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 44)) = expertColumn
 61281  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertRowid
 61282  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 52)) = expertUpdate
 61283  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 8)) = explainConnect
 61284  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 12)) = explainBestIndex
 61285  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainDisconnect
 61286  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainOpen
 61287  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 28)) = explainClose
 61288  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainFilter
 61289  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 36)) = explainNext
 61290  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 40)) = explainEof
 61291  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 44)) = explainColumn
 61292  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainRowid
 61293  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 4)) = fsConnect
 61294  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 61295  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 12)) = fsBestIndex
 61296  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsDisconnect
 61297  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 20)) = fsDisconnect
 61298  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsOpen
 61299  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 28)) = fsClose
 61300  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsFilter
 61301  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 36)) = fsNext
 61302  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsEof
 61303  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 44)) = fsColumn
 61304  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsRowid
 61305  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 4)) = fsClose1
 61306  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsRead
 61307  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 12)) = fsWrite
 61308  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsTruncate
 61309  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 20)) = fsSync
 61310  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsFileSize
 61311  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 28)) = fsLock
 61312  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsUnlock
 61313  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 36)) = fsCheckReservedLock
 61314  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsFileControl
 61315  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 44)) = fsSectorSize
 61316  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsDeviceCharacteristics
 61317  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 24)) = fsOpen1
 61318  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 28)) = fsDelete
 61319  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 32)) = fsAccess
 61320  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 36)) = fsFullPathname
 61321  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsDlOpen
 61322  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 44)) = fsDlError
 61323  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDlSym
 61324  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 52)) = fsDlClose
 61325  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsRandomness
 61326  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 60)) = fsSleep
 61327  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsCurrentTime
 61328  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 4)) = fsdirConnect1
 61329  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 61330  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 12)) = fsdirBestIndex1
 61331  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirDisconnect1
 61332  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 20)) = fsdirDisconnect1
 61333  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirOpen1
 61334  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 28)) = fsdirClose1
 61335  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirFilter1
 61336  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 36)) = fsdirNext1
 61337  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirEof1
 61338  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 44)) = fsdirColumn1
 61339  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirRowid1
 61340  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 8)) = fsdirConnect
 61341  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 12)) = fsdirBestIndex
 61342  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirDisconnect
 61343  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirOpen
 61344  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 28)) = fsdirClose
 61345  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirFilter
 61346  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 36)) = fsdirNext
 61347  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 40)) = fsdirEof
 61348  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 44)) = fsdirColumn
 61349  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirRowid
 61350  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 4)) = fstreeConnect
 61351  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 61352  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 12)) = fstreeBestIndex
 61353  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeDisconnect
 61354  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 20)) = fstreeDisconnect
 61355  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeOpen
 61356  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 28)) = fstreeClose
 61357  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeFilter
 61358  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 36)) = fstreeNext
 61359  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeEof
 61360  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 44)) = fstreeColumn
 61361  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeRowid
 61362  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 4)) = fts5tokConnectMethod
 61363  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 61364  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 12)) = fts5tokBestIndexMethod
 61365  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokDisconnectMethod
 61366  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 20)) = fts5tokDisconnectMethod
 61367  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokOpenMethod
 61368  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 28)) = fts5tokCloseMethod
 61369  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokFilterMethod
 61370  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 36)) = fts5tokNextMethod
 61371  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokEofMethod
 61372  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 44)) = fts5tokColumnMethod
 61373  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokRowidMethod
 61374  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 4)) = fuzzerConnect
 61375  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 61376  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 12)) = fuzzerBestIndex
 61377  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerDisconnect
 61378  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 20)) = fuzzerDisconnect
 61379  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerOpen
 61380  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 28)) = fuzzerClose
 61381  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerFilter
 61382  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 36)) = fuzzerNext
 61383  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerEof
 61384  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 44)) = fuzzerColumn
 61385  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerRowid
 61386  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 4)) = intarrayCreate
 61387  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 61388  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 12)) = intarrayBestIndex
 61389  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayDestroy
 61390  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 20)) = intarrayDestroy
 61391  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayOpen
 61392  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 28)) = intarrayClose
 61393  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayFilter
 61394  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 36)) = intarrayNext
 61395  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayEof
 61396  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 44)) = intarrayColumn
 61397  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayRowid
 61398  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 4)) = jtClose
 61399  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtRead
 61400  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 12)) = jtWrite
 61401  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtTruncate
 61402  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 20)) = jtSync
 61403  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtFileSize
 61404  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 28)) = jtLock
 61405  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtUnlock
 61406  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 36)) = jtCheckReservedLock
 61407  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtFileControl
 61408  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 44)) = jtSectorSize
 61409  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtDeviceCharacteristics
 61410  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 24)) = jtOpen
 61411  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 28)) = jtDelete
 61412  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 32)) = jtAccess
 61413  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 36)) = jtFullPathname
 61414  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtDlOpen
 61415  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 44)) = jtDlError
 61416  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDlSym
 61417  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 52)) = jtDlClose
 61418  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtRandomness
 61419  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 60)) = jtSleep
 61420  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtCurrentTime
 61421  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 68)) = jtGetLastError
 61422  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtCurrentTimeInt64
 61423  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 8)) = prefixesConnect
 61424  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 12)) = prefixesBestIndex
 61425  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesDisconnect
 61426  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesOpen
 61427  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 28)) = prefixesClose
 61428  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesFilter
 61429  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 36)) = prefixesNext
 61430  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 40)) = prefixesEof
 61431  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 44)) = prefixesColumn
 61432  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesRowid
 61433  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 61434  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 8)) = qpvtabConnect
 61435  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 12)) = qpvtabBestIndex
 61436  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabDisconnect
 61437  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabOpen
 61438  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 28)) = qpvtabClose
 61439  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabFilter
 61440  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 36)) = qpvtabNext
 61441  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 40)) = qpvtabEof
 61442  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 44)) = qpvtabColumn
 61443  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabRowid
 61444  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 4)) = schemaCreate
 61445  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 61446  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 12)) = schemaBestIndex
 61447  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaDestroy
 61448  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 20)) = schemaDestroy
 61449  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaOpen
 61450  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 28)) = schemaClose
 61451  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaFilter
 61452  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 36)) = schemaNext
 61453  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaEof
 61454  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 44)) = schemaColumn
 61455  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaRowid
 61456  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 8)) = seriesConnect
 61457  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 12)) = seriesBestIndex
 61458  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesDisconnect
 61459  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesOpen
 61460  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 28)) = seriesClose
 61461  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesFilter
 61462  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 36)) = seriesNext
 61463  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 40)) = seriesEof
 61464  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 44)) = seriesColumn
 61465  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesRowid
 61466  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 4)) = spellfix1Create
 61467  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Connect
 61468  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 12)) = spellfix1BestIndex
 61469  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Disconnect
 61470  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 20)) = spellfix1Destroy
 61471  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1Open
 61472  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 28)) = spellfix1Close
 61473  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Filter
 61474  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 36)) = spellfix1Next
 61475  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Eof
 61476  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 44)) = spellfix1Column
 61477  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Rowid
 61478  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 52)) = spellfix1Update
 61479  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 76)) = spellfix1Rename
 61480  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 4)) = tclConnect
 61481  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 61482  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 12)) = tclBestIndex
 61483  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclDisconnect
 61484  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 20)) = tclDisconnect
 61485  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclOpen
 61486  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 28)) = tclClose
 61487  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclFilter
 61488  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 36)) = tclNext
 61489  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclEof
 61490  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 44)) = tclColumn
 61491  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclRowid
 61492  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 4)) = tclvarConnect
 61493  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 61494  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 12)) = tclvarBestIndex
 61495  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarDisconnect
 61496  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 20)) = tclvarDisconnect
 61497  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarOpen
 61498  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 28)) = tclvarClose
 61499  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarFilter
 61500  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 36)) = tclvarNext
 61501  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarEof
 61502  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 44)) = tclvarColumn
 61503  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarRowid
 61504  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 52)) = tclvarUpdate
 61505  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 4)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 61506  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = testpcacheInit
 61507  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 12)) = testpcacheShutdown
 61508  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheCreate
 61509  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 20)) = testpcacheCachesize
 61510  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcachePagecount
 61511  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 28)) = testpcacheFetch
 61512  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheUnpin
 61513  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 36)) = testpcacheRekey
 61514  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheTruncate
 61515  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 44)) = testpcacheDestroy
 61516  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 4)) = tmpClose
 61517  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpRead
 61518  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 12)) = tmpWrite
 61519  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpTruncate
 61520  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 20)) = tmpSync
 61521  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpFileSize
 61522  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 28)) = tmpLock
 61523  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpUnlock
 61524  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 36)) = tmpCheckReservedLock
 61525  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpFileControl
 61526  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 44)) = tmpSectorSize
 61527  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpDeviceCharacteristics
 61528  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 4)) = tvfsClose
 61529  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsRead
 61530  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 12)) = tvfsWrite
 61531  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsTruncate
 61532  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 20)) = tvfsSync
 61533  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsFileSize
 61534  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 28)) = tvfsLock
 61535  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsUnlock
 61536  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 36)) = tvfsCheckReservedLock
 61537  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsFileControl
 61538  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 44)) = tvfsSectorSize
 61539  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsDeviceCharacteristics
 61540  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 52)) = tvfsShmMap
 61541  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsShmLock
 61542  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 60)) = tvfsShmBarrier
 61543  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsShmUnmap
 61544  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 68)) = tvfsFetch
 61545  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsUnfetch
 61546  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 24)) = tvfsOpen
 61547  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 28)) = tvfsDelete
 61548  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 32)) = tvfsAccess
 61549  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 36)) = tvfsFullPathname
 61550  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsRandomness
 61551  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 60)) = tvfsSleep
 61552  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsCurrentTime
 61553  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 4)) = unionConnect
 61554  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 61555  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 12)) = unionBestIndex
 61556  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionDisconnect
 61557  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 20)) = unionDisconnect
 61558  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionOpen
 61559  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 28)) = unionClose
 61560  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionFilter
 61561  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 36)) = unionNext
 61562  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionEof
 61563  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 44)) = unionColumn
 61564  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionRowid
 61565  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 4)) = vfslogClose
 61566  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogRead
 61567  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 12)) = vfslogWrite
 61568  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogTruncate
 61569  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 20)) = vfslogSync
 61570  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogFileSize
 61571  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 28)) = vfslogLock
 61572  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogUnlock
 61573  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 36)) = vfslogCheckReservedLock
 61574  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogFileControl
 61575  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 44)) = vfslogSectorSize
 61576  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogDeviceCharacteristics
 61577  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 52)) = vfslogShmMap
 61578  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogShmLock
 61579  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 60)) = vfslogShmBarrier
 61580  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogShmUnmap
 61581  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 4)) = vlogConnect
 61582  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 61583  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 12)) = vlogBestIndex
 61584  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogDisconnect
 61585  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 20)) = vlogDisconnect
 61586  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogOpen
 61587  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 28)) = vlogClose
 61588  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogFilter
 61589  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 36)) = vlogNext
 61590  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogEof
 61591  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 44)) = vlogColumn
 61592  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogRowid
 61593  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 24)) = vfslogOpen
 61594  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 28)) = vfslogDelete
 61595  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 32)) = vfslogAccess
 61596  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 36)) = vfslogFullPathname
 61597  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogDlOpen
 61598  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 44)) = vfslogDlError
 61599  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDlSym
 61600  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 52)) = vfslogDlClose
 61601  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogRandomness
 61602  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 60)) = vfslogSleep
 61603  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogCurrentTime
 61604  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 68)) = vfslogGetLastError
 61605  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogCurrentTimeInt64
 61606  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 4)) = wholenumberConnect
 61607  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 61608  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 12)) = wholenumberBestIndex
 61609  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberDisconnect
 61610  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 20)) = wholenumberDisconnect
 61611  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberOpen
 61612  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 28)) = wholenumberClose
 61613  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberFilter
 61614  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 36)) = wholenumberNext
 61615  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberEof
 61616  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 44)) = wholenumberColumn
 61617  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberRowid
 61618  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 4)) = devsymClose
 61619  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymRead
 61620  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 12)) = writecrashWrite
 61621  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymTruncate
 61622  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 20)) = devsymSync
 61623  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = devsymFileSize
 61624  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 28)) = devsymLock
 61625  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymUnlock
 61626  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 36)) = devsymCheckReservedLock
 61627  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymFileControl
 61628  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 44)) = writecrashSectorSize
 61629  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = writecrashDeviceCharacteristics
 61630  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 52)) = devsymShmMap
 61631  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymShmLock
 61632  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 60)) = devsymShmBarrier
 61633  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymShmUnmap
 61634  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 24)) = writecrashOpen
 61635  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 28)) = devsymDelete
 61636  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 32)) = devsymAccess
 61637  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 36)) = devsymFullPathname
 61638  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymRandomness
 61639  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 60)) = devsymSleep
 61640  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymCurrentTime
 61641  }
 61642  
 61643  var ts1 = "%s\x00internal error!\x00SELECT * FROM main.%Q WHERE sample()\x00expert\x00PRAGMA table_xinfo=%Q\x00main\x00binary\x00, \x00%Q\x00 COLLATE %Q\x00 COLLATE %s\x00 DESC\x00PRAGMA index_list=%Q\x00PRAGMA index_xInfo=%Q\x00%s_idx_%08x\x00SELECT count(*) FROM sqlite_schema WHERE name=%Q AND type in ('index','table','view')\x00CREATE INDEX \"%w\" ON \"%w\"(%s)\x00CREATE INDEX %s ON %s(%s)\x00EXPLAIN QUERY PLAN %s\x00 USING INDEX \x00 USING COVERING INDEX \x00%s\n\x00%s;\n\x00SELECT 'CREATE TEMP' || substr(sql, 7) FROM sqlite_schema WHERE tbl_name = %Q AND type IN ('table', 'trigger') ORDER BY type;\x00ALTER TABLE temp.%Q RENAME TO %Q\x00INSERT INTO %Q VALUES(\x00%s?\x00\x00)\x00UPDATE %Q SET \x00%s%Q=?\x00DELETE FROM %Q\x00t592690916721053953805701627921227776\x00DROP TABLE t592690916721053953805701627921227776\x00SELECT type, name, sql, 1 FROM sqlite_schema WHERE type IN ('table','view') AND name NOT LIKE 'sqlite_%%'  UNION ALL SELECT type, name, sql, 2 FROM sqlite_schema WHERE type = 'trigger'  AND tbl_name IN(SELECT name FROM sqlite_schema WHERE type = 'view') ORDER BY 4, 1\x00CREATE TABLE x(\x00%s%Q COLLATE %s\x00CREATE VIRTUAL TABLE %Q USING expert(%Q)\x00SELECT max(i.seqno) FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l,   pragma_index_info(l.name) AS i WHERE s.type = 'table'\x00%sx.%Q IS rem(%d, x.%Q) COLLATE %s\x00%s%d\x00SELECT %s FROM %Q x ORDER BY %s\x00SELECT %s FROM temp.t592690916721053953805701627921227776 x ORDER BY %s\x00%d\x00 %d\x00DROP TABLE IF EXISTS temp.t592690916721053953805701627921227776\x00CREATE TABLE temp.t592690916721053953805701627921227776 AS SELECT * FROM %Q\x00SELECT s.rowid, s.name, l.name FROM   sqlite_schema AS s,   pragma_index_list(s.name) AS l WHERE s.type = 'table'\x00SELECT name, coll FROM pragma_index_xinfo(?) WHERE key\x00INSERT INTO sqlite_stat1 VALUES(?, ?, ?)\x00ANALYZE; PRAGMA writable_schema=1\x00rem\x00sample\x00ANALYZE sqlite_schema\x00:memory:\x00SELECT sql FROM sqlite_schema WHERE name NOT LIKE 'sqlite_%%' AND sql NOT LIKE 'CREATE VIRTUAL %%'\x00Cannot find a unique index name to propose.\x00%s;%s%s\n\x00 -- stat1: \x00no such handle: \x00sql\x00TABLE\x00analyze\x00count\x00report\x00STMT EREPORT\x00destroy\x00SUBCOMMAND ...\x00sub-command\x00indexes\x00plan\x00candidates\x00DB\x00sqlite3expert%d\x00out of memory\x00sqlite3_expert_new\x00SQLITE_DONE\x00SQLITE_ERROR\x00SQLITE_OK\x00SELECT fts5(?1)\x00error: \x00fts5_api_ptr\x00f5t_2_%lld\x00xColumnCount\x00xRowCount\x00xColumnTotalSize\x00COL\x00xTokenize\x00TEXT SCRIPT\x00xPhraseCount\x00xPhraseSize\x00PHRASE\x00xInstCount\x00xInst\x00IDX\x00xRowid\x00xColumnText\x00xColumnSize\x00xQueryPhrase\x00PHRASE SCRIPT\x00xSetAuxdata\x00VALUE\x00xGetAuxdata\x00CLEAR\x00xSetAuxdataInt\x00INTEGER\x00xGetAuxdataInt\x00xPhraseForeach\x00IPHRASE COLVAR OFFVAR SCRIPT\x00xPhraseColumnForeach\x00IPHRASE COLVAR SCRIPT\x00SUB-COMMAND\x00f5t_%lld\x00bytearray\x00boolean\x00double\x00wideInt\x00int\x00DB NAME SCRIPT\x00?-subst? DB NAME TEXT\x00-subst\x00unrecognized option: \x00no such tokenizer: \x00error in tokenizer.xCreate()\x00error in tokenizer.xTokenize()\x00document\x00aux\x00query\x00prefixquery\x00invalid\x00-colocated\x00sqlite3_fts5_token may only be used by tokenizer callback\x00?-colocated? TEXT START END\x00error in fts5_api.xCreateTokenizer()\x00NSLOT TOKEN\x00sqlite3_fts5_create_tokenizer\x00sqlite3_fts5_token\x00sqlite3_fts5_tokenize\x00sqlite3_fts5_create_function\x00sqlite3_fts5_may_be_corrupt\x00sqlite3_fts5_token_hash\x00sqlite3_fts5_register_matchinfo\x00sqlite3_fts5_register_fts5tokenize\x00unrecognized matchinfo flag: %c\x00pcx\x00matchinfo\x00CREATE TABLE x(input HIDDEN, token, start, end, position)\x00fts5tokenize\x00apndvfs\x00Start-Of-SQLite3-\x00apnd(%lld)/%z\x00SQLite format 3\x00%s: cost must be between 1 and %d\x00%s: maximum string length is %d\x00%s: iLang must be between 0 and %d\x00?\x00SELECT * FROM %Q.%Q\x00%s: %s\x00%s: %s has %d columns, expected 4\x00vocabulary_table\x00vocabulary_word\x00vocabulary_language\x00edit_distances\x00unrecognized argument: [%s]\n\x00no edit_distances table specified\x00CREATE TABLE x(word,distance,language,command HIDDEN,nword HIDDEN)\x000123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ^abcdefghijklmnopqrstuvwxyz~\x00SELECT \"%w\" FROM \"%w\"\x00 WHERE \"%w\">=?1 AND \"%w\"=?2 ORDER BY 1\x00SELECT \"%w\" FROM \"%w\" WHERE \"%w\">=?1 ORDER BY 1\x00*\x00DELETE from %s is not allowed\x00UPDATE of %s is not allowed\x00INSERT INTO %s allowed for column [command] only\x00approximate_match\x00int32\x00int64\x00char*\x00CREATE TABLE x(value,pointer hidden,count hidden,ctype hidden)\x00carray-bind\x00carray\x00unknown datatype: %Q\x00inttoptr\x00cksmvfs\x00ZV-\x00checksum fault offset %lld of \"%s\"\x00checksum_verification\x00enable%\x00yes\x00on\x00page_size\x00cksm/%z\x00verify_checksum\x00tablename\x00idcolumn\x00parentcolumn\x00CREATE TABLE x(id,depth,root HIDDEN,tablename HIDDEN,idcolumn HIDDEN,parentcolumn HIDDEN)\x00SELECT \"%w\".\"%w\" FROM \"%w\" WHERE \"%w\".\"%w\"=?1\x00transitive_closure\x00rb\x00cannot open '%s' for reading\x00line %d: unescaped %c character\x00line %d: unterminated %c-quoted field\n\x00more than one '%s' parameter\x00true\x00no\x00off\x00false\x00header\x00more than one 'header' parameter\x00testflags\x00columns\x00more than one 'columns' parameter\x00column= value must be positive\x00bad parameter: '%s'\x00must specify either filename= or data= but not both\x00%sc%d TEXT\x00,\x00%s\"%w\" TEXT\x00bad schema: '%s' - %s\x00filename\x00data\x00schema\x00csv\x00csv_wr\x00decimal_sum\x00decimal\x00decimal_cmp\x00decimal_add\x00decimal_sub\x00decimal_mul\x00 \x00eval\x00CREATE TABLE x(addr,opcode,p1,p2,p3,p4,p5,comment,sql HIDDEN)\x00EXPLAIN %s\x00explain\x00wb\x00wrong number of arguments to function writefile()\x00failed to create symlink: %s\x00failed to create directory: %s\x00failed to write file: %s\x00CREATE TABLE x(name,mode,mtime,data,path HIDDEN,dir HIDDEN)\x00cannot read directory: %s\x00%s/%s\x00cannot stat file: %s\x00table function fsdir requires an argument\x00table function fsdir requires a non-NULL argument\x00fsdir\x00readfile\x00writefile\x00lsmode\x00%s: ruleset must be between 0 and %d\x00%s: wrong number of CREATE VIRTUAL TABLE arguments\x00CREATE TABLE x(word,distance,ruleset)\x00fuzzer\x00ieee754(%lld,%d)\x00ieee754\x00ieee754_mantissa\x00ieee754_exponent\x00ieee754_to_blob\x00ieee754_from_blob\x00BEGIN; SELECT * FROM %s%q%ssqlite_schema\x00'\x00'.\x00PRAGMA %s%q%spage_size\x00sqlite3_mmap_warm_cache: Warmed up %d pages of %s\x00END\x00AND (%s)\x00collate \"%w\"\x00SELECT %s FROM %s WHERE %s>=(?1 || ?2) %s   AND %s<=(?1 || char(1114111)) %s   %s ORDER BY 1 %s ASC LIMIT 1\x00next_char\x00NULL\x00is\x00not\x00in(\x00in(select\x00in(with\x00?,?,?\x002nd argument to percentile() is not a number between 0.0 and 100.0\x002nd argument to percentile() is not the same for all input rows\x001st argument to percentile() is not numeric\x00Inf input to percentile()\x00percentile\x00CREATE TABLE prefixes(prefix TEXT, original_string TEXT HIDDEN)\x00prefixes\x00prefix_length\x00vn\x00ix\x00cn\x00op\x00ux\x00rhs\x00a\x00b\x00c\x00d\x00e\x00flags\x00CREATE TABLE x( vn TEXT, ix INT, cn TEXT, op INT, ux BOOLEAN, rhs TEXT, a, b, c, d, e, flags INT HIDDEN)\x00%lld\x00%!f\x00x'\x00%02x\x00nConstraint,%d,,,,\n\x00aConstraint,%d,%s,%d,%d,\x00\n\x00nOrderBy,%d,,,,\n\x00aOrderBy,%d,%s,%d,,\n\x00rowid\x00sqlite3_vtab_distinct,%d,,,,\n\x00idxFlags,%d,,,,\n\x00colUsed,%d,,,,\n\x00idxNum,%d,,,,\n\x00orderByConsumed,%d,,,,\n\x00qpvtab\x00unknown \\ escape\x00afnrtv\\()*.+?[$^{|}]\x00\a\f\n\r\t\v\x00unmatched '('\x00'*' without operand\x00'+' without operand\x00'?' without operand\x00'{m,n}' without operand\x00unmatched '{'\x00n less than m in '{m,n}'\x00both m and n are zero in '{m,n}'\x00POSIX character classes not supported\x00unclosed '['\x00unrecognized character\x00regexp\x00regexpi\x00remember\x00CREATE TABLE x(value,start hidden,stop hidden,step hidden)\x00first argument to \"generate_series()\" missing or unusable\x00generate_series() requires SQLite 3.8.12 or later\x00generate_series\x00.ABCDHLRMY9 ?\x00non-ASCII input to editdist()\x00NULL input to editdist()\x00SELECT iLang, cFrom, cTo, iCost FROM \"%w\" WHERE iLang>=0 ORDER BY iLang\x00editdist3\x00DROP TABLE IF EXISTS \"%w\".\"%w_vocab\"\x00CREATE TABLE x(word,rank,distance,langid, score, matchlen, phonehash HIDDEN, top HIDDEN, scope HIDDEN, srchcnt HIDDEN, soundslike HIDDEN, command HIDDEN)\x00CREATE TABLE IF NOT EXISTS \"%w\".\"%w_vocab\"(\n  id INTEGER PRIMARY KEY,\n  rank INT,\n  langid INT,\n  word TEXT,\n  k1 TEXT,\n  k2 TEXT\n);\n\x00CREATE INDEX IF NOT EXISTS \"%w\".\"%w_vocab_index_langid_k2\" ON \"%w_vocab\"(langid,k2);\x00edit_cost_table=\x00bad argument to spellfix1(): \"%s\"\x00SELECT id, word, rank, coalesce(k1,word)  FROM \"%w\".\"%w_vocab\" WHERE langid=%d AND k2>=?1 AND k2<?2\x00SELECT word, rank, NULL, langid, id FROM \"%w\".\"%w_vocab\"%s\x00 WHERE rowid=?\x00ROLLBACK\x00IGNORE\x00ABORT\x00REPLACE\x00DELETE FROM \"%w\".\"%w_vocab\"  WHERE id=%lld\x00NOT NULL constraint failed: %s.word\x00reset\x00null\x00unknown value for %s.command: \"%w\"\x00INSERT INTO \"%w\".\"%w_vocab\"(rank,langid,word,k1,k2) VALUES(%d,%d,%Q,nullif(%Q,%Q),%Q)\x00INSERT OR %s INTO \"%w\".\"%w_vocab\"(id,rank,langid,word,k1,k2) VALUES(%lld,%d,%d,%Q,nullif(%Q,%Q),%Q)\x00UPDATE OR %s \"%w\".\"%w_vocab\" SET id=%lld, rank=%d, langid=%d, word=%Q, k1=nullif(%Q,%Q), k2=%Q WHERE id=%lld\x00ALTER TABLE \"%w\".\"%w_vocab\" RENAME TO \"%w_vocab\"\x00spellfix1_translit\x00spellfix1_editdist\x00spellfix1_phonehash\x00spellfix1_scriptcode\x00spellfix1\x00922337203685477580\x00tointeger\x00toreal\x00sql error: %s\x00_rowid_\x00integer\x00no such rowid table: %s%s%s\x00.\x00SELECT group_concat(quote(name) || '.' || quote(type)) FROM pragma_table_info(?, ?)\x00source table schema mismatch\x00swarmvtab: no such SQL parameter: %s\x00maxopen\x00swarmvtab: illegal maxopen value\x00missing\x00swarmvtab: duplicate \"missing\" option\x00SELECT \"%w\"(?%s)\x00,?\x00openclose\x00swarmvtab: duplicate \"openclose\" option\x00SELECT \"%w\"(?,?%s)\x00swarmvtab: unrecognized option: %s\x00SELECT \"%w\"(?)\x00swarmvtab: parse error: %s\x00swarmvtab\x00unionvtab\x00temp\x00%s tables must be created in TEMP schema\x00wrong number of arguments for %s\x00SELECT * FROM (%z) ORDER BY 3\x00rowid range mismatch error\x00no source tables configured\x00SELECT 'CREATE TABLE xyz('    || group_concat(quote(name) || ' ' || type, ', ')    || ')',max((cid+1) * (type='INTEGER' COLLATE nocase AND pk=1))-1 FROM pragma_table_info(%Q, ?)\x00SELECT rowid, * FROM %Q %s %lld\x00WHERE _rowid_ <=\x00-- \x00%z%sSELECT rowid, * FROM %s%q%s%Q\x00 UNION ALL \x00%z WHERE rowid=%lld\x00WHERE\x00%z WHERE rowid>=%lld\x00AND\x00%z %s rowid<=%lld\x00CREATE TABLE x(value)\x00wholenumber\x00rbu_delta\x00step\x00close\x00create_rbu_delta\x00savestate\x00dbMain_eval\x00SQL\x00bp_progress\x00db\x00RBU\x00state\x00progress\x00close_no_error\x00temp_size_limit\x00LIMIT\x00temp_size\x00dbRbu_eval\x00METHOD\x00method\x00 - \x00oal\x00move\x00checkpoint\x00done\x00error\x00NAME TARGET-DB RBU-DB ?STATE-DB?\x00NAME TARGET-DB ?STATE-DB?\x00?-default? NAME PARENT\x00NAME\x00sqlite3rbu_db(0, 0)!=0\x00sqlite3rbu\x00sqlite3rbu_vacuum\x00sqlite3rbu_create_vfs\x00sqlite3rbu_destroy_vfs\x00sqlite3rbu_internal_test\x00%p\x00zero\x00user\x00user_is_zero\x00box\x00DB SCRIPT\x00partly\x00fully\x00aParam\x00aCoord\x00anQueue\x00iLevel\x00mxLevel\x00iRowid\x00rParentScore\x00eParentWithin\x00value\x00qbox\x00register_box_geom\x00register_box_query\x00DB SQL\x00error in sql_exec_changeset()\x00sqlite3session_streams\x00attach\x00changeset\x00delete\x00enable\x00BOOL\x00indirect\x00isempty\x00table_filter\x00SCRIPT\x00patchset\x00diff\x00FROMDB TBL\x00memory_used\x00changeset_size\x00object_config_size\x00CMD DB-HANDLE DB-NAME\x00n\x00i\x00f\x00t\x00FOREIGN_KEY\x00INSERT\x00UPDATE\x00DELETE\x00DATA\x00NOTFOUND\x00CONFLICT\x00CONSTRAINT\x00OMIT\x00-nosavepoint\x00-invert\x00?-nosavepoint? ?-inverse? DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET CONFLICT-SCRIPT ?FILTER-SCRIPT?\x00DB CHANGESET\x00CHANGESET\x00LEFT RIGHT\x00-next\x00?-next? ?-invert? VARNAME CHANGESET SCRIPT\x00configure\x00REBASE-BLOB\x00rebase\x00OP VALUE\x00strm_size\x00sqlite3session\x00sqlite3session_foreach\x00sqlite3changeset_invert\x00sqlite3changeset_concat\x00sqlite3changeset_apply\x00sqlite3changeset_apply_v2\x00sqlite3changeset_apply_replace_all\x00sql_exec_changeset\x00sqlite3rebaser_create\x00sqlite3session_config\x00incrblob\x00incrblob_%d\x00sqlite_unlock_notify_arg\x00sqlite_unlock_notify_argcount\x00SQLITE_COPY\x00SQLITE_CREATE_INDEX\x00SQLITE_CREATE_TABLE\x00SQLITE_CREATE_TEMP_INDEX\x00SQLITE_CREATE_TEMP_TABLE\x00SQLITE_CREATE_TEMP_TRIGGER\x00SQLITE_CREATE_TEMP_VIEW\x00SQLITE_CREATE_TRIGGER\x00SQLITE_CREATE_VIEW\x00SQLITE_DELETE\x00SQLITE_DROP_INDEX\x00SQLITE_DROP_TABLE\x00SQLITE_DROP_TEMP_INDEX\x00SQLITE_DROP_TEMP_TABLE\x00SQLITE_DROP_TEMP_TRIGGER\x00SQLITE_DROP_TEMP_VIEW\x00SQLITE_DROP_TRIGGER\x00SQLITE_DROP_VIEW\x00SQLITE_INSERT\x00SQLITE_PRAGMA\x00SQLITE_READ\x00SQLITE_SELECT\x00SQLITE_TRANSACTION\x00SQLITE_UPDATE\x00SQLITE_ATTACH\x00SQLITE_DETACH\x00SQLITE_ALTER_TABLE\x00SQLITE_REINDEX\x00SQLITE_ANALYZE\x00SQLITE_CREATE_VTABLE\x00SQLITE_DROP_VTABLE\x00SQLITE_FUNCTION\x00SQLITE_SAVEPOINT\x00SQLITE_RECURSIVE\x00????\x00SQLITE_DENY\x00SQLITE_IGNORE\x00RELEASE _tcl_transaction\x00COMMIT\x00ROLLBACK TO _tcl_transaction ; RELEASE _tcl_transaction\x00option\x00?CALLBACK?\x00?DATABASE? FILENAME\x00cannot open target database: \x00backup failed: \x00CALLBACK\x00cache option ?arg?\x00flush\x00size\x00size n\x00cannot convert \"\x00\" to integer\x00bad option \"\x00\": must be flush or size\x00NAME SCRIPT\x00?OPTION? ?BOOLEAN?\x00unknown config option: \"\x00\"\x00CONFLICT-ALGORITHM TABLE FILENAME ?SEPARATOR? ?NULLINDICATOR?\x00\t\x00Error: non-null separator required for copy\x00rollback\x00abort\x00fail\x00ignore\x00replace\x00Error: \"\x00\", conflict-algorithm must be one of: rollback, abort, fail, ignore, or replace\x00SELECT * FROM '%q'\x00Error: no such table: \x00Error: \x00Error: can't malloc()\x00INSERT OR %q INTO '%q' VALUES(?\x00Error: cannot open file: \x00BEGIN\x00Error: %s line %d: expected %d columns of data but found %d\x00, failed while processing line: \x00?DATABASE? VALUE\x00-maxsize\x00-readonly\x00unknown option: \x00unable to set MEMDB content\x00extension loading is turned off at compile-time\x00-withoutnulls\x00unknown option: \"\x00?OPTIONS? SQL ?ARRAY-NAME? ?SCRIPT?\x00NAME ?SWITCHES? SCRIPT\x00-argcount\x00option requires an argument: \x00number of arguments must be non-negative\x00-deterministic\x00-directonly\x00-innocuous\x00-returntype\x00real\x00text\x00blob\x00any\x00type\x00\": must be -argcount, -deterministic, -directonly, -innocuous, or -returntype\x00?-readonly? ?DB? TABLE COLUMN ROWID\x00NULLVALUE\x00N CALLBACK\x00KEY\x00cannot open source database: \x00restore failed: \x00restore failed: source database busy\x00?DATABASE?\x00(step|sort|autoindex)\x00sort\x00autoindex\x00vmstep\x00bad argument: should be autoindex, step, sort or vmstep\x00MILLISECONDS\x00?CALLBACK? ?MASK?\x00trace type\x00SAVEPOINT _tcl_transaction\x00[TYPE] SCRIPT\x00transaction type\x00BEGIN EXCLUSIVE\x00BEGIN IMMEDIATE\x00?SCRIPT?\x00SUB-COMMAND ?ARGS?\x00hook ?SCRIPT?\x00INDEX\x00-use-legacy-prepare\x00-last-stmt-ptr\x00unknown argument: \x00authorizer\x00backup\x00bind_fallback\x00busy\x00cache\x00changes\x00collate\x00collation_needed\x00commit_hook\x00complete\x00config\x00copy\x00deserialize\x00enable_load_extension\x00errorcode\x00erroroffset\x00exists\x00function\x00interrupt\x00last_insert_rowid\x00nullvalue\x00onecolumn\x00preupdate\x00profile\x00rekey\x00restore\x00rollback_hook\x00serialize\x00status\x00timeout\x00total_changes\x00trace\x00trace_v2\x00transaction\x00unlock_notify\x00update_hook\x00version\x00wal_hook\x00defensive\x00dqs_ddl\x00dqs_dml\x00enable_fkey\x00enable_qpsg\x00enable_trigger\x00enable_view\x00fts3_tokenizer\x00legacy_alter_table\x00legacy_file_format\x00load_extension\x00no_ckpt_on_close\x00reset_database\x00trigger_eqp\x00trusted_schema\x00writable_schema\x00statement\x00row\x00deferred\x00exclusive\x00immediate\x00depth\x00hook\x00new\x00old\x00HANDLE ?FILENAME? ?-vfs VFSNAME? ?-readonly BOOLEAN? ?-create BOOLEAN? ?-nofollow BOOLEAN? ?-nomutex BOOLEAN? ?-fullmutex BOOLEAN? ?-uri BOOLEAN?\x00-version\x00-sourceid\x00-has-codec\x000\x00-key\x00-vfs\x00-create\x00-nofollow\x00-nomutex\x00-fullmutex\x00-uri\x00-translatefilename\x00sqlite3\x00sqlite\x003.39.3\x00if {[llength $argv]>=1} {\nset argv0 [lindex $argv 0]\nset argv [lrange $argv 1 end]\nsource $argv0\n} else {\nset line {}\nwhile {![eof stdin]} {\nif {$line!=\"\"} {\nputs -nonewline \"> \"\n} else {\nputs -nonewline \"% \"\n}\nflush stdout\nappend line [gets stdin]\nif {[info complete $line]} {\nif {[catch {uplevel #0 $line} result]} {\nputs stderr \"Error: $result\"\n} elseif {$result!=\"\"} {\nputs $result\n}\nset line {}\n} else {\nappend line \\n\n}\n}\n}\n\x00SQLITE_DEBUG_BREAK\x00attach debugger to process %d and press any key to continue.\n\x00utf-8\x00argc\x00argv0\x00argv\x00errorInfo\x00%s: %s\n\x00SQLITE-CONNECTION\x00command not found: \x00error code %s (%d) does not match sqlite3_errcode %s (%d)\x00OMIT_MISUSE\x00wrong # args: should be \"\x00 DB FORMAT STRING\x00 DB HEX\x00 DB\x00 DB SQL\x00%z%s%s\x00%s%n\x00abcdefghijklmnopqrstuvwxyz\x00 DB FORMAT STRING ?COUNT?\x00 DB\"\x00 FILENAME\"\x00%04x\x00tkt2213 is not fixed\x00text16\x00bytes\x00bytes16\x00noop\x00x_coalesce\x00hex8\x00hex16\x00tkt2213func\x00pointer_change\x00counter1\x00counter2\x00intreal\x00x_sqlite_exec\x00value of 40 handed to x_count\x00x_count totals to 42\x00x_count\x00legacy_count\x00 TEXT\"\x00 FORMAT INT INT INT\"\x00argument is not a valid 64-bit integer\x00 FORMAT INT INT ?STRING?\"\x00 INT FORMAT INT INT ?STRING?\"\x00N must be non-negative\x00 FORMAT INT INT DOUBLE\"\x00 FORMAT DOUBLE DOUBLE\"\x00 FORMAT STRING\"\x00%08x%08x\x002nd argument should be 16-characters of hex\x00?BOOLEAN?\x00DB BOOLEAN\x00DB dbname tblname colname\x00CHANNEL ROWID\x00DB-HANDLE NAME CMP-PROC DEL-PROC\x00sqlite3_create_collate_v2() failed to detect an invalid encoding\x00utf8\x00utf16\x00utf16le\x00utf16be\x00DB NAME NARG ENC SWITCHES...\x00encoding\x00-func\x00-step\x00-final\x00-destroy\x00switch\x00DB-HANDLE FILE ?PROC?\x00this build omits sqlite3_load_extension()\x00DB-HANDLE ONOFF\x00string\x00first argument should be one of: int int64 string double null value\x00 DB FUNCTION-NAME\x00 <STMT>\x00STMT PARAMETER RESETFLAG\x00SQLITE_STMTSTATUS_FULLSCAN_STEP\x00SQLITE_STMTSTATUS_SORT\x00SQLITE_STMTSTATUS_AUTOINDEX\x00SQLITE_STMTSTATUS_VM_STEP\x00SQLITE_STMTSTATUS_REPREPARE\x00SQLITE_STMTSTATUS_RUN\x00SQLITE_STMTSTATUS_MEMUSED\x00NBYTE\x00DB DBNAME\x00DB DBNAME SNAPSHOT\x00SNAPSHOT\x00SNAPSHOT1 SNAPSHOT2\x00bad SNAPSHOT\x00FILE\x00PATH\x00 DB STMT\x00 STMT\x00 FROM-STMT TO-STMT\x00 VM IDX VALUE (null|static|normal)\"\x00static\x00static-nbytes\x00normal\x00blob10\x00abc\x00xyz\x00pq\x004th argument should be \"null\" or \"static\" or \"normal\"\x00(%d) \x00test_collate\x00UTF-8\x00UTF-16LE\x00UTF-16BE\x00 <DB> <utf8> <utf16le> <utf16be>\x00utf16bin\x00utf16_unaligned\x00utf16_aligned\x00test_function\x00<error code>\x00STMT IDX N\x00 STMT N VALUE\x00NaN\x00SNaN\x00-NaN\x00-SNaN\x00+Inf\x00-Inf\x00Epsilon\x00-Epsilon\x00NaN0\x00-NaN0\x00 STMT N\x00 STMT N VALUE BYTES\x00 STMT N DATA BYTES\x00cannot use %d blob bytes, have %d\x00STMT N NEW|OLD IDX\x00expected new or old, got: \x00STMT N SELECT\x00error in SQL: \x00error runnning SQL: \x00-transient\x00-static\x00-int32\x00-int64\x00-double\x00-text\x00--\x00text data must be either -static or -transient\x00cannot be both -static and -transient\x00[OPTIONS] STMT IDX VALUE ...\x00STMT\x00STMT N\x00STMT NAME\x00 DB sql bytes ?tailvar?\x00 DB sql bytes tailvar\x00 DB sql bytes flags tailvar\x00\x00SELECT 1\x00 filename options-list\x00FILENAME FLAGS VFS\x00SQLITE_OPEN_READONLY\x00SQLITE_OPEN_READWRITE\x00SQLITE_OPEN_CREATE\x00SQLITE_OPEN_DELETEONCLOSE\x00SQLITE_OPEN_EXCLUSIVE\x00SQLITE_OPEN_AUTOPROXY\x00SQLITE_OPEN_MAIN_DB\x00SQLITE_OPEN_TEMP_DB\x00SQLITE_OPEN_TRANSIENT_DB\x00SQLITE_OPEN_MAIN_JOURNAL\x00SQLITE_OPEN_TEMP_JOURNAL\x00SQLITE_OPEN_SUBJOURNAL\x00SQLITE_OPEN_SUPER_JOURNAL\x00SQLITE_OPEN_NOMUTEX\x00SQLITE_OPEN_FULLMUTEX\x00SQLITE_OPEN_SHAREDCACHE\x00SQLITE_OPEN_PRIVATECACHE\x00SQLITE_OPEN_WAL\x00SQLITE_OPEN_URI\x00SQLITE_OPEN_EXRESCODE\x00flag\x00<utf-16 sql>\x00 STMT column\x00FLOAT\x00TEXT\x00BLOB\x00 DB function-name\x00VARIABLE\x00?N?\x001234567890000000\x00__one\x00__two\x00notadatabase\x00Unexpected non-zero errno: \x00DB [DBNAME]\x00%u\x00DB DBNAME SIZE\x00 DB PWD\x00 DB FLAG\x00%d %d\x00 DB ?AUXDB?\x00DB N\x00 DB ID VALUE\x00unknown limit type: \x00SQLITE_LIMIT_LENGTH\x00SQLITE_LIMIT_SQL_LENGTH\x00SQLITE_LIMIT_COLUMN\x00SQLITE_LIMIT_EXPR_DEPTH\x00SQLITE_LIMIT_COMPOUND_SELECT\x00SQLITE_LIMIT_VDBE_OP\x00SQLITE_LIMIT_FUNCTION_ARG\x00SQLITE_LIMIT_ATTACHED\x00SQLITE_LIMIT_LIKE_PATTERN_LENGTH\x00SQLITE_LIMIT_VARIABLE_NUMBER\x00SQLITE_LIMIT_TRIGGER_DEPTH\x00SQLITE_LIMIT_WORKER_THREADS\x00SQLITE_LIMIT_TOOSMALL\x00SQLITE_LIMIT_TOOBIG\x00SEED ?DB?\x00BOOLEAN\x00current\x00max\x00min\x00recyclable\x00DB ?NAME?\x00passive\x00full\x00restart\x00truncate\x00DB MODE ?NAME?\x00mode\x00DB VALUE\x00COMMAND ...\x00command has no objProc: \x00%d %d %d %s\n\x00SQLITE_TESTCTRL_LOCALTIME_FAULT\x00SQLITE_TESTCTRL_SORTER_MMAP\x00SQLITE_TESTCTRL_IMPOSTER\x00SQLITE_TESTCTRL_INTERNAL_FUNCTIONS\x00VERB ARGS...\x00VERB\x000|1|2\x00DB LIMIT\x00DB dbName onOff tnum\x00ru_utime=%d.%06d ru_stime=%d.%06d ru_minflt=%d ru_majflt=%d\x00DB OPT BOOLEAN\x00unknown optimization - should be one of:\x00all\x00none\x00query-flattener\x00groupby-order\x00factor-constants\x00distinct-opt\x00cover-idx-scan\x00order-by-idx-join\x00transitive\x00omit-noop-join\x00stat4\x00skip-scan\x00push-down\x00balanced-merge\x00DB NAME ...\x00no such extension: \x00initialization of \x00 failed: \x00amatch\x00appendvfs\x00closure\x00fileio\x00nextchar\x00series\x00spellfix\x00totype\x00DB SQL1 NSTEP SQL2\x00data error: (a!=b)\x00checksum mismatch\x00sql error: \x00TYPE\x00Deliberate panic\x00DB SETTING [VALUE]\x00SQLITE_*\x00DBCONFIG_*\x00ENABLE_*\x00unknown sqlite3_db_config setting\x00FKEY\x00TRIGGER\x00FTS3_TOKENIZER\x00LOAD_EXTENSION\x00NO_CKPT_ON_CLOSE\x00QPSG\x00TRIGGER_EQP\x00RESET_DB\x00DEFENSIVE\x00WRITABLE_SCHEMA\x00LEGACY_ALTER_TABLE\x00DQS_DML\x00DQS_DDL\x00LEGACY_FILE_FORMAT\x00DB ?SCHEMA?\x00icecube\x00DB ?DBNAME?\x00DB OFFSET DATA\x00HEXDB\x00| size %d pagesize %d\x00bad 'pagesize' field\x00bad 'size' field\x00| page %d offset %d\x00| %d: %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x %x\x00DB ?SCRIPT?\x00sqlite3_autovacuum_pages() returns %d\x00sqlite_search_count\x00sqlite_found_count\x00sqlite_sort_count\x00sqlite3_max_blobsize\x00sqlite_like_count\x00sqlite_interrupt_count\x00sqlite_open_file_count\x00sqlite_current_time\x00sqlite3_xferopt_count\x00sqlite3_pager_readdb_count\x00sqlite3_pager_writedb_count\x00sqlite3_pager_writej_count\x00unaligned_string_counter\x00sqlite_last_needed_collation\x00sqlite_query_plan\x00sqlite_opentemp_count\x00sqlite_static_bind_value\x00sqlite_static_bind_nbyte\x00sqlite_temp_directory\x00sqlite_data_directory\x00bitmask_size\x00longdouble_size\x00sqlite_sync_count\x00sqlite_fullsync_count\x00db_enter\x00db_leave\x00sqlite3_mprintf_int\x00sqlite3_mprintf_int64\x00sqlite3_mprintf_long\x00sqlite3_mprintf_str\x00sqlite3_snprintf_str\x00sqlite3_mprintf_stronly\x00sqlite3_mprintf_double\x00sqlite3_mprintf_scaled\x00sqlite3_mprintf_hexdouble\x00sqlite3_mprintf_z_test\x00sqlite3_mprintf_n_test\x00sqlite3_snprintf_int\x00sqlite3_last_insert_rowid\x00sqlite3_exec_printf\x00sqlite3_exec_hex\x00sqlite3_exec\x00sqlite3_exec_nr\x00sqlite3_get_table_printf\x00sqlite3_close\x00sqlite3_close_v2\x00sqlite3_create_function\x00sqlite3_create_aggregate\x00sqlite3_drop_modules\x00sqlite_register_test_function\x00sqlite_abort\x00sqlite_bind\x00breakpoint\x00sqlite3_key\x00sqlite3_rekey\x00sqlite3_interrupt\x00sqlite_delete_function\x00sqlite_delete_collation\x00sqlite3_get_autocommit\x00sqlite3_busy_timeout\x00printf\x00sqlite3IoTrace\x00clang_sanitize_address\x00sqlite3_db_config\x00sqlite3_txn_state\x00bad_behavior\x00register_dbstat_vtab\x00sqlite3_connection_pointer\x00intarray_addr\x00int64array_addr\x00doublearray_addr\x00textarray_addr\x00sqlite3_bind_int\x00sqlite3_bind_zeroblob\x00sqlite3_bind_zeroblob64\x00sqlite3_bind_int64\x00sqlite3_bind_double\x00sqlite3_bind_null\x00sqlite3_bind_text\x00sqlite3_bind_text16\x00sqlite3_bind_blob\x00sqlite3_bind_value_from_select\x00sqlite3_bind_value_from_preupdate\x00sqlite3_carray_bind\x00sqlite3_bind_parameter_count\x00sqlite3_bind_parameter_name\x00sqlite3_bind_parameter_index\x00sqlite3_clear_bindings\x00sqlite3_sleep\x00sqlite3_errcode\x00sqlite3_extended_errcode\x00sqlite3_errmsg\x00sqlite3_error_offset\x00sqlite3_errmsg16\x00sqlite3_open\x00sqlite3_open16\x00sqlite3_open_v2\x00sqlite3_complete16\x00sqlite3_normalize\x00sqlite3_prepare\x00sqlite3_prepare16\x00sqlite3_prepare_v2\x00sqlite3_prepare_v3\x00sqlite3_prepare_tkt3134\x00sqlite3_prepare16_v2\x00sqlite3_finalize\x00sqlite3_stmt_status\x00sqlite3_reset\x00sqlite3_expired\x00sqlite3_transfer_bindings\x00sqlite3_changes\x00sqlite3_step\x00sqlite3_sql\x00sqlite3_expanded_sql\x00sqlite3_next_stmt\x00sqlite3_stmt_readonly\x00sqlite3_stmt_isexplain\x00sqlite3_stmt_busy\x00uses_stmt_journal\x00sqlite3_release_memory\x00sqlite3_db_release_memory\x00sqlite3_db_cacheflush\x00sqlite3_system_errno\x00sqlite3_db_filename\x00sqlite3_db_readonly\x00sqlite3_soft_heap_limit\x00sqlite3_soft_heap_limit64\x00sqlite3_hard_heap_limit64\x00sqlite3_thread_cleanup\x00sqlite3_pager_refcounts\x00sqlite3_load_extension\x00sqlite3_enable_load_extension\x00sqlite3_extended_result_codes\x00sqlite3_limit\x00dbconfig_maindbname_icecube\x00save_prng_state\x00restore_prng_state\x00reset_prng_state\x00prng_seed\x00extra_schema_checks\x00database_never_corrupt\x00database_may_be_corrupt\x00optimization_control\x00tcl_objproc\x00sqlite3_column_count\x00sqlite3_data_count\x00sqlite3_column_type\x00sqlite3_column_blob\x00sqlite3_column_double\x00sqlite3_column_int64\x00sqlite3_column_text\x00sqlite3_column_name\x00sqlite3_column_int\x00sqlite3_column_bytes\x00sqlite3_column_decltype\x00sqlite3_column_database_name\x00sqlite3_column_table_name\x00sqlite3_column_origin_name\x00sqlite3_column_bytes16\x00sqlite3_column_text16\x00sqlite3_column_name16\x00add_alignment_test_collations\x00sqlite3_column_decltype16\x00sqlite3_column_database_name16\x00sqlite3_column_table_name16\x00sqlite3_column_origin_name16\x00sqlite3_create_collation_v2\x00sqlite3_global_recover\x00working_64bit_int\x00vfs_unlink_test\x00vfs_initfail_test\x00vfs_unregister_all\x00vfs_reregister_all\x00file_control_test\x00file_control_lasterrno_test\x00file_control_lockproxy_test\x00file_control_chunksize_test\x00file_control_sizehint_test\x00file_control_data_version\x00file_control_persist_wal\x00file_control_powersafe_overwrite\x00file_control_vfsname\x00file_control_reservebytes\x00file_control_tempfilename\x00file_control_external_reader\x00sqlite3_vfs_list\x00sqlite3_create_function_v2\x00add_test_collate\x00add_test_collate_needed\x00add_test_function\x00add_test_utf16bin_collate\x00sqlite3_test_errstr\x00tcl_variable_type\x00sqlite3_enable_shared_cache\x00sqlite3_shared_cache_report\x00sqlite3_libversion_number\x00sqlite3_table_column_metadata\x00sqlite3_blob_reopen\x00pcache_stats\x00sqlite3_unlock_notify\x00sqlite3_wal_checkpoint\x00sqlite3_wal_checkpoint_v2\x00sqlite3_wal_autocheckpoint\x00test_sqlite3_log\x00print_explain_query_plan\x00sqlite3_test_control\x00getrusage\x00load_static_extension\x00sorter_test_fakeheap\x00sorter_test_sort4_helper\x00vfs_current_time_int64\x00sqlite3_snapshot_get\x00sqlite3_snapshot_open\x00sqlite3_snapshot_free\x00sqlite3_snapshot_cmp\x00sqlite3_snapshot_recover\x00sqlite3_snapshot_get_blob\x00sqlite3_snapshot_open_blob\x00sqlite3_snapshot_cmp_blob\x00sqlite3_delete_database\x00atomic_batch_write\x00sqlite3_mmap_warm\x00sqlite3_config_sorterref\x00sqlite3_autovacuum_pages\x00decode_hexdb\x00test_write_db\x00sqlite3_register_cksumvfs\x00sqlite3_unregister_cksumvfs\x00*** OBSOLETE VARIABLE ***\x00 FILENAME N-PAGE\"\x00 ID\"\x00ref\x00page\x00err\x00hit\x00miss\x00ovfl\x00 ID PGNO\"\x00 PAGE\"\x00 PAGE DATA\"\x00 N-MEGABYTES FILE\"\x00open failed: \x00Hello, World!\x00write failed: \x00 PENDING-BYTE\"\x00fault simulator script failed: [%s]\x00 SCRIPT\"\x00 SIZE PROGRAM\"\x00sqlite_io_error_pending\x00sqlite_io_error_persist\x00sqlite_io_error_hit\x00sqlite_io_error_hardhit\x00sqlite_diskfull_pending\x00sqlite_diskfull\x00sqlite_pending_byte\x00pager_open\x00pager_close\x00pager_commit\x00pager_rollback\x00pager_stmt_begin\x00pager_stmt_commit\x00pager_stmt_rollback\x00pager_stats\x00pager_pagecount\x00page_get\x00page_lookup\x00page_unref\x00page_read\x00page_write\x00page_number\x00pager_truncate\x00fake_big_file\x00sqlite3BitvecBuiltinTest\x00sqlite3_test_control_pending_byte\x00sqlite3_test_control_fault_install\x00 FILENAME NCACHE FLAGS\"\x00read\x00write\x00 ID TABLENUM WRITEABLE\"\x00 START MULTIPLIER COUNT INCREMENT\"\x00putVarint returned %d - should be between 1 and 9\x00putVarint returned %d and getVarint returned %d\x00Wrote 0x%016llx and got back 0x%016llx\x00putVarint returned %d and GetVarint32 returned %d\x00Wrote 0x%016llx and got back 0x%016llx from GetVarint32\x00 DB-HANDLE ?N?\"\x00No such db-handle: \"\x00 BT NCACHE\"\x00?-intkey? CSR KEY VALUE\x00btree_insert\x00btree_open\x00btree_close\x00btree_begin_transaction\x00btree_pager_stats\x00btree_cursor\x00btree_close_cursor\x00btree_next\x00btree_eof\x00btree_payload_size\x00btree_first\x00btree_varint_test\x00btree_from_db\x00btree_ismemdb\x00btree_set_cache_size\x00thread ID must be an upper case letter\x00 ID FILENAME\x00thread \x00 is already running\x00failed to create the thread\x00 ID\x00no such thread\x00 ID N\x00column number out of range\x00no database is open\x00 ID SQL\x00no virtual machine available\x00 IDL\x00 ID1 ID2\x00 ID DB\x00thread_create\x00thread_wait\x00thread_halt\x00thread_argc\x00thread_argv\x00thread_colname\x00thread_result\x00thread_error\x00thread_compile\x00thread_step\x00thread_finalize\x00thread_swap\x00thread_db_get\x00thread_db_put\x00thread_stmt_get\x00 <repeat-count> <do-calls>\x00hello world\x00UTF8\x00UTF16LE\x00UTF16BE\x00UTF16\x00No such encoding: \x00 <string/blob> <from enc> <to enc>\x00binarize\x00test_value_overhead\x00test_translate\x00translate_selftest\x00out of memory in the crash simulator\n\x00atomic\x00atomic512\x00atomic1k\x00atomic2k\x00atomic4k\x00atomic8k\x00atomic16k\x00atomic32k\x00atomic64k\x00sequential\x00safe_append\x00powersafe_overwrite\x00batch-atomic\x00-sectorsize\x00-characteristics\x00Bad option: \"\x00\" - must be \"-characteristics\" or \"-sectorsize\"\x00Option requires an argument: \"\x00no such flag\x00ENABLE ?DEFAULT?\x00crash\x00?OPTIONS? DELAY CRASHFILE\x00Filename is too long: \"\x00NWRITE\x00?-default? PARENT-VFS\x00-default\x00\": must be -default\x00Error in jt_register\x00sqlite3_crash_enable\x00sqlite3_crashparams\x00sqlite3_crash_now\x00sqlite3_simulate_device\x00sqlite3_crash_on_write\x00unregister_devsim\x00register_jt_vfs\x00unregister_jt_vfs\x00client_create\x00client_wait\x00client_halt\x00client_argc\x00client_argv\x00client_colname\x00client_result\x00client_error\x00client_compile\x00client_step\x00client_reset\x00client_finalize\x00client_swap\x00echo_module_fail(%s,%s)\x00echo-vtab-error: %s\x00SELECT * FROM %Q\x00PRAGMA index_list(%s)\x00PRAGMA index_info(%s)\x00echo_module\x00SELECT sql FROM sqlite_schema WHERE type = 'table' AND name = ?\x00%s%s\x00xCreate\x00CREATE TABLE %Q(logmsg)\x00xConnect\x00xDisconnect\x00xDestroy\x00DROP TABLE %Q\x00xOpen\x00xNext\x00xColumn\x00xFilter\x00, *\x00%z, %s\x00%z, NULL\x00echo_module_ignore_usable\x00xBestIndex\x00echo_module_cost\x00SELECT count(*) FROM %Q\x00SELECT rowid%z FROM %Q\x00=\x00<\x00>\x00<=\x00>=\x00LIKE\x00like\x00glob\x00 %s %s LIKE (SELECT '%%'||?||'%%')\x00 %s %s %s ?\x00DESC\x00ASC\x00 ORDER BY %s %s\x00xUpdate\x00 SET\x00UPDATE %Q\x00 SET rowid=?1 \x00%s %Q=?%d\x00 WHERE rowid=?%d\x00DELETE FROM %Q WHERE rowid = ?1\x00INSERT INTO %Q (\x00%s%Q\x00%s?%d\x00) VALUES(\x00echo(%s)\x00xBegin\x00echo_module_begin_fail\x00xSync\x00echo_module_sync_fail\x00xCommit\x00xRollback\x00::echo_glob_overload\x00xRename\x00ALTER TABLE %s RENAME TO %s%s\x00function_that_does_not_exist_0982ma98\x00echo\x00echo_v2\x00register_echo_module\x00sqlite3_declare_vtab\x00N/A\x00sqlite3_create_collation\x00Error testing function: \x00sqlite3_malloc\x00sqlite3_realloc\x00c_misuse_test\x00c_realloc_test\x00c_collation_test\x00sqlite3_reset_auto_extension\x00npage\x00finish\x00remaining\x00pagecount\x00CMDNAME DESTHANDLE DESTNAME SRCHANDLE SRCNAME\x00sqlite3_backup_init() failed\x00sqlite3_backup\x00wrong number of arguments\x00unexpected: %s\x00eq\x00gt\x00le\x00lt\x00ge\x00match\x00ne\x00isnot\x00isnotnull\x00isnull\x00limit\x00offset\x00column\x00usable\x00desc\x00constraints\x00orderby\x00mask\x00distinct\x00in\x00rhs_value\x00INDEX BOOLEAN\x00INDEX ?DEFAULT?\x00bestindex%d\x00cost\x00idxnum\x00idxstr\x00rows\x00use\x00omit\x00unexpected: %d\x00tcl\x00register_tcl_module\x00incrblob_\x00DB DATABASE TABLE COLUMN ROWID FLAGS VARNAME\x00HANDLE\x00CHANNEL OFFSET N\x00out of memory in testdata/sqlite-src-3390300/src/test_blob.c\x00HANDLE OFFSET DATA ?NDATA?\x00sqlite3_blob_open\x00sqlite3_blob_close\x00sqlite3_blob_bytes\x00sqlite3_blob_read\x00sqlite3_blob_write\x00sqlite_options\x00malloc_usable_size\x001\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x00win32malloc\x00debug\x00default_ckptfullfsync\x00direct_read\x00dirsync\x00lfs\x00pagecache_overflow_stats\x00mmap\x00worker_threads\x008\x00memdebug\x008_3_names\x00cursorhints\x00hiddencolumns\x00mathlib\x00mem3\x00mem5\x00offset_sql_func\x00snapshot\x00mutex\x00mutex_noop\x00altertable\x00api_armor\x00atomicwrite\x00geopoly\x00json1\x00has_codec\x00like_match_blobs\x00auth\x00autoinc\x00autoreset\x00autovacuum\x00default_autovacuum\x00between_opt\x00builtin_test\x00bloblit\x00cast\x00check\x00cte\x00columnmetadata\x00oversize_cell_check\x00compileoption_diags\x00compound\x00conflict\x00crashtest\x00datetime\x00decltype\x00deprecated\x00diskio\x00floatingpoint\x00foreignkey\x00fts1\x00fts2\x00fts3\x00fts5\x00fts3_unicode\x00fts4_deferred\x00gettable\x00icu\x00icu_collations\x00integrityck\x00legacyformat\x00like_opt\x00load_ext\x00localtime\x00lookaside\x00long_double\x00memorydb\x00memorymanage\x00mergesort\x00null_trim\x00or_opt\x00rbu\x00pager_pragmas\x00pragma\x00reindex\x00rtree\x00rtree_int_only\x00schema_pragmas\x00schema_version\x00session\x00stmtvtab\x00scanstatus\x00lock_proxy_pragmas\x00prefer_proxy_locking\x00shared_cache\x00subquery\x00tclvar\x00threadsafe\x00threadsafe1\x00threadsafe2\x00tempdb\x00trigger\x00truncate_opt\x00vacuum\x00view\x00vtab\x00wal\x00wsd\x00update_delete_limit\x00fast_secure_delete\x00secure_delete\x00userauth\x00multiplex_ext_overwrite\x00yytrackmaxstackdepth\x00sqllog\x00uri_00_error\x00normalize\x00windowfunc\x00SQLITE_MAX_LENGTH\x00SQLITE_MAX_COLUMN\x00SQLITE_MAX_SQL_LENGTH\x00SQLITE_MAX_EXPR_DEPTH\x00SQLITE_MAX_COMPOUND_SELECT\x00SQLITE_MAX_VDBE_OP\x00SQLITE_MAX_FUNCTION_ARG\x00SQLITE_MAX_VARIABLE_NUMBER\x00SQLITE_MAX_PAGE_SIZE\x00SQLITE_MAX_PAGE_COUNT\x00SQLITE_MAX_LIKE_PATTERN_LENGTH\x00SQLITE_MAX_TRIGGER_DEPTH\x00SQLITE_DEFAULT_CACHE_SIZE\x00SQLITE_DEFAULT_PAGE_SIZE\x00SQLITE_DEFAULT_FILE_FORMAT\x00SQLITE_DEFAULT_SYNCHRONOUS\x00SQLITE_DEFAULT_WAL_SYNCHRONOUS\x00SQLITE_MAX_ATTACHED\x00SQLITE_MAX_DEFAULT_PAGE_SIZE\x00SQLITE_MAX_WORKER_THREADS\x00TEMP_STORE\x00__GNUC__\x00%s-journal\x00%s-wal\x00%s-shm\x00%s%03d\x00%s-journal%03d\x00%s-wal%03d\x00devsym\x00writecrash\x00CREATE TABLE xyz(dir, name);\x00CREATE TABLE xyz(path, size, data);\x00WITH r(d) AS (  SELECT CASE WHEN dir=?2 THEN ?3 ELSE dir END || '/' || name     FROM fsdir WHERE dir=?1 AND name NOT LIKE '.%'  UNION ALL  SELECT dir || '/' || name FROM r, fsdir WHERE dir=d AND name NOT LIKE '.%') SELECT d FROM r;\x00/\x00CREATE TABLE x(path TEXT, data TEXT)\x00SELECT * FROM %Q.%Q WHERE rowid=?\x00fs\x00fstree\x00register_fs_module\x00abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.-!,:*^+=_|?/<> \x00sqlite3_prepare_v2() error: %s\x000123456789abcdef\x00test_agg_errmsg16\x00randstr\x00test_destructor\x00test_destructor16\x00hex_to_utf16be\x00hex_to_utf16le\x00hex_to_utf8\x00test_destructor_count\x00test_auxdata\x00test_error\x00test_eval\x00test_isolation\x00test_counter\x00real2hex\x00test_decode\x00test_extract\x00test_zeroblob\x00test_getsubtype\x00test_setsubtype\x00test_frombind\x00tx\x00funcxx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00nullx_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789_123456789\x00sqlite3_create_function abused test failed\x00invalid matchinfo blob passed to function rank()\x00wrong number of arguments to function rank()\x00rank\x00autoinstall_test_functions\x00abuse_create_function\x00install_fts3_rank_function\x000123456789ABCDEF\x00FILENAME OFFSET AMT\x00r\x00cannot open input file \x00FILENAME OFFSET HEXDATA\x00r+b\x00r+\x00cannot open output file \x00HEXDATA\x00[utf8_to_utf8] unavailable - SQLITE_DEBUG not defined\x00BLOB VARNAME\x00LIST\x00hexio_read\x00hexio_write\x00hexio_get_int\x00hexio_render_int16\x00hexio_render_int32\x00utf8_to_utf8\x00read_fts3varint\x00make_fts3record\x00mem\x00pcache\x00Unknown argument: \"\x00init_wrapper_install\x00init_wrapper_query\x00init_wrapper_uninstall\x00init_wrapper_clear\x00CREATE TABLE x(value INTEGER PRIMARY KEY)\x00CREATE VIRTUAL TABLE temp.%Q USING %Q\x00INTARRAY\x00SQLITE_NOMEM\x00sqlite3_intarray_create\x00sqlite3_intarray_bind\x00jt\x00-journal\x00NBYTES\x00PRIOR NBYTES\x00bad pointer: \x00PRIOR\x00ADDRESS SIZE HEX\x00size must be positive\x00no data\x00ADDRESS SIZE\x00?RESET?\x00DEPT\x00FILENAME\x00COUNTER ?OPTIONS?\x00-repeat\x00-benigncnt\x00TITLE\x00SUB-COMMAND ...\x00start\x00stop\x00dump\x00clear\x00sync\x00SIZE N\x00INSTALLFLAG DISCARDCHANCE PRNGSEEED HIGHSTRESS\x00discard-chance should be between 0 and 100\x00SIZE COUNT\x00BUFID SIZE COUNT\x00illegal arguments - see documentation\x00NBYTE NMINALLOC\x00[DB]\x00sqlite3_db_config(db, 99999) does not return SQLITE_ERROR\x00sqlite3_config(99999) does not return SQLITE_ERROR\x00PARAMETER RESETFLAG\x00SQLITE_STATUS_MEMORY_USED\x00SQLITE_STATUS_MALLOC_SIZE\x00SQLITE_STATUS_PAGECACHE_USED\x00SQLITE_STATUS_PAGECACHE_OVERFLOW\x00SQLITE_STATUS_PAGECACHE_SIZE\x00SQLITE_STATUS_SCRATCH_USED\x00SQLITE_STATUS_SCRATCH_OVERFLOW\x00SQLITE_STATUS_SCRATCH_SIZE\x00SQLITE_STATUS_PARSER_STACK\x00SQLITE_STATUS_MALLOC_COUNT\x00DB PARAMETER RESETFLAG\x00SQLITE_\x00DBSTATUS_\x00LOOKASIDE_USED\x00CACHE_USED\x00SCHEMA_USED\x00STMT_USED\x00LOOKASIDE_HIT\x00LOOKASIDE_MISS_SIZE\x00LOOKASIDE_MISS_FULL\x00CACHE_HIT\x00CACHE_MISS\x00CACHE_WRITE\x00DEFERRED_FKS\x00CACHE_USED_SHARED\x00CACHE_SPILL\x00?INTEGER?\x00sqlite3_free\x00memset\x00memget\x00sqlite3_memory_used\x00sqlite3_memory_highwater\x00sqlite3_memdebug_backtrace\x00sqlite3_memdebug_dump\x00sqlite3_memdebug_fail\x00sqlite3_memdebug_pending\x00sqlite3_memdebug_settitle\x00sqlite3_memdebug_malloc_count\x00sqlite3_memdebug_log\x00sqlite3_config_pagecache\x00sqlite3_config_alt_pcache\x00sqlite3_status\x00sqlite3_db_status\x00install_malloc_faultsim\x00sqlite3_config_heap\x00sqlite3_config_heap_size\x00sqlite3_config_memstatus\x00sqlite3_config_lookaside\x00sqlite3_config_error\x00sqlite3_config_uri\x00sqlite3_config_cis\x00sqlite3_config_pmasz\x00sqlite3_db_config_lookaside\x00sqlite3_dump_memsys3\x00sqlite3_dump_memsys5\x00sqlite3_install_memsys3\x00sqlite3_memdebug_vfs_oom_test\x00%05u\x00 FILENAME [OFFSET AMT]\"\x00unable to open file \"\x00\" for reading\x00md5\x00md5-10x8\x00md5file\x00md5file-10x8\x00md5sum\x00%03d\x00multiplexor.xAccess failure on %s\x00multiplexor.xOpen failure on %s\x00multiplex_control\x00chunksize\x00multiplex_\x00multiplex_truncate\x00multiplex_enabled\x00multiplex_chunksize\x00multiplex_filecount\x00multiplex/%z\x00multiplex\x00NAME MAKEDEFAULT\x00-force\x00?-force?\x00chunk_size\x00max_chunks\x00HANDLE DBNAME SUB-COMMAND INT-VALUE\x00expected database handle, got \"\x00sqlite3_multiplex_initialize\x00sqlite3_multiplex_shutdown\x00sqlite3_multiplex_control\x00fast\x00recursive\x00static_main\x00static_mem\x00static_open\x00static_prng\x00static_lru\x00static_pmem\x00static_app1\x00static_app2\x00static_app3\x00static_vfs1\x00static_vfs2\x00static_vfs3\x00mutex counters are \x00already installed\x00not installed\x00singlethread\x00multithread\x00serialized\x00mutex name\x00disable_mutex_init\x00disable_mutex_try\x00sqlite3_shutdown\x00sqlite3_initialize\x00sqlite3_config\x00enter_static_mutex\x00leave_static_mutex\x00enter_db_mutex\x00leave_db_mutex\x00alloc_dealloc_mutex\x00install_mutex_counters\x00read_mutex_counters\x00clear_mutex_counters\x00\x00\x00\x00\x00\x00\x00\x00vfslog/%z\x00sqlite_ostrace1.....\x00xClose\x00xRead\x00xWrite\x00xTruncate\x00xFilesize\x00xLock\x00xUnlock\x00xCheckResLock\x00xFileControl\x00xSectorSize\x00xDeviceChar\x00xDelete\x00xAccess\x00xFullPathname\x00xRandomness\x00xSleep\x00xCurrentTime\x00xShmUnmap\x00xShmLock\x00xShmBarrier\x00xShmMap\x00annotation\x00CREATE TABLE xxx(event, file, click, rc, size, offset)\x00vfslog\x00VFS\x00failed\x00VFS PARENT LOGFILE\x00bad sqlite3 handle: \x00annotate\x00finalize\x00register\x00quota/%z\x00quota\x00::piLimit_\x00PATTERN LIMIT SCRIPT\x00FILENAME MODE\x00HANDLE SIZE NELEM\x00HANDLE SIZE NELEM CONTENT\x00HANDLE ?HARDSYNC?\x00HANDLE OFFSET WHENCE\x00SEEK_SET\x00SEEK_CUR\x00SEEK_END\x00WHENCE should be SEEK_SET, SEEK_CUR, or SEEK_END\x00HANDLE SIZE\x00PATTERN TEXT\x00sqlite3_quota_initialize\x00sqlite3_quota_shutdown\x00sqlite3_quota_set\x00sqlite3_quota_file\x00sqlite3_quota_dump\x00sqlite3_quota_fopen\x00sqlite3_quota_fread\x00sqlite3_quota_fwrite\x00sqlite3_quota_fclose\x00sqlite3_quota_fflush\x00sqlite3_quota_fseek\x00sqlite3_quota_rewind\x00sqlite3_quota_ftell\x00sqlite3_quota_ftruncate\x00sqlite3_quota_file_size\x00sqlite3_quota_file_truesize\x00sqlite3_quota_file_mtime\x00sqlite3_quota_remove\x00sqlite3_quota_glob\x00sqlite3_quota_file_available\x00sqlite3_quota_ferror\x00cube\x00circle\x00Qcircle\x00breadthfirstsearch\x00register_cube_geom\x00register_circle_geom\x00CREATE TABLE x(database,tablename,cid,name,type,not_null,dflt_value,pk)\x00SELECT name FROM sqlite_temp_schema WHERE type='table'\x00SELECT name FROM %Q.sqlite_schema WHERE type='table'\x00PRAGMA %Q.table_info(%Q)\x00PRAGMA database_list\x00register_schema_module\x00PRAGMA main.journal_mode\x00CMDNAME PATH ?VFS? ?BUSY-HANDLER-SCRIPT?\x00sqlite3demo_superlock\x00open\x00access\x00getcwd\x00stat\x00fstat\x00ftruncate\x00fcntl\x00pread\x00pread64\x00pwrite\x00pwrite64\x00fchmod\x00fallocate\x00mremap\x00SYSCALL-LIST\x00system-call\x00?COUNT PERSIST?\x00EACCES\x00EINTR\x00EIO\x00EOVERFLOW\x00ENOMEM\x00EAGAIN\x00ETIMEDOUT\x00EBUSY\x00EPERM\x00EDEADLK\x00ENOLCK\x00SYSCALL ERRNO\x00errno\x00PGSZ\x00getpagesize\x00pgsz out of range\x00fault\x00install\x00uninstall\x00list\x00defaultvfs\x00pagesize\x00VFS does not support xSetSystemCall\x00test_syscall\x00load_testfixture_extensions\x00SLAVE\x00CREATE TABLE x(  name TEXT,  arrayname TEXT,  value TEXT,  fullname TEXT PRIMARY KEY) WITHOUT ROWID\x00array names\x00tclvar_filter_cmd\x00%s(%s)\x00expr {[info exists ::tclvar_set_omit] && $::tclvar_set_omit}\x00the 'fullname' column must be TEXT\x00prohibited TCL variable change\x00proc like {pattern str} {\n  set p [string map {% * _ ?} $pattern]\n  string match $p $str\n}\nproc tclvar_filter_cmd {eq match glob regexp like} {\n  set res {}\n  set pattern $eq\n  if {$pattern=={}} { set pattern $match }\n  if {$pattern=={}} { set pattern * }\n  foreach v [uplevel #0 info vars $pattern] {\n    if {($glob=={} || [string match $glob [uplevel #0 set $v]])\n     && ($like=={} || [like $like [uplevel #0 set $v]])\n     && ($regexp=={} || [regexp $regexp [uplevel #0 set $v]])\n    } {\n      lappend res $v\n    }\n  }\n  set res\n}\n\x00register_tclvar_module\x00clock_seconds\x00sqlthread\x00sqlite3_blocking_step\x00sqlite3_blocking_prepare_v2\x00sqlite3_nonblocking_prepare_v2\x00set\x00Error in Tcl_CreateThread()\x00no parent thread\x00parent\x00spawn\x00VARNAME SCRIPT\x00DBNAME\x00id\x00%s \x00SQLITE_IOERR\x00SQLITE_LOCKED\x00SQLITE_BUSY\x00SQLITE_READONLY\x00SQLITE_READONLY_CANTINIT\x00SQLITE_NOTFOUND\x00SQLITE_OMIT\x00normal|dataonly\x00full|dataonly\x00xCheckReservedLock\x00BEGIN_ATOMIC_WRITE\x00COMMIT_ATOMIC_WRITE\x00ZIPVFS\x00anon\x00SQLITE_ACCESS_EXISTS\x00SQLITE_ACCESS_READWRITE\x00SQLITE_ACCESS_READ\x00xShmOpen\x00 lock\x00 unlock\x00 shared\x00 exclusive\x00shm\x00filter\x00ioerr\x00fullerr\x00cantopenerr\x00script\x00devchar\x00sectorsize\x00subcommand\x00FILE ?VALUE?\x00failed to get full path: \x00no such file: \x00unknown method: \x00?CNT PERSIST?\x00default\x00undeletable_when_open\x00immutable\x00?ATTR-LIST?\x00bad flags: \x00?VALUE?\x00-noshm\x00-szosfile\x00-mxpathname\x00-iversion\x00-fullshm\x00VFSNAME ?-noshm BOOL? ?-fullshm BOOL? ?-default BOOL? ?-mxpathname INT? ?-szosfile INT? ?-iversion INT?\x00shared\x00lock\x00unlock\x00DB DBNAME (shared|exclusive) (lock|unlock) OFFSET N\x00ARG\x00DB DBNAME SLOT ?VALUE?\x00*-shm is not yet mapped\x00testvfs\x00vfs_shmlock\x00vfs_set_readmark\x00DB NAME XSTEP XFINAL XVALUE XINVERSE\x00fff\x00misuse test error\x00invalid argument\x00sumint\x00sum\x00sqlite3_create_window_function\x00test_create_window_function_misuse\x00test_create_sumint\x00test_override_sum\x00"
 61644  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data