gitlab.com/CoiaPrant/sqlite3@v1.19.1/internal/testfixture/testfixture_openbsd_amd64.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/local/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_openbsd_amd64.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  	BIG_ENDIAN                            = 4321
    28  	BUFSIZ                                = 1024
    29  	BYTE_ORDER                            = 1234
    30  	EOF                                   = -1
    31  	EXPERT_CONFIG_SAMPLE                  = 1
    32  	EXPERT_REPORT_CANDIDATES              = 4
    33  	EXPERT_REPORT_INDEXES                 = 2
    34  	EXPERT_REPORT_PLAN                    = 3
    35  	EXPERT_REPORT_SQL                     = 1
    36  	FILENAME_MAX                          = 1024
    37  	FOPEN_MAX                             = 20
    38  	FTS5_TOKENIZE_AUX                     = 0x0008
    39  	FTS5_TOKENIZE_DOCUMENT                = 0x0004
    40  	FTS5_TOKENIZE_PREFIX                  = 0x0002
    41  	FTS5_TOKENIZE_QUERY                   = 0x0001
    42  	FTS5_TOKEN_COLOCATED                  = 0x0001
    43  	FULLY_WITHIN                          = 2
    44  	HAVE_USLEEP                           = 1
    45  	IDX_HASH_SIZE                         = 1023
    46  	LITTLE_ENDIAN                         = 1234
    47  	L_ctermid                             = 1024
    48  	L_tmpnam                              = 1024
    49  	NDEBUG                                = 1
    50  	NOT_WITHIN                            = 0
    51  	PARTLY_WITHIN                         = 1
    52  	PDP_ENDIAN                            = 3412
    53  	P_tmpdir                              = "/tmp/"
    54  	SEEK_CUR                              = 1
    55  	SEEK_END                              = 2
    56  	SEEK_SET                              = 0
    57  	SQLITE3_H                             = 0
    58  	SQLITE3_TEXT                          = 3
    59  	SQLITEEXPERT_H                        = 1
    60  	SQLITE_ABORT                          = 4
    61  	SQLITE_ABORT_ROLLBACK                 = 516
    62  	SQLITE_ACCESS_EXISTS                  = 0
    63  	SQLITE_ACCESS_READ                    = 2
    64  	SQLITE_ACCESS_READWRITE               = 1
    65  	SQLITE_ALTER_TABLE                    = 26
    66  	SQLITE_ANALYZE                        = 28
    67  	SQLITE_ANY                            = 5
    68  	SQLITE_API                            = 0
    69  	SQLITE_APICALL                        = 0
    70  	SQLITE_ATTACH                         = 24
    71  	SQLITE_AUTH                           = 23
    72  	SQLITE_AUTH_USER                      = 279
    73  	SQLITE_BLOB                           = 4
    74  	SQLITE_BUSY                           = 5
    75  	SQLITE_BUSY_RECOVERY                  = 261
    76  	SQLITE_BUSY_SNAPSHOT                  = 517
    77  	SQLITE_BUSY_TIMEOUT                   = 773
    78  	SQLITE_CALLBACK                       = 0
    79  	SQLITE_CANTOPEN                       = 14
    80  	SQLITE_CANTOPEN_CONVPATH              = 1038
    81  	SQLITE_CANTOPEN_DIRTYWAL              = 1294
    82  	SQLITE_CANTOPEN_FULLPATH              = 782
    83  	SQLITE_CANTOPEN_ISDIR                 = 526
    84  	SQLITE_CANTOPEN_NOTEMPDIR             = 270
    85  	SQLITE_CANTOPEN_SYMLINK               = 1550
    86  	SQLITE_CDECL                          = 0
    87  	SQLITE_CHANGESETAPPLY_INVERT          = 0x0002
    88  	SQLITE_CHANGESETAPPLY_NOSAVEPOINT     = 0x0001
    89  	SQLITE_CHANGESETSTART_INVERT          = 0x0002
    90  	SQLITE_CHANGESET_ABORT                = 2
    91  	SQLITE_CHANGESET_CONFLICT             = 3
    92  	SQLITE_CHANGESET_CONSTRAINT           = 4
    93  	SQLITE_CHANGESET_DATA                 = 1
    94  	SQLITE_CHANGESET_FOREIGN_KEY          = 5
    95  	SQLITE_CHANGESET_NOTFOUND             = 2
    96  	SQLITE_CHANGESET_OMIT                 = 0
    97  	SQLITE_CHANGESET_REPLACE              = 1
    98  	SQLITE_CHECKPOINT_FULL                = 1
    99  	SQLITE_CHECKPOINT_PASSIVE             = 0
   100  	SQLITE_CHECKPOINT_RESTART             = 2
   101  	SQLITE_CHECKPOINT_TRUNCATE            = 3
   102  	SQLITE_CKSUMVFS_STATIC                = 1
   103  	SQLITE_CONFIG_COVERING_INDEX_SCAN     = 20
   104  	SQLITE_CONFIG_GETMALLOC               = 5
   105  	SQLITE_CONFIG_GETMUTEX                = 11
   106  	SQLITE_CONFIG_GETPCACHE               = 15
   107  	SQLITE_CONFIG_GETPCACHE2              = 19
   108  	SQLITE_CONFIG_HEAP                    = 8
   109  	SQLITE_CONFIG_LOG                     = 16
   110  	SQLITE_CONFIG_LOOKASIDE               = 13
   111  	SQLITE_CONFIG_MALLOC                  = 4
   112  	SQLITE_CONFIG_MEMDB_MAXSIZE           = 29
   113  	SQLITE_CONFIG_MEMSTATUS               = 9
   114  	SQLITE_CONFIG_MMAP_SIZE               = 22
   115  	SQLITE_CONFIG_MULTITHREAD             = 2
   116  	SQLITE_CONFIG_MUTEX                   = 10
   117  	SQLITE_CONFIG_PAGECACHE               = 7
   118  	SQLITE_CONFIG_PCACHE                  = 14
   119  	SQLITE_CONFIG_PCACHE2                 = 18
   120  	SQLITE_CONFIG_PCACHE_HDRSZ            = 24
   121  	SQLITE_CONFIG_PMASZ                   = 25
   122  	SQLITE_CONFIG_SCRATCH                 = 6
   123  	SQLITE_CONFIG_SERIALIZED              = 3
   124  	SQLITE_CONFIG_SINGLETHREAD            = 1
   125  	SQLITE_CONFIG_SMALL_MALLOC            = 27
   126  	SQLITE_CONFIG_SORTERREF_SIZE          = 28
   127  	SQLITE_CONFIG_SQLLOG                  = 21
   128  	SQLITE_CONFIG_STMTJRNL_SPILL          = 26
   129  	SQLITE_CONFIG_URI                     = 17
   130  	SQLITE_CONFIG_WIN32_HEAPSIZE          = 23
   131  	SQLITE_CONSTRAINT                     = 19
   132  	SQLITE_CONSTRAINT_CHECK               = 275
   133  	SQLITE_CONSTRAINT_COMMITHOOK          = 531
   134  	SQLITE_CONSTRAINT_DATATYPE            = 3091
   135  	SQLITE_CONSTRAINT_FOREIGNKEY          = 787
   136  	SQLITE_CONSTRAINT_FUNCTION            = 1043
   137  	SQLITE_CONSTRAINT_NOTNULL             = 1299
   138  	SQLITE_CONSTRAINT_PINNED              = 2835
   139  	SQLITE_CONSTRAINT_PRIMARYKEY          = 1555
   140  	SQLITE_CONSTRAINT_ROWID               = 2579
   141  	SQLITE_CONSTRAINT_TRIGGER             = 1811
   142  	SQLITE_CONSTRAINT_UNIQUE              = 2067
   143  	SQLITE_CONSTRAINT_VTAB                = 2323
   144  	SQLITE_COPY                           = 0
   145  	SQLITE_CORE                           = 1
   146  	SQLITE_CORRUPT                        = 11
   147  	SQLITE_CORRUPT_INDEX                  = 779
   148  	SQLITE_CORRUPT_SEQUENCE               = 523
   149  	SQLITE_CORRUPT_VTAB                   = 267
   150  	SQLITE_CREATE_INDEX                   = 1
   151  	SQLITE_CREATE_TABLE                   = 2
   152  	SQLITE_CREATE_TEMP_INDEX              = 3
   153  	SQLITE_CREATE_TEMP_TABLE              = 4
   154  	SQLITE_CREATE_TEMP_TRIGGER            = 5
   155  	SQLITE_CREATE_TEMP_VIEW               = 6
   156  	SQLITE_CREATE_TRIGGER                 = 7
   157  	SQLITE_CREATE_VIEW                    = 8
   158  	SQLITE_CREATE_VTABLE                  = 29
   159  	SQLITE_DBCONFIG_DEFENSIVE             = 1010
   160  	SQLITE_DBCONFIG_DQS_DDL               = 1014
   161  	SQLITE_DBCONFIG_DQS_DML               = 1013
   162  	SQLITE_DBCONFIG_ENABLE_FKEY           = 1002
   163  	SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER = 1004
   164  	SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION = 1005
   165  	SQLITE_DBCONFIG_ENABLE_QPSG           = 1007
   166  	SQLITE_DBCONFIG_ENABLE_TRIGGER        = 1003
   167  	SQLITE_DBCONFIG_ENABLE_VIEW           = 1015
   168  	SQLITE_DBCONFIG_LEGACY_ALTER_TABLE    = 1012
   169  	SQLITE_DBCONFIG_LEGACY_FILE_FORMAT    = 1016
   170  	SQLITE_DBCONFIG_LOOKASIDE             = 1001
   171  	SQLITE_DBCONFIG_MAINDBNAME            = 1000
   172  	SQLITE_DBCONFIG_MAX                   = 1017
   173  	SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE      = 1006
   174  	SQLITE_DBCONFIG_RESET_DATABASE        = 1009
   175  	SQLITE_DBCONFIG_TRIGGER_EQP           = 1008
   176  	SQLITE_DBCONFIG_TRUSTED_SCHEMA        = 1017
   177  	SQLITE_DBCONFIG_WRITABLE_SCHEMA       = 1011
   178  	SQLITE_DBSTATUS_CACHE_HIT             = 7
   179  	SQLITE_DBSTATUS_CACHE_MISS            = 8
   180  	SQLITE_DBSTATUS_CACHE_SPILL           = 12
   181  	SQLITE_DBSTATUS_CACHE_USED            = 1
   182  	SQLITE_DBSTATUS_CACHE_USED_SHARED     = 11
   183  	SQLITE_DBSTATUS_CACHE_WRITE           = 9
   184  	SQLITE_DBSTATUS_DEFERRED_FKS          = 10
   185  	SQLITE_DBSTATUS_LOOKASIDE_HIT         = 4
   186  	SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL   = 6
   187  	SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE   = 5
   188  	SQLITE_DBSTATUS_LOOKASIDE_USED        = 0
   189  	SQLITE_DBSTATUS_MAX                   = 12
   190  	SQLITE_DBSTATUS_SCHEMA_USED           = 2
   191  	SQLITE_DBSTATUS_STMT_USED             = 3
   192  	SQLITE_DEFAULT_MEMSTATUS              = 0
   193  	SQLITE_DEFAULT_PAGE_SIZE              = 1024
   194  	SQLITE_DELETE                         = 9
   195  	SQLITE_DENY                           = 1
   196  	SQLITE_DEPRECATED                     = 0
   197  	SQLITE_DESERIALIZE_FREEONCLOSE        = 1
   198  	SQLITE_DESERIALIZE_READONLY           = 4
   199  	SQLITE_DESERIALIZE_RESIZEABLE         = 2
   200  	SQLITE_DETACH                         = 25
   201  	SQLITE_DETERMINISTIC                  = 0x000000800
   202  	SQLITE_DIRECTONLY                     = 0x000080000
   203  	SQLITE_DONE                           = 101
   204  	SQLITE_DROP_INDEX                     = 10
   205  	SQLITE_DROP_TABLE                     = 11
   206  	SQLITE_DROP_TEMP_INDEX                = 12
   207  	SQLITE_DROP_TEMP_TABLE                = 13
   208  	SQLITE_DROP_TEMP_TRIGGER              = 14
   209  	SQLITE_DROP_TEMP_VIEW                 = 15
   210  	SQLITE_DROP_TRIGGER                   = 16
   211  	SQLITE_DROP_VIEW                      = 17
   212  	SQLITE_DROP_VTABLE                    = 30
   213  	SQLITE_EMPTY                          = 16
   214  	SQLITE_ENABLE_BYTECODE_VTAB           = 1
   215  	SQLITE_ENABLE_COLUMN_METADATA         = 1
   216  	SQLITE_ENABLE_DBPAGE_VTAB             = 1
   217  	SQLITE_ENABLE_DBSTAT_VTAB             = 1
   218  	SQLITE_ENABLE_DESERIALIZE             = 1
   219  	SQLITE_ENABLE_EXPLAIN_COMMENTS        = 1
   220  	SQLITE_ENABLE_FTS5                    = 1
   221  	SQLITE_ENABLE_GEOPOLY                 = 1
   222  	SQLITE_ENABLE_MATH_FUNCTIONS          = 1
   223  	SQLITE_ENABLE_MEMORY_MANAGEMENT       = 1
   224  	SQLITE_ENABLE_OFFSET_SQL_FUNC         = 1
   225  	SQLITE_ENABLE_PREUPDATE_HOOK          = 1
   226  	SQLITE_ENABLE_RBU                     = 1
   227  	SQLITE_ENABLE_RTREE                   = 1
   228  	SQLITE_ENABLE_SESSION                 = 1
   229  	SQLITE_ENABLE_SNAPSHOT                = 1
   230  	SQLITE_ENABLE_STAT4                   = 1
   231  	SQLITE_ENABLE_STMTVTAB                = 1
   232  	SQLITE_ENABLE_UNLOCK_NOTIFY           = 1
   233  	SQLITE_ERROR                          = 1
   234  	SQLITE_ERROR_MISSING_COLLSEQ          = 257
   235  	SQLITE_ERROR_RETRY                    = 513
   236  	SQLITE_ERROR_SNAPSHOT                 = 769
   237  	SQLITE_EXPERIMENTAL                   = 0
   238  	SQLITE_FAIL                           = 3
   239  	SQLITE_FCNTL_BEGIN_ATOMIC_WRITE       = 31
   240  	SQLITE_FCNTL_BUSYHANDLER              = 15
   241  	SQLITE_FCNTL_CHUNK_SIZE               = 6
   242  	SQLITE_FCNTL_CKPT_DONE                = 37
   243  	SQLITE_FCNTL_CKPT_START               = 39
   244  	SQLITE_FCNTL_CKSM_FILE                = 41
   245  	SQLITE_FCNTL_COMMIT_ATOMIC_WRITE      = 32
   246  	SQLITE_FCNTL_COMMIT_PHASETWO          = 22
   247  	SQLITE_FCNTL_DATA_VERSION             = 35
   248  	SQLITE_FCNTL_EXTERNAL_READER          = 40
   249  	SQLITE_FCNTL_FILE_POINTER             = 7
   250  	SQLITE_FCNTL_GET_LOCKPROXYFILE        = 2
   251  	SQLITE_FCNTL_HAS_MOVED                = 20
   252  	SQLITE_FCNTL_JOURNAL_POINTER          = 28
   253  	SQLITE_FCNTL_LAST_ERRNO               = 4
   254  	SQLITE_FCNTL_LOCKSTATE                = 1
   255  	SQLITE_FCNTL_LOCK_TIMEOUT             = 34
   256  	SQLITE_FCNTL_MMAP_SIZE                = 18
   257  	SQLITE_FCNTL_OVERWRITE                = 11
   258  	SQLITE_FCNTL_PDB                      = 30
   259  	SQLITE_FCNTL_PERSIST_WAL              = 10
   260  	SQLITE_FCNTL_POWERSAFE_OVERWRITE      = 13
   261  	SQLITE_FCNTL_PRAGMA                   = 14
   262  	SQLITE_FCNTL_RBU                      = 26
   263  	SQLITE_FCNTL_RESERVE_BYTES            = 38
   264  	SQLITE_FCNTL_ROLLBACK_ATOMIC_WRITE    = 33
   265  	SQLITE_FCNTL_SET_LOCKPROXYFILE        = 3
   266  	SQLITE_FCNTL_SIZE_HINT                = 5
   267  	SQLITE_FCNTL_SIZE_LIMIT               = 36
   268  	SQLITE_FCNTL_SYNC                     = 21
   269  	SQLITE_FCNTL_SYNC_OMITTED             = 8
   270  	SQLITE_FCNTL_TEMPFILENAME             = 16
   271  	SQLITE_FCNTL_TRACE                    = 19
   272  	SQLITE_FCNTL_VFSNAME                  = 12
   273  	SQLITE_FCNTL_VFS_POINTER              = 27
   274  	SQLITE_FCNTL_WAL_BLOCK                = 24
   275  	SQLITE_FCNTL_WIN32_AV_RETRY           = 9
   276  	SQLITE_FCNTL_WIN32_GET_HANDLE         = 29
   277  	SQLITE_FCNTL_WIN32_SET_HANDLE         = 23
   278  	SQLITE_FCNTL_ZIPVFS                   = 25
   279  	SQLITE_FLOAT                          = 2
   280  	SQLITE_FORMAT                         = 24
   281  	SQLITE_FULL                           = 13
   282  	SQLITE_FUNCTION                       = 31
   283  	SQLITE_GET_LOCKPROXYFILE              = 2
   284  	SQLITE_IGNORE                         = 2
   285  	SQLITE_INDEX_CONSTRAINT_EQ            = 2
   286  	SQLITE_INDEX_CONSTRAINT_FUNCTION      = 150
   287  	SQLITE_INDEX_CONSTRAINT_GE            = 32
   288  	SQLITE_INDEX_CONSTRAINT_GLOB          = 66
   289  	SQLITE_INDEX_CONSTRAINT_GT            = 4
   290  	SQLITE_INDEX_CONSTRAINT_IS            = 72
   291  	SQLITE_INDEX_CONSTRAINT_ISNOT         = 69
   292  	SQLITE_INDEX_CONSTRAINT_ISNOTNULL     = 70
   293  	SQLITE_INDEX_CONSTRAINT_ISNULL        = 71
   294  	SQLITE_INDEX_CONSTRAINT_LE            = 8
   295  	SQLITE_INDEX_CONSTRAINT_LIKE          = 65
   296  	SQLITE_INDEX_CONSTRAINT_LIMIT         = 73
   297  	SQLITE_INDEX_CONSTRAINT_LT            = 16
   298  	SQLITE_INDEX_CONSTRAINT_MATCH         = 64
   299  	SQLITE_INDEX_CONSTRAINT_NE            = 68
   300  	SQLITE_INDEX_CONSTRAINT_OFFSET        = 74
   301  	SQLITE_INDEX_CONSTRAINT_REGEXP        = 67
   302  	SQLITE_INDEX_SCAN_UNIQUE              = 1
   303  	SQLITE_INNOCUOUS                      = 0x000200000
   304  	SQLITE_INSERT                         = 18
   305  	SQLITE_INTEGER                        = 1
   306  	SQLITE_INTERNAL                       = 2
   307  	SQLITE_INTERRUPT                      = 9
   308  	SQLITE_IOCAP_ATOMIC                   = 0x00000001
   309  	SQLITE_IOCAP_ATOMIC16K                = 0x00000040
   310  	SQLITE_IOCAP_ATOMIC1K                 = 0x00000004
   311  	SQLITE_IOCAP_ATOMIC2K                 = 0x00000008
   312  	SQLITE_IOCAP_ATOMIC32K                = 0x00000080
   313  	SQLITE_IOCAP_ATOMIC4K                 = 0x00000010
   314  	SQLITE_IOCAP_ATOMIC512                = 0x00000002
   315  	SQLITE_IOCAP_ATOMIC64K                = 0x00000100
   316  	SQLITE_IOCAP_ATOMIC8K                 = 0x00000020
   317  	SQLITE_IOCAP_BATCH_ATOMIC             = 0x00004000
   318  	SQLITE_IOCAP_IMMUTABLE                = 0x00002000
   319  	SQLITE_IOCAP_POWERSAFE_OVERWRITE      = 0x00001000
   320  	SQLITE_IOCAP_SAFE_APPEND              = 0x00000200
   321  	SQLITE_IOCAP_SEQUENTIAL               = 0x00000400
   322  	SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN    = 0x00000800
   323  	SQLITE_IOERR                          = 10
   324  	SQLITE_IOERR_ACCESS                   = 3338
   325  	SQLITE_IOERR_AUTH                     = 7178
   326  	SQLITE_IOERR_BEGIN_ATOMIC             = 7434
   327  	SQLITE_IOERR_BLOCKED                  = 2826
   328  	SQLITE_IOERR_CHECKRESERVEDLOCK        = 3594
   329  	SQLITE_IOERR_CLOSE                    = 4106
   330  	SQLITE_IOERR_COMMIT_ATOMIC            = 7690
   331  	SQLITE_IOERR_CONVPATH                 = 6666
   332  	SQLITE_IOERR_CORRUPTFS                = 8458
   333  	SQLITE_IOERR_DATA                     = 8202
   334  	SQLITE_IOERR_DELETE                   = 2570
   335  	SQLITE_IOERR_DELETE_NOENT             = 5898
   336  	SQLITE_IOERR_DIR_CLOSE                = 4362
   337  	SQLITE_IOERR_DIR_FSYNC                = 1290
   338  	SQLITE_IOERR_FSTAT                    = 1802
   339  	SQLITE_IOERR_FSYNC                    = 1034
   340  	SQLITE_IOERR_GETTEMPPATH              = 6410
   341  	SQLITE_IOERR_LOCK                     = 3850
   342  	SQLITE_IOERR_MMAP                     = 6154
   343  	SQLITE_IOERR_NOMEM                    = 3082
   344  	SQLITE_IOERR_RDLOCK                   = 2314
   345  	SQLITE_IOERR_READ                     = 266
   346  	SQLITE_IOERR_ROLLBACK_ATOMIC          = 7946
   347  	SQLITE_IOERR_SEEK                     = 5642
   348  	SQLITE_IOERR_SHMLOCK                  = 5130
   349  	SQLITE_IOERR_SHMMAP                   = 5386
   350  	SQLITE_IOERR_SHMOPEN                  = 4618
   351  	SQLITE_IOERR_SHMSIZE                  = 4874
   352  	SQLITE_IOERR_SHORT_READ               = 522
   353  	SQLITE_IOERR_TRUNCATE                 = 1546
   354  	SQLITE_IOERR_UNLOCK                   = 2058
   355  	SQLITE_IOERR_VNODE                    = 6922
   356  	SQLITE_IOERR_WRITE                    = 778
   357  	SQLITE_LAST_ERRNO                     = 4
   358  	SQLITE_LIKE_DOESNT_MATCH_BLOBS        = 1
   359  	SQLITE_LIMIT_ATTACHED                 = 7
   360  	SQLITE_LIMIT_COLUMN                   = 2
   361  	SQLITE_LIMIT_COMPOUND_SELECT          = 4
   362  	SQLITE_LIMIT_EXPR_DEPTH               = 3
   363  	SQLITE_LIMIT_FUNCTION_ARG             = 6
   364  	SQLITE_LIMIT_LENGTH                   = 0
   365  	SQLITE_LIMIT_LIKE_PATTERN_LENGTH      = 8
   366  	SQLITE_LIMIT_SQL_LENGTH               = 1
   367  	SQLITE_LIMIT_TRIGGER_DEPTH            = 10
   368  	SQLITE_LIMIT_VARIABLE_NUMBER          = 9
   369  	SQLITE_LIMIT_VDBE_OP                  = 5
   370  	SQLITE_LIMIT_WORKER_THREADS           = 11
   371  	SQLITE_LOCKED                         = 6
   372  	SQLITE_LOCKED_SHAREDCACHE             = 262
   373  	SQLITE_LOCKED_VTAB                    = 518
   374  	SQLITE_LOCK_EXCLUSIVE                 = 4
   375  	SQLITE_LOCK_NONE                      = 0
   376  	SQLITE_LOCK_PENDING                   = 3
   377  	SQLITE_LOCK_RESERVED                  = 2
   378  	SQLITE_LOCK_SHARED                    = 1
   379  	SQLITE_MISMATCH                       = 20
   380  	SQLITE_MISUSE                         = 21
   381  	SQLITE_MUTEX_APPDEF                   = 1
   382  	SQLITE_MUTEX_FAST                     = 0
   383  	SQLITE_MUTEX_NOOP                     = 1
   384  	SQLITE_MUTEX_RECURSIVE                = 1
   385  	SQLITE_MUTEX_STATIC_APP1              = 8
   386  	SQLITE_MUTEX_STATIC_APP2              = 9
   387  	SQLITE_MUTEX_STATIC_APP3              = 10
   388  	SQLITE_MUTEX_STATIC_LRU               = 6
   389  	SQLITE_MUTEX_STATIC_LRU2              = 7
   390  	SQLITE_MUTEX_STATIC_MAIN              = 2
   391  	SQLITE_MUTEX_STATIC_MASTER            = 2
   392  	SQLITE_MUTEX_STATIC_MEM               = 3
   393  	SQLITE_MUTEX_STATIC_MEM2              = 4
   394  	SQLITE_MUTEX_STATIC_OPEN              = 4
   395  	SQLITE_MUTEX_STATIC_PMEM              = 7
   396  	SQLITE_MUTEX_STATIC_PRNG              = 5
   397  	SQLITE_MUTEX_STATIC_VFS1              = 11
   398  	SQLITE_MUTEX_STATIC_VFS2              = 12
   399  	SQLITE_MUTEX_STATIC_VFS3              = 13
   400  	SQLITE_NOLFS                          = 22
   401  	SQLITE_NOMEM                          = 7
   402  	SQLITE_NOTADB                         = 26
   403  	SQLITE_NOTFOUND                       = 12
   404  	SQLITE_NOTICE                         = 27
   405  	SQLITE_NOTICE_RECOVER_ROLLBACK        = 539
   406  	SQLITE_NOTICE_RECOVER_WAL             = 283
   407  	SQLITE_NULL                           = 5
   408  	SQLITE_OK                             = 0
   409  	SQLITE_OK_LOAD_PERMANENTLY            = 256
   410  	SQLITE_OK_SYMLINK                     = 512
   411  	SQLITE_OMIT_LOAD_EXTENSION            = 1
   412  	SQLITE_OPEN_AUTOPROXY                 = 0x00000020
   413  	SQLITE_OPEN_CREATE                    = 0x00000004
   414  	SQLITE_OPEN_DELETEONCLOSE             = 0x00000008
   415  	SQLITE_OPEN_EXCLUSIVE                 = 0x00000010
   416  	SQLITE_OPEN_EXRESCODE                 = 0x02000000
   417  	SQLITE_OPEN_FULLMUTEX                 = 0x00010000
   418  	SQLITE_OPEN_MAIN_DB                   = 0x00000100
   419  	SQLITE_OPEN_MAIN_JOURNAL              = 0x00000800
   420  	SQLITE_OPEN_MASTER_JOURNAL            = 0x00004000
   421  	SQLITE_OPEN_MEMORY                    = 0x00000080
   422  	SQLITE_OPEN_NOFOLLOW                  = 0x01000000
   423  	SQLITE_OPEN_NOMUTEX                   = 0x00008000
   424  	SQLITE_OPEN_PRIVATECACHE              = 0x00040000
   425  	SQLITE_OPEN_READONLY                  = 0x00000001
   426  	SQLITE_OPEN_READWRITE                 = 0x00000002
   427  	SQLITE_OPEN_SHAREDCACHE               = 0x00020000
   428  	SQLITE_OPEN_SUBJOURNAL                = 0x00002000
   429  	SQLITE_OPEN_SUPER_JOURNAL             = 0x00004000
   430  	SQLITE_OPEN_TEMP_DB                   = 0x00000200
   431  	SQLITE_OPEN_TEMP_JOURNAL              = 0x00001000
   432  	SQLITE_OPEN_TRANSIENT_DB              = 0x00000400
   433  	SQLITE_OPEN_URI                       = 0x00000040
   434  	SQLITE_OPEN_WAL                       = 0x00080000
   435  	SQLITE_PERM                           = 3
   436  	SQLITE_PRAGMA                         = 19
   437  	SQLITE_PREPARE_NORMALIZE              = 0x02
   438  	SQLITE_PREPARE_NO_VTAB                = 0x04
   439  	SQLITE_PREPARE_PERSISTENT             = 0x01
   440  	SQLITE_PROTOCOL                       = 15
   441  	SQLITE_RANGE                          = 25
   442  	SQLITE_READ                           = 20
   443  	SQLITE_READONLY                       = 8
   444  	SQLITE_READONLY_CANTINIT              = 1288
   445  	SQLITE_READONLY_CANTLOCK              = 520
   446  	SQLITE_READONLY_DBMOVED               = 1032
   447  	SQLITE_READONLY_DIRECTORY             = 1544
   448  	SQLITE_READONLY_RECOVERY              = 264
   449  	SQLITE_READONLY_ROLLBACK              = 776
   450  	SQLITE_RECURSIVE                      = 33
   451  	SQLITE_REINDEX                        = 27
   452  	SQLITE_REPLACE                        = 5
   453  	SQLITE_ROLLBACK                       = 1
   454  	SQLITE_ROW                            = 100
   455  	SQLITE_SAVEPOINT                      = 32
   456  	SQLITE_SCANSTAT_EST                   = 2
   457  	SQLITE_SCANSTAT_EXPLAIN               = 4
   458  	SQLITE_SCANSTAT_NAME                  = 3
   459  	SQLITE_SCANSTAT_NLOOP                 = 0
   460  	SQLITE_SCANSTAT_NVISIT                = 1
   461  	SQLITE_SCANSTAT_SELECTID              = 5
   462  	SQLITE_SCHEMA                         = 17
   463  	SQLITE_SELECT                         = 21
   464  	SQLITE_SERIALIZE_NOCOPY               = 0x001
   465  	SQLITE_SERIES_CONSTRAINT_VERIFY       = 1
   466  	SQLITE_SERVER                         = 1
   467  	SQLITE_SESSION_CONFIG_STRMSIZE        = 1
   468  	SQLITE_SESSION_OBJCONFIG_SIZE         = 1
   469  	SQLITE_SET_LOCKPROXYFILE              = 3
   470  	SQLITE_SHM_EXCLUSIVE                  = 8
   471  	SQLITE_SHM_LOCK                       = 2
   472  	SQLITE_SHM_NLOCK                      = 8
   473  	SQLITE_SHM_SHARED                     = 4
   474  	SQLITE_SHM_UNLOCK                     = 1
   475  	SQLITE_SOUNDEX                        = 1
   476  	SQLITE_SOURCE_ID                      = "2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8"
   477  	SQLITE_STATUS_MALLOC_COUNT            = 9
   478  	SQLITE_STATUS_MALLOC_SIZE             = 5
   479  	SQLITE_STATUS_MEMORY_USED             = 0
   480  	SQLITE_STATUS_PAGECACHE_OVERFLOW      = 2
   481  	SQLITE_STATUS_PAGECACHE_SIZE          = 7
   482  	SQLITE_STATUS_PAGECACHE_USED          = 1
   483  	SQLITE_STATUS_PARSER_STACK            = 6
   484  	SQLITE_STATUS_SCRATCH_OVERFLOW        = 4
   485  	SQLITE_STATUS_SCRATCH_SIZE            = 8
   486  	SQLITE_STATUS_SCRATCH_USED            = 3
   487  	SQLITE_STDCALL                        = 0
   488  	SQLITE_STMTSTATUS_AUTOINDEX           = 3
   489  	SQLITE_STMTSTATUS_FILTER_HIT          = 8
   490  	SQLITE_STMTSTATUS_FILTER_MISS         = 7
   491  	SQLITE_STMTSTATUS_FULLSCAN_STEP       = 1
   492  	SQLITE_STMTSTATUS_MEMUSED             = 99
   493  	SQLITE_STMTSTATUS_REPREPARE           = 5
   494  	SQLITE_STMTSTATUS_RUN                 = 6
   495  	SQLITE_STMTSTATUS_SORT                = 2
   496  	SQLITE_STMTSTATUS_VM_STEP             = 4
   497  	SQLITE_SUBTYPE                        = 0x000100000
   498  	SQLITE_SYNC_DATAONLY                  = 0x00010
   499  	SQLITE_SYNC_FULL                      = 0x00003
   500  	SQLITE_SYNC_NORMAL                    = 0x00002
   501  	SQLITE_SYSAPI                         = 0
   502  	SQLITE_TEMP_STORE                     = 1
   503  	SQLITE_TEST                           = 1
   504  	SQLITE_TESTCTRL_ALWAYS                = 13
   505  	SQLITE_TESTCTRL_ASSERT                = 12
   506  	SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS   = 10
   507  	SQLITE_TESTCTRL_BITVEC_TEST           = 8
   508  	SQLITE_TESTCTRL_BYTEORDER             = 22
   509  	SQLITE_TESTCTRL_EXPLAIN_STMT          = 19
   510  	SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS   = 29
   511  	SQLITE_TESTCTRL_FAULT_INSTALL         = 9
   512  	SQLITE_TESTCTRL_FIRST                 = 5
   513  	SQLITE_TESTCTRL_IMPOSTER              = 25
   514  	SQLITE_TESTCTRL_INTERNAL_FUNCTIONS    = 17
   515  	SQLITE_TESTCTRL_ISINIT                = 23
   516  	SQLITE_TESTCTRL_ISKEYWORD             = 16
   517  	SQLITE_TESTCTRL_LAST                  = 33
   518  	SQLITE_TESTCTRL_LOCALTIME_FAULT       = 18
   519  	SQLITE_TESTCTRL_LOGEST                = 33
   520  	SQLITE_TESTCTRL_NEVER_CORRUPT         = 20
   521  	SQLITE_TESTCTRL_ONCE_RESET_THRESHOLD  = 19
   522  	SQLITE_TESTCTRL_OPTIMIZATIONS         = 15
   523  	SQLITE_TESTCTRL_PARSER_COVERAGE       = 26
   524  	SQLITE_TESTCTRL_PENDING_BYTE          = 11
   525  	SQLITE_TESTCTRL_PRNG_RESET            = 7
   526  	SQLITE_TESTCTRL_PRNG_RESTORE          = 6
   527  	SQLITE_TESTCTRL_PRNG_SAVE             = 5
   528  	SQLITE_TESTCTRL_PRNG_SEED             = 28
   529  	SQLITE_TESTCTRL_RESERVE               = 14
   530  	SQLITE_TESTCTRL_RESULT_INTREAL        = 27
   531  	SQLITE_TESTCTRL_SCRATCHMALLOC         = 17
   532  	SQLITE_TESTCTRL_SEEK_COUNT            = 30
   533  	SQLITE_TESTCTRL_SORTER_MMAP           = 24
   534  	SQLITE_TESTCTRL_TRACEFLAGS            = 31
   535  	SQLITE_TESTCTRL_TUNE                  = 32
   536  	SQLITE_TESTCTRL_VDBE_COVERAGE         = 21
   537  	SQLITE_TEXT                           = 3
   538  	SQLITE_THREADSAFE                     = 1
   539  	SQLITE_TOOBIG                         = 18
   540  	SQLITE_TRACE_CLOSE                    = 0x08
   541  	SQLITE_TRACE_PROFILE                  = 0x02
   542  	SQLITE_TRACE_ROW                      = 0x04
   543  	SQLITE_TRACE_STMT                     = 0x01
   544  	SQLITE_TRANSACTION                    = 22
   545  	SQLITE_TXN_NONE                       = 0
   546  	SQLITE_TXN_READ                       = 1
   547  	SQLITE_TXN_WRITE                      = 2
   548  	SQLITE_UPDATE                         = 23
   549  	SQLITE_UTF16                          = 4
   550  	SQLITE_UTF16BE                        = 3
   551  	SQLITE_UTF16LE                        = 2
   552  	SQLITE_UTF16_ALIGNED                  = 8
   553  	SQLITE_UTF8                           = 1
   554  	SQLITE_VERSION                        = "3.39.3"
   555  	SQLITE_VERSION_NUMBER                 = 3039003
   556  	SQLITE_VTAB_CONSTRAINT_SUPPORT        = 1
   557  	SQLITE_VTAB_DIRECTONLY                = 3
   558  	SQLITE_VTAB_INNOCUOUS                 = 2
   559  	SQLITE_WARNING                        = 28
   560  	SQLITE_WARNING_AUTOINDEX              = 284
   561  	SQLITE_WIN32_DATA_DIRECTORY_TYPE      = 1
   562  	SQLITE_WIN32_TEMP_DIRECTORY_TYPE      = 2
   563  	TMP_MAX                               = 0x7fffffff
   564  	UNIQUE_TABLE_NAME                     = "t592690916721053953805701627921227776"
   565  	X_ASSERT_H_                           = 0
   566  	X_BIG_ENDIAN                          = 4321
   567  	X_BYTE_ORDER                          = 1234
   568  	X_CLOCKID_T_DEFINED_                  = 0
   569  	X_CLOCK_T_DEFINED_                    = 0
   570  	X_FILE_OFFSET_BITS                    = 64
   571  	X_FSTDIO                              = 0
   572  	X_FTS5_H                              = 0
   573  	X_HAVE_SQLITE_CONFIG_H                = 1
   574  	X_INT16_T_DEFINED_                    = 0
   575  	X_INT32_T_DEFINED_                    = 0
   576  	X_INT64_T_DEFINED_                    = 0
   577  	X_INT8_T_DEFINED_                     = 0
   578  	X_IOFBF                               = 0
   579  	X_IOLBF                               = 1
   580  	X_IONBF                               = 2
   581  	X_LITTLE_ENDIAN                       = 1234
   582  	X_LOCALE_T_DEFINED_                   = 0
   583  	X_LP64                                = 1
   584  	X_MACHINE_CDEFS_H_                    = 0
   585  	X_MACHINE_ENDIAN_H_                   = 0
   586  	X_MACHINE__TYPES_H_                   = 0
   587  	X_MAX_PAGE_SHIFT                      = 12
   588  	X_OFF_T_DEFINED_                      = 0
   589  	X_PDP_ENDIAN                          = 3412
   590  	X_PID_T_DEFINED_                      = 0
   591  	X_QUAD_HIGHWORD                       = 1
   592  	X_QUAD_LOWWORD                        = 0
   593  	X_RET_PROTECTOR                       = 1
   594  	X_SIZE_T_DEFINED_                     = 0
   595  	X_SQLITE3RTREE_H_                     = 0
   596  	X_SSIZE_T_DEFINED_                    = 0
   597  	X_STACKALIGNBYTES                     = 15
   598  	X_STDARG_H_                           = 0
   599  	X_STDIO_H_                            = 0
   600  	X_STRINGS_H_                          = 0
   601  	X_STRING_H_                           = 0
   602  	X_SYS_CDEFS_H_                        = 0
   603  	X_SYS_ENDIAN_H_                       = 0
   604  	X_SYS_TYPES_H_                        = 0
   605  	X_SYS__ENDIAN_H_                      = 0
   606  	X_SYS__TYPES_H_                       = 0
   607  	X_TIMER_T_DEFINED_                    = 0
   608  	X_TIME_T_DEFINED_                     = 0
   609  	X_UINT16_T_DEFINED_                   = 0
   610  	X_UINT32_T_DEFINED_                   = 0
   611  	X_UINT64_T_DEFINED_                   = 0
   612  	X_UINT8_T_DEFINED_                    = 0
   613  	Unix                                  = 1
   614  	CRTIMPORT                             = 0
   615  	DLLIMPORT                             = 0
   616  	INLINE                                = 0
   617  	MP_DIGIT_DECLARED                     = 0
   618  	MP_INT_DECLARED                       = 0
   619  	NUM_STATIC_TOKENS                     = 20
   620  	SQLITE_TCLAPI                         = 0
   621  	TCL_ALLOW_INLINE_COMPILATION          = 0x20000
   622  	TCL_ALL_EVENTS                        = -3
   623  	TCL_ALPHA_RELEASE                     = 0
   624  	TCL_APPEND_VALUE                      = 4
   625  	TCL_ARGV_CONSTANT                     = 15
   626  	TCL_ARGV_END                          = 23
   627  	TCL_ARGV_FLOAT                        = 19
   628  	TCL_ARGV_FUNC                         = 20
   629  	TCL_ARGV_GENFUNC                      = 21
   630  	TCL_ARGV_HELP                         = 22
   631  	TCL_ARGV_INT                          = 16
   632  	TCL_ARGV_REST                         = 18
   633  	TCL_ARGV_STRING                       = 17
   634  	TCL_BETA_RELEASE                      = 1
   635  	TCL_BREAK                             = 3
   636  	TCL_CANCEL_UNWIND                     = 0x100000
   637  	TCL_CHANNEL_THREAD_INSERT             = 0
   638  	TCL_CHANNEL_THREAD_REMOVE             = 1
   639  	TCL_CLOSE_READ                        = 2
   640  	TCL_CLOSE_WRITE                       = 4
   641  	TCL_CONTINUE                          = 4
   642  	TCL_CONVERT_MULTIBYTE                 = -1
   643  	TCL_CONVERT_NOSPACE                   = -4
   644  	TCL_CONVERT_SYNTAX                    = -2
   645  	TCL_CONVERT_UNKNOWN                   = -3
   646  	TCL_CREATE_HARD_LINK                  = 0x02
   647  	TCL_CREATE_SYMBOLIC_LINK              = 0x01
   648  	TCL_CUSTOM_PTR_KEYS                   = -1
   649  	TCL_CUSTOM_TYPE_KEYS                  = -2
   650  	TCL_DONT_QUOTE_HASH                   = 8
   651  	TCL_DONT_USE_BRACES                   = 1
   652  	TCL_DONT_WAIT                         = 2
   653  	TCL_DOUBLE_SPACE                      = 27
   654  	TCL_DSTRING_STATIC_SIZE               = 200
   655  	TCL_ENCODING_CHAR_LIMIT               = 0x10
   656  	TCL_ENCODING_END                      = 0x02
   657  	TCL_ENCODING_NO_TERMINATE             = 0x08
   658  	TCL_ENCODING_START                    = 0x01
   659  	TCL_ENCODING_STOPONERROR              = 0x04
   660  	TCL_ENFORCE_MODE                      = 16
   661  	TCL_ENSEMBLE_PREFIX                   = 0x02
   662  	TCL_ERROR                             = 1
   663  	TCL_EVAL_DIRECT                       = 0x040000
   664  	TCL_EVAL_GLOBAL                       = 0x020000
   665  	TCL_EVAL_INVOKE                       = 0x080000
   666  	TCL_EVAL_NOERR                        = 0x200000
   667  	TCL_EXACT                             = 1
   668  	TCL_EXCEPTION                         = 8
   669  	TCL_FILE_EVENTS                       = 8
   670  	TCL_FINAL_RELEASE                     = 2
   671  	TCL_GLOBAL_ONLY                       = 1
   672  	TCL_GLOB_PERM_HIDDEN                  = 2
   673  	TCL_GLOB_PERM_R                       = 4
   674  	TCL_GLOB_PERM_RONLY                   = 1
   675  	TCL_GLOB_PERM_W                       = 8
   676  	TCL_GLOB_PERM_X                       = 16
   677  	TCL_GLOB_TYPE_BLOCK                   = 1
   678  	TCL_GLOB_TYPE_CHAR                    = 2
   679  	TCL_GLOB_TYPE_DIR                     = 4
   680  	TCL_GLOB_TYPE_FILE                    = 16
   681  	TCL_GLOB_TYPE_LINK                    = 32
   682  	TCL_GLOB_TYPE_MOUNT                   = 128
   683  	TCL_GLOB_TYPE_PIPE                    = 8
   684  	TCL_GLOB_TYPE_SOCK                    = 64
   685  	TCL_HASH_KEY_RANDOMIZE_HASH           = 0x1
   686  	TCL_HASH_KEY_STORE_HASH               = 1
   687  	TCL_HASH_KEY_SYSTEM_HASH              = 0x2
   688  	TCL_HASH_KEY_TYPE_VERSION             = 1
   689  	TCL_IDLE_EVENTS                       = 32
   690  	TCL_INTEGER_SPACE                     = 24
   691  	TCL_INTERP_DESTROYED                  = 0x100
   692  	TCL_LEAVE_ERR_MSG                     = 0x200
   693  	TCL_LIMIT_COMMANDS                    = 0x01
   694  	TCL_LIMIT_TIME                        = 0x02
   695  	TCL_LINK_BOOLEAN                      = 3
   696  	TCL_LINK_CHAR                         = 6
   697  	TCL_LINK_DOUBLE                       = 2
   698  	TCL_LINK_FLOAT                        = 13
   699  	TCL_LINK_INT                          = 1
   700  	TCL_LINK_LONG                         = 11
   701  	TCL_LINK_READ_ONLY                    = 0x80
   702  	TCL_LINK_SHORT                        = 8
   703  	TCL_LINK_STRING                       = 4
   704  	TCL_LINK_UCHAR                        = 7
   705  	TCL_LINK_UINT                         = 10
   706  	TCL_LINK_ULONG                        = 12
   707  	TCL_LINK_USHORT                       = 9
   708  	TCL_LINK_WIDE_INT                     = 5
   709  	TCL_LINK_WIDE_UINT                    = 14
   710  	TCL_LIST_ELEMENT                      = 8
   711  	TCL_LL_MODIFIER                       = "ll"
   712  	TCL_LOAD_GLOBAL                       = 1
   713  	TCL_LOAD_LAZY                         = 2
   714  	TCL_MAJOR_VERSION                     = 8
   715  	TCL_MATCH_NOCASE                      = 1
   716  	TCL_MAX_PREC                          = 17
   717  	TCL_MINOR_VERSION                     = 6
   718  	TCL_MODE_BLOCKING                     = 0
   719  	TCL_MODE_NONBLOCKING                  = 1
   720  	TCL_NAMESPACE_ONLY                    = 2
   721  	TCL_NORETURN1                         = 0
   722  	TCL_NO_EVAL                           = 0x010000
   723  	TCL_OK                                = 0
   724  	TCL_ONE_WORD_KEYS                     = 1
   725  	TCL_PARSE_BAD_NUMBER                  = 9
   726  	TCL_PARSE_BRACE_EXTRA                 = 2
   727  	TCL_PARSE_MISSING_BRACE               = 3
   728  	TCL_PARSE_MISSING_BRACKET             = 4
   729  	TCL_PARSE_MISSING_PAREN               = 5
   730  	TCL_PARSE_MISSING_QUOTE               = 6
   731  	TCL_PARSE_MISSING_VAR_BRACE           = 7
   732  	TCL_PARSE_PART1                       = 0x400
   733  	TCL_PARSE_QUOTE_EXTRA                 = 1
   734  	TCL_PARSE_SUCCESS                     = 0
   735  	TCL_PARSE_SYNTAX                      = 8
   736  	TCL_PATCH_LEVEL                       = "8.6.12"
   737  	TCL_READABLE                          = 2
   738  	TCL_REG_ADVANCED                      = 000003
   739  	TCL_REG_ADVF                          = 000002
   740  	TCL_REG_BASIC                         = 000000
   741  	TCL_REG_CANMATCH                      = 001000
   742  	TCL_REG_EXPANDED                      = 000040
   743  	TCL_REG_EXTENDED                      = 000001
   744  	TCL_REG_NEWLINE                       = 000300
   745  	TCL_REG_NLANCH                        = 000200
   746  	TCL_REG_NLSTOP                        = 000100
   747  	TCL_REG_NOCASE                        = 000010
   748  	TCL_REG_NOSUB                         = 000020
   749  	TCL_REG_NOTBOL                        = 0001
   750  	TCL_REG_NOTEOL                        = 0002
   751  	TCL_REG_QUOTE                         = 000004
   752  	TCL_RELEASE_LEVEL                     = 2
   753  	TCL_RELEASE_SERIAL                    = 12
   754  	TCL_RESULT_SIZE                       = 200
   755  	TCL_RETURN                            = 2
   756  	TCL_SERVICE_ALL                       = 1
   757  	TCL_SERVICE_NONE                      = 0
   758  	TCL_SMALL_HASH_TABLE                  = 4
   759  	TCL_STDERR                            = 8
   760  	TCL_STDIN                             = 2
   761  	TCL_STDOUT                            = 4
   762  	TCL_STORAGE_CLASS                     = 0
   763  	TCL_STRING_KEYS                       = 0
   764  	TCL_SUBST_ALL                         = 007
   765  	TCL_SUBST_BACKSLASHES                 = 004
   766  	TCL_SUBST_COMMANDS                    = 001
   767  	TCL_SUBST_VARIABLES                   = 002
   768  	TCL_THREAD_CREATE_RETURN              = 0
   769  	TCL_THREAD_JOINABLE                   = 1
   770  	TCL_THREAD_NOFLAGS                    = 0
   771  	TCL_THREAD_STACK_DEFAULT              = 0
   772  	TCL_TIMER_EVENTS                      = 16
   773  	TCL_TOKEN_BS                          = 8
   774  	TCL_TOKEN_COMMAND                     = 16
   775  	TCL_TOKEN_EXPAND_WORD                 = 256
   776  	TCL_TOKEN_OPERATOR                    = 128
   777  	TCL_TOKEN_SIMPLE_WORD                 = 2
   778  	TCL_TOKEN_SUB_EXPR                    = 64
   779  	TCL_TOKEN_TEXT                        = 4
   780  	TCL_TOKEN_VARIABLE                    = 32
   781  	TCL_TOKEN_WORD                        = 1
   782  	TCL_TRACE_ARRAY                       = 0x800
   783  	TCL_TRACE_DELETE                      = 0x4000
   784  	TCL_TRACE_DESTROYED                   = 0x80
   785  	TCL_TRACE_OLD_STYLE                   = 0x1000
   786  	TCL_TRACE_READS                       = 0x10
   787  	TCL_TRACE_RENAME                      = 0x2000
   788  	TCL_TRACE_RESULT_DYNAMIC              = 0x8000
   789  	TCL_TRACE_RESULT_OBJECT               = 0x10000
   790  	TCL_TRACE_UNSETS                      = 0x40
   791  	TCL_TRACE_WRITES                      = 0x20
   792  	TCL_UNLOAD_DETACH_FROM_INTERPRETER    = 1
   793  	TCL_UNLOAD_DETACH_FROM_PROCESS        = 2
   794  	TCL_UTF_MAX                           = 3
   795  	TCL_VERSION                           = "8.6"
   796  	TCL_WINDOW_EVENTS                     = 4
   797  	TCL_WRITABLE                          = 4
   798  	TCL_ZLIB_COMPRESS_BEST                = 9
   799  	TCL_ZLIB_COMPRESS_DEFAULT             = -1
   800  	TCL_ZLIB_COMPRESS_FAST                = 1
   801  	TCL_ZLIB_COMPRESS_NONE                = 0
   802  	TCL_ZLIB_FINALIZE                     = 4
   803  	TCL_ZLIB_FLUSH                        = 2
   804  	TCL_ZLIB_FORMAT_AUTO                  = 8
   805  	TCL_ZLIB_FORMAT_GZIP                  = 4
   806  	TCL_ZLIB_FORMAT_RAW                   = 1
   807  	TCL_ZLIB_FORMAT_ZLIB                  = 2
   808  	TCL_ZLIB_FULLFLUSH                    = 3
   809  	TCL_ZLIB_NO_FLUSH                     = 0
   810  	TCL_ZLIB_STREAM_DEFLATE               = 16
   811  	TCL_ZLIB_STREAM_INFLATE               = 32
   812  	X_CLIENTDATA                          = 0
   813  	X_TCL                                 = 0
   814  	X_TCLDECLS                            = 0
   815  	X_TCLPLATDECLS                        = 0
   816  	X_FTSINT_H                            = 0
   817  	FTS3_TOK_SCHEMA                       = "CREATE TABLE x(input HIDDEN, token, start, end, position)"
   818  	APND_MARK_FOS_SZ                      = 8
   819  	APND_MARK_PREFIX                      = "Start-Of-SQLite3-"
   820  	APND_MARK_PREFIX_SZ                   = 17
   821  	APND_MARK_SIZE                        = 25
   822  	APND_MAX_SIZE                         = 1073741824
   823  	APND_ROUNDUP                          = 4096
   824  	SQLITE3EXT_H                          = 0
   825  	SQLITE_EXTENSION_INIT1                = 0
   826  	SQLITE_EXTENSION_INIT3                = 0
   827  	AMATCH_COL_COMMAND                    = 3
   828  	AMATCH_COL_DISTANCE                   = 1
   829  	AMATCH_COL_LANGUAGE                   = 2
   830  	AMATCH_COL_NWORD                      = 4
   831  	AMATCH_COL_WORD                       = 0
   832  	AMATCH_MX_COST                        = 1000
   833  	AMATCH_MX_LANGID                      = 2147483647
   834  	AMATCH_MX_LENGTH                      = 50
   835  	EXIT_FAILURE                          = 1
   836  	EXIT_SUCCESS                          = 0
   837  	RAND_MAX                              = 0x7fffffff
   838  	X_B                                   = 0x80
   839  	X_C                                   = 0x20
   840  	X_CTYPE_H_                            = 0
   841  	X_L                                   = 0x02
   842  	X_N                                   = 0x04
   843  	X_P                                   = 0x10
   844  	X_S                                   = 0x08
   845  	X_STDLIB_H_                           = 0
   846  	X_U                                   = 0x01
   847  	X_WCHAR_T_DEFINED_                    = 0
   848  	X_X                                   = 0x40
   849  	CARRAY_COLUMN_COUNT                   = 2
   850  	CARRAY_COLUMN_CTYPE                   = 3
   851  	CARRAY_COLUMN_POINTER                 = 1
   852  	CARRAY_COLUMN_VALUE                   = 0
   853  	CARRAY_DOUBLE                         = 2
   854  	CARRAY_INT32                          = 0
   855  	CARRAY_INT64                          = 1
   856  	CARRAY_TEXT                           = 3
   857  	CLOSURE_COL_DEPTH                     = 1
   858  	CLOSURE_COL_ID                        = 0
   859  	CLOSURE_COL_IDCOLUMN                  = 4
   860  	CLOSURE_COL_PARENTCOLUMN              = 5
   861  	CLOSURE_COL_ROOT                      = 2
   862  	CLOSURE_COL_TABLENAME                 = 3
   863  	CSVTEST_FIDX                          = 0x0001
   864  	CSV_INBUFSZ                           = 1024
   865  	CSV_MXERR                             = 200
   866  	EXPLN_COLUMN_ADDR                     = 0
   867  	EXPLN_COLUMN_COMMENT                  = 7
   868  	EXPLN_COLUMN_OPCODE                   = 1
   869  	EXPLN_COLUMN_P1                       = 2
   870  	EXPLN_COLUMN_P2                       = 3
   871  	EXPLN_COLUMN_P3                       = 4
   872  	EXPLN_COLUMN_P4                       = 5
   873  	EXPLN_COLUMN_P5                       = 6
   874  	EXPLN_COLUMN_SQL                      = 8
   875  	ACCESSPERMS                           = 511
   876  	ALLPERMS                              = 4095
   877  	AT_EACCESS                            = 0x01
   878  	AT_FDCWD                              = -100
   879  	AT_REMOVEDIR                          = 0x08
   880  	AT_SYMLINK_FOLLOW                     = 0x04
   881  	AT_SYMLINK_NOFOLLOW                   = 0x02
   882  	CLK_TCK                               = 100
   883  	CLOCKS_PER_SEC                        = 100
   884  	CLOCK_BOOTTIME                        = 6
   885  	CLOCK_MONOTONIC                       = 3
   886  	CLOCK_PROCESS_CPUTIME_ID              = 2
   887  	CLOCK_REALTIME                        = 0
   888  	CLOCK_THREAD_CPUTIME_ID               = 4
   889  	CLOCK_UPTIME                          = 5
   890  	DEFFILEMODE                           = 438
   891  	DIRBLKSIZ                             = 1024
   892  	DST_AUST                              = 2
   893  	DST_CAN                               = 6
   894  	DST_EET                               = 5
   895  	DST_MET                               = 4
   896  	DST_NONE                              = 0
   897  	DST_USA                               = 1
   898  	DST_WET                               = 3
   899  	DT_BLK                                = 6
   900  	DT_CHR                                = 2
   901  	DT_DIR                                = 4
   902  	DT_FIFO                               = 1
   903  	DT_LNK                                = 10
   904  	DT_REG                                = 8
   905  	DT_SOCK                               = 12
   906  	DT_UNKNOWN                            = 0
   907  	E2BIG                                 = 7
   908  	EACCES                                = 13
   909  	EADDRINUSE                            = 48
   910  	EADDRNOTAVAIL                         = 49
   911  	EAFNOSUPPORT                          = 47
   912  	EAGAIN                                = 35
   913  	EALREADY                              = 37
   914  	EAUTH                                 = 80
   915  	EBADF                                 = 9
   916  	EBADMSG                               = 92
   917  	EBADRPC                               = 72
   918  	EBUSY                                 = 16
   919  	ECANCELED                             = 88
   920  	ECHILD                                = 10
   921  	ECONNABORTED                          = 53
   922  	ECONNREFUSED                          = 61
   923  	ECONNRESET                            = 54
   924  	EDEADLK                               = 11
   925  	EDESTADDRREQ                          = 39
   926  	EDOM                                  = 33
   927  	EDQUOT                                = 69
   928  	EEXIST                                = 17
   929  	EFAULT                                = 14
   930  	EFBIG                                 = 27
   931  	EFTYPE                                = 79
   932  	EHOSTDOWN                             = 64
   933  	EHOSTUNREACH                          = 65
   934  	EIDRM                                 = 89
   935  	EILSEQ                                = 84
   936  	EINPROGRESS                           = 36
   937  	EINTR                                 = 4
   938  	EINVAL                                = 22
   939  	EIO                                   = 5
   940  	EIPSEC                                = 82
   941  	EISCONN                               = 56
   942  	EISDIR                                = 21
   943  	ELAST                                 = 95
   944  	ELOOP                                 = 62
   945  	EMEDIUMTYPE                           = 86
   946  	EMFILE                                = 24
   947  	EMLINK                                = 31
   948  	EMSGSIZE                              = 40
   949  	ENAMETOOLONG                          = 63
   950  	ENEEDAUTH                             = 81
   951  	ENETDOWN                              = 50
   952  	ENETRESET                             = 52
   953  	ENETUNREACH                           = 51
   954  	ENFILE                                = 23
   955  	ENOATTR                               = 83
   956  	ENOBUFS                               = 55
   957  	ENODEV                                = 19
   958  	ENOENT                                = 2
   959  	ENOEXEC                               = 8
   960  	ENOLCK                                = 77
   961  	ENOMEDIUM                             = 85
   962  	ENOMEM                                = 12
   963  	ENOMSG                                = 90
   964  	ENOPROTOOPT                           = 42
   965  	ENOSPC                                = 28
   966  	ENOSYS                                = 78
   967  	ENOTBLK                               = 15
   968  	ENOTCONN                              = 57
   969  	ENOTDIR                               = 20
   970  	ENOTEMPTY                             = 66
   971  	ENOTRECOVERABLE                       = 93
   972  	ENOTSOCK                              = 38
   973  	ENOTSUP                               = 91
   974  	ENOTTY                                = 25
   975  	ENXIO                                 = 6
   976  	EOPNOTSUPP                            = 45
   977  	EOVERFLOW                             = 87
   978  	EOWNERDEAD                            = 94
   979  	EPERM                                 = 1
   980  	EPFNOSUPPORT                          = 46
   981  	EPIPE                                 = 32
   982  	EPROCLIM                              = 67
   983  	EPROCUNAVAIL                          = 76
   984  	EPROGMISMATCH                         = 75
   985  	EPROGUNAVAIL                          = 74
   986  	EPROTO                                = 95
   987  	EPROTONOSUPPORT                       = 43
   988  	EPROTOTYPE                            = 41
   989  	ERANGE                                = 34
   990  	EREMOTE                               = 71
   991  	EROFS                                 = 30
   992  	ERPCMISMATCH                          = 73
   993  	ESHUTDOWN                             = 58
   994  	ESOCKTNOSUPPORT                       = 44
   995  	ESPIPE                                = 29
   996  	ESRCH                                 = 3
   997  	ESTALE                                = 70
   998  	ETIMEDOUT                             = 60
   999  	ETOOMANYREFS                          = 59
  1000  	ETXTBSY                               = 26
  1001  	EUSERS                                = 68
  1002  	EWOULDBLOCK                           = 35
  1003  	EXDEV                                 = 18
  1004  	FAPPEND                               = 8
  1005  	FASYNC                                = 64
  1006  	FD_CLOEXEC                            = 1
  1007  	FD_SETSIZE                            = 1024
  1008  	FFSYNC                                = 128
  1009  	FNDELAY                               = 4
  1010  	FNONBLOCK                             = 4
  1011  	FREAD                                 = 0x0001
  1012  	FSDIR_COLUMN_DATA                     = 3
  1013  	FSDIR_COLUMN_DIR                      = 5
  1014  	FSDIR_COLUMN_MODE                     = 1
  1015  	FSDIR_COLUMN_MTIME                    = 2
  1016  	FSDIR_COLUMN_NAME                     = 0
  1017  	FSDIR_COLUMN_PATH                     = 4
  1018  	FSDIR_SCHEMA                          = "(name,mode,mtime,data,path HIDDEN,dir HIDDEN)"
  1019  	FWRITE                                = 0x0002
  1020  	F_DUPFD                               = 0
  1021  	F_DUPFD_CLOEXEC                       = 10
  1022  	F_GETFD                               = 1
  1023  	F_GETFL                               = 3
  1024  	F_GETLK                               = 7
  1025  	F_GETOWN                              = 5
  1026  	F_ISATTY                              = 11
  1027  	F_LOCK                                = 1
  1028  	F_OK                                  = 0
  1029  	F_RDLCK                               = 1
  1030  	F_SETFD                               = 2
  1031  	F_SETFL                               = 4
  1032  	F_SETLK                               = 8
  1033  	F_SETLKW                              = 9
  1034  	F_SETOWN                              = 6
  1035  	F_TEST                                = 3
  1036  	F_TLOCK                               = 2
  1037  	F_ULOCK                               = 0
  1038  	F_UNLCK                               = 2
  1039  	F_WRLCK                               = 3
  1040  	ITIMER_PROF                           = 2
  1041  	ITIMER_REAL                           = 0
  1042  	ITIMER_VIRTUAL                        = 1
  1043  	KBIND_BLOCK_MAX                       = 2
  1044  	KBIND_DATA_MAX                        = 24
  1045  	LOCK_EX                               = 0x02
  1046  	LOCK_NB                               = 0x04
  1047  	LOCK_SH                               = 0x01
  1048  	LOCK_UN                               = 0x08
  1049  	L_INCR                                = 1
  1050  	L_SET                                 = 0
  1051  	L_XTND                                = 2
  1052  	MAXNAMLEN                             = 255
  1053  	NBBY                                  = 8
  1054  	O_ACCMODE                             = 0x0003
  1055  	O_APPEND                              = 0x0008
  1056  	O_ASYNC                               = 0x0040
  1057  	O_CLOEXEC                             = 0x10000
  1058  	O_CREAT                               = 0x0200
  1059  	O_DIRECTORY                           = 0x20000
  1060  	O_DSYNC                               = 128
  1061  	O_EXCL                                = 0x0800
  1062  	O_EXLOCK                              = 0x0020
  1063  	O_FSYNC                               = 0x0080
  1064  	O_NDELAY                              = 4
  1065  	O_NOCTTY                              = 0x8000
  1066  	O_NOFOLLOW                            = 0x0100
  1067  	O_NONBLOCK                            = 0x0004
  1068  	O_RDONLY                              = 0x0000
  1069  	O_RDWR                                = 0x0002
  1070  	O_RSYNC                               = 128
  1071  	O_SHLOCK                              = 0x0010
  1072  	O_SYNC                                = 0x0080
  1073  	O_TRUNC                               = 0x0400
  1074  	O_WRONLY                              = 0x0001
  1075  	R_OK                                  = 0x04
  1076  	SF_APPEND                             = 0x00040000
  1077  	SF_ARCHIVED                           = 0x00010000
  1078  	SF_IMMUTABLE                          = 0x00020000
  1079  	SF_SETTABLE                           = 0xffff0000
  1080  	STDERR_FILENO                         = 2
  1081  	STDIN_FILENO                          = 0
  1082  	STDOUT_FILENO                         = 1
  1083  	S_BLKSIZE                             = 512
  1084  	S_IEXEC                               = 64
  1085  	S_IFBLK                               = 0060000
  1086  	S_IFCHR                               = 0020000
  1087  	S_IFDIR                               = 0040000
  1088  	S_IFIFO                               = 0010000
  1089  	S_IFLNK                               = 0120000
  1090  	S_IFMT                                = 0170000
  1091  	S_IFREG                               = 0100000
  1092  	S_IFSOCK                              = 0140000
  1093  	S_IREAD                               = 256
  1094  	S_IRGRP                               = 0000040
  1095  	S_IROTH                               = 0000004
  1096  	S_IRUSR                               = 0000400
  1097  	S_IRWXG                               = 0000070
  1098  	S_IRWXO                               = 0000007
  1099  	S_IRWXU                               = 0000700
  1100  	S_ISGID                               = 0002000
  1101  	S_ISTXT                               = 0001000
  1102  	S_ISUID                               = 0004000
  1103  	S_ISVTX                               = 0001000
  1104  	S_IWGRP                               = 0000020
  1105  	S_IWOTH                               = 0000002
  1106  	S_IWRITE                              = 128
  1107  	S_IWUSR                               = 0000200
  1108  	S_IXGRP                               = 0000010
  1109  	S_IXOTH                               = 0000001
  1110  	S_IXUSR                               = 0000100
  1111  	TIMER_ABSTIME                         = 0x1
  1112  	TIMER_RELTIME                         = 0x0
  1113  	TIME_UTC                              = 1
  1114  	UF_APPEND                             = 0x00000004
  1115  	UF_IMMUTABLE                          = 0x00000002
  1116  	UF_NODUMP                             = 0x00000001
  1117  	UF_OPAQUE                             = 0x00000008
  1118  	UF_SETTABLE                           = 0x0000ffff
  1119  	UTIME_NOW                             = -2
  1120  	UTIME_OMIT                            = -1
  1121  	W_OK                                  = 0x02
  1122  	X_OK                                  = 0x01
  1123  	X_CS_PATH                             = 1
  1124  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS      = 2
  1125  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS     = 3
  1126  	X_CS_POSIX_V6_ILP32_OFF32_LIBS        = 4
  1127  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS     = 5
  1128  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS    = 6
  1129  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS       = 7
  1130  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS       = 8
  1131  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS      = 9
  1132  	X_CS_POSIX_V6_LP64_OFF64_LIBS         = 10
  1133  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS     = 11
  1134  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS    = 12
  1135  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS       = 13
  1136  	X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS   = 14
  1137  	X_CS_POSIX_V7_ILP32_OFF32_CFLAGS      = 16
  1138  	X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS     = 17
  1139  	X_CS_POSIX_V7_ILP32_OFF32_LIBS        = 18
  1140  	X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS     = 19
  1141  	X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS    = 20
  1142  	X_CS_POSIX_V7_ILP32_OFFBIG_LIBS       = 21
  1143  	X_CS_POSIX_V7_LP64_OFF64_CFLAGS       = 22
  1144  	X_CS_POSIX_V7_LP64_OFF64_LDFLAGS      = 23
  1145  	X_CS_POSIX_V7_LP64_OFF64_LIBS         = 24
  1146  	X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS     = 25
  1147  	X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS    = 26
  1148  	X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS       = 27
  1149  	X_CS_POSIX_V7_THREADS_CFLAGS          = 28
  1150  	X_CS_POSIX_V7_THREADS_LDFLAGS         = 29
  1151  	X_CS_POSIX_V7_WIDTH_RESTRICTED_ENVS   = 30
  1152  	X_CS_V6_ENV                           = 15
  1153  	X_CS_V7_ENV                           = 31
  1154  	X_DIRENT_H_                           = 0
  1155  	X_ERRNO_H_                            = 0
  1156  	X_GETOPT_DEFINED_                     = 0
  1157  	X_INTPTR_T_DEFINED_                   = 0
  1158  	X_PC_2_SYMLINKS                       = 10
  1159  	X_PC_ALLOC_SIZE_MIN                   = 11
  1160  	X_PC_ASYNC_IO                         = 12
  1161  	X_PC_CHOWN_RESTRICTED                 = 7
  1162  	X_PC_FILESIZEBITS                     = 13
  1163  	X_PC_LINK_MAX                         = 1
  1164  	X_PC_MAX_CANON                        = 2
  1165  	X_PC_MAX_INPUT                        = 3
  1166  	X_PC_NAME_MAX                         = 4
  1167  	X_PC_NO_TRUNC                         = 8
  1168  	X_PC_PATH_MAX                         = 5
  1169  	X_PC_PIPE_BUF                         = 6
  1170  	X_PC_PRIO_IO                          = 14
  1171  	X_PC_REC_INCR_XFER_SIZE               = 15
  1172  	X_PC_REC_MAX_XFER_SIZE                = 16
  1173  	X_PC_REC_MIN_XFER_SIZE                = 17
  1174  	X_PC_REC_XFER_ALIGN                   = 18
  1175  	X_PC_SYMLINK_MAX                      = 19
  1176  	X_PC_SYNC_IO                          = 20
  1177  	X_PC_TIMESTAMP_RESOLUTION             = 21
  1178  	X_PC_VDISABLE                         = 9
  1179  	X_POSIX2_CHAR_TERM                    = 1
  1180  	X_POSIX2_C_BIND                       = 200112
  1181  	X_POSIX2_C_DEV                        = -1
  1182  	X_POSIX2_FORT_DEV                     = -1
  1183  	X_POSIX2_FORT_RUN                     = -1
  1184  	X_POSIX2_LOCALEDEF                    = -1
  1185  	X_POSIX2_PBS                          = -1
  1186  	X_POSIX2_PBS_ACCOUNTING               = -1
  1187  	X_POSIX2_PBS_CHECKPOINT               = -1
  1188  	X_POSIX2_PBS_LOCATE                   = -1
  1189  	X_POSIX2_PBS_MESSAGE                  = -1
  1190  	X_POSIX2_PBS_TRACK                    = -1
  1191  	X_POSIX2_SW_DEV                       = 200112
  1192  	X_POSIX2_UPE                          = 200112
  1193  	X_POSIX2_VERSION                      = 200809
  1194  	X_POSIX_ADVISORY_INFO                 = -1
  1195  	X_POSIX_ASYNCHRONOUS_IO               = -1
  1196  	X_POSIX_ASYNC_IO                      = -1
  1197  	X_POSIX_BARRIERS                      = 200112
  1198  	X_POSIX_CHOWN_RESTRICTED              = 1
  1199  	X_POSIX_CLOCK_SELECTION               = -1
  1200  	X_POSIX_CPUTIME                       = 200809
  1201  	X_POSIX_FSYNC                         = 200112
  1202  	X_POSIX_IPV6                          = 0
  1203  	X_POSIX_JOB_CONTROL                   = 1
  1204  	X_POSIX_MAPPED_FILES                  = 200112
  1205  	X_POSIX_MEMLOCK                       = 200112
  1206  	X_POSIX_MEMLOCK_RANGE                 = 200112
  1207  	X_POSIX_MEMORY_PROTECTION             = 200112
  1208  	X_POSIX_MESSAGE_PASSING               = -1
  1209  	X_POSIX_MONOTONIC_CLOCK               = 200112
  1210  	X_POSIX_NO_TRUNC                      = 1
  1211  	X_POSIX_PRIORITIZED_IO                = -1
  1212  	X_POSIX_PRIORITY_SCHEDULING           = -1
  1213  	X_POSIX_PRIO_IO                       = -1
  1214  	X_POSIX_RAW_SOCKETS                   = 200112
  1215  	X_POSIX_READER_WRITER_LOCKS           = 200112
  1216  	X_POSIX_REALTIME_SIGNALS              = -1
  1217  	X_POSIX_REGEXP                        = 1
  1218  	X_POSIX_SAVED_IDS                     = 1
  1219  	X_POSIX_SEMAPHORES                    = 200112
  1220  	X_POSIX_SHARED_MEMORY_OBJECTS         = 200809
  1221  	X_POSIX_SHELL                         = 1
  1222  	X_POSIX_SPAWN                         = 200112
  1223  	X_POSIX_SPIN_LOCKS                    = 200112
  1224  	X_POSIX_SPORADIC_SERVER               = -1
  1225  	X_POSIX_SYNCHRONIZED_IO               = -1
  1226  	X_POSIX_SYNC_IO                       = -1
  1227  	X_POSIX_THREADS                       = 200112
  1228  	X_POSIX_THREAD_ATTR_STACKADDR         = 200112
  1229  	X_POSIX_THREAD_ATTR_STACKSIZE         = 200112
  1230  	X_POSIX_THREAD_CPUTIME                = 200809
  1231  	X_POSIX_THREAD_PRIORITY_SCHEDULING    = -1
  1232  	X_POSIX_THREAD_PRIO_INHERIT           = -1
  1233  	X_POSIX_THREAD_PRIO_PROTECT           = -1
  1234  	X_POSIX_THREAD_PROCESS_SHARED         = -1
  1235  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT    = -1
  1236  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT    = -1
  1237  	X_POSIX_THREAD_SAFE_FUNCTIONS         = 200112
  1238  	X_POSIX_THREAD_SPORADIC_SERVER        = -1
  1239  	X_POSIX_TIMEOUTS                      = 200112
  1240  	X_POSIX_TIMERS                        = -1
  1241  	X_POSIX_TRACE                         = -1
  1242  	X_POSIX_TRACE_EVENT_FILTER            = -1
  1243  	X_POSIX_TRACE_INHERIT                 = -1
  1244  	X_POSIX_TRACE_LOG                     = -1
  1245  	X_POSIX_TYPED_MEMORY_OBJECTS          = -1
  1246  	X_POSIX_V6_ILP32_OFF32                = -1
  1247  	X_POSIX_V6_ILP32_OFFBIG               = 0
  1248  	X_POSIX_V6_LP64_OFF64                 = 0
  1249  	X_POSIX_V6_LPBIG_OFFBIG               = 0
  1250  	X_POSIX_V7_ILP32_OFF32                = -1
  1251  	X_POSIX_V7_ILP32_OFFBIG               = 0
  1252  	X_POSIX_V7_LP64_OFF64                 = 0
  1253  	X_POSIX_V7_LPBIG_OFFBIG               = 0
  1254  	X_POSIX_VDISABLE                      = 255
  1255  	X_POSIX_VERSION                       = 200809
  1256  	X_SC_2_CHAR_TERM                      = 20
  1257  	X_SC_2_C_BIND                         = 18
  1258  	X_SC_2_C_DEV                          = 19
  1259  	X_SC_2_FORT_DEV                       = 21
  1260  	X_SC_2_FORT_RUN                       = 22
  1261  	X_SC_2_LOCALEDEF                      = 23
  1262  	X_SC_2_PBS                            = 35
  1263  	X_SC_2_PBS_ACCOUNTING                 = 36
  1264  	X_SC_2_PBS_CHECKPOINT                 = 37
  1265  	X_SC_2_PBS_LOCATE                     = 38
  1266  	X_SC_2_PBS_MESSAGE                    = 39
  1267  	X_SC_2_PBS_TRACK                      = 40
  1268  	X_SC_2_SW_DEV                         = 24
  1269  	X_SC_2_UPE                            = 25
  1270  	X_SC_2_VERSION                        = 17
  1271  	X_SC_ADVISORY_INFO                    = 41
  1272  	X_SC_AIO_LISTIO_MAX                   = 42
  1273  	X_SC_AIO_MAX                          = 43
  1274  	X_SC_AIO_PRIO_DELTA_MAX               = 44
  1275  	X_SC_ARG_MAX                          = 1
  1276  	X_SC_ASYNCHRONOUS_IO                  = 45
  1277  	X_SC_ATEXIT_MAX                       = 46
  1278  	X_SC_AVPHYS_PAGES                     = 501
  1279  	X_SC_BARRIERS                         = 47
  1280  	X_SC_BC_BASE_MAX                      = 9
  1281  	X_SC_BC_DIM_MAX                       = 10
  1282  	X_SC_BC_SCALE_MAX                     = 11
  1283  	X_SC_BC_STRING_MAX                    = 12
  1284  	X_SC_CHILD_MAX                        = 2
  1285  	X_SC_CLK_TCK                          = 3
  1286  	X_SC_CLOCK_SELECTION                  = 48
  1287  	X_SC_COLL_WEIGHTS_MAX                 = 13
  1288  	X_SC_CPUTIME                          = 49
  1289  	X_SC_DELAYTIMER_MAX                   = 50
  1290  	X_SC_EXPR_NEST_MAX                    = 14
  1291  	X_SC_FSYNC                            = 29
  1292  	X_SC_GETGR_R_SIZE_MAX                 = 100
  1293  	X_SC_GETPW_R_SIZE_MAX                 = 101
  1294  	X_SC_HOST_NAME_MAX                    = 33
  1295  	X_SC_IOV_MAX                          = 51
  1296  	X_SC_IPV6                             = 52
  1297  	X_SC_JOB_CONTROL                      = 6
  1298  	X_SC_LINE_MAX                         = 15
  1299  	X_SC_LOGIN_NAME_MAX                   = 102
  1300  	X_SC_MAPPED_FILES                     = 53
  1301  	X_SC_MEMLOCK                          = 54
  1302  	X_SC_MEMLOCK_RANGE                    = 55
  1303  	X_SC_MEMORY_PROTECTION                = 56
  1304  	X_SC_MESSAGE_PASSING                  = 57
  1305  	X_SC_MONOTONIC_CLOCK                  = 34
  1306  	X_SC_MQ_OPEN_MAX                      = 58
  1307  	X_SC_MQ_PRIO_MAX                      = 59
  1308  	X_SC_NGROUPS_MAX                      = 4
  1309  	X_SC_NPROCESSORS_CONF                 = 502
  1310  	X_SC_NPROCESSORS_ONLN                 = 503
  1311  	X_SC_OPEN_MAX                         = 5
  1312  	X_SC_PAGESIZE                         = 28
  1313  	X_SC_PAGE_SIZE                        = 28
  1314  	X_SC_PHYS_PAGES                       = 500
  1315  	X_SC_PRIORITIZED_IO                   = 60
  1316  	X_SC_PRIORITY_SCHEDULING              = 61
  1317  	X_SC_RAW_SOCKETS                      = 62
  1318  	X_SC_READER_WRITER_LOCKS              = 63
  1319  	X_SC_REALTIME_SIGNALS                 = 64
  1320  	X_SC_REGEXP                           = 65
  1321  	X_SC_RE_DUP_MAX                       = 16
  1322  	X_SC_RTSIG_MAX                        = 66
  1323  	X_SC_SAVED_IDS                        = 7
  1324  	X_SC_SEMAPHORES                       = 67
  1325  	X_SC_SEM_NSEMS_MAX                    = 31
  1326  	X_SC_SEM_VALUE_MAX                    = 32
  1327  	X_SC_SHARED_MEMORY_OBJECTS            = 68
  1328  	X_SC_SHELL                            = 69
  1329  	X_SC_SIGQUEUE_MAX                     = 70
  1330  	X_SC_SPAWN                            = 71
  1331  	X_SC_SPIN_LOCKS                       = 72
  1332  	X_SC_SPORADIC_SERVER                  = 73
  1333  	X_SC_SS_REPL_MAX                      = 74
  1334  	X_SC_STREAM_MAX                       = 26
  1335  	X_SC_SYMLOOP_MAX                      = 76
  1336  	X_SC_SYNCHRONIZED_IO                  = 75
  1337  	X_SC_THREADS                          = 91
  1338  	X_SC_THREAD_ATTR_STACKADDR            = 77
  1339  	X_SC_THREAD_ATTR_STACKSIZE            = 78
  1340  	X_SC_THREAD_CPUTIME                   = 79
  1341  	X_SC_THREAD_DESTRUCTOR_ITERATIONS     = 80
  1342  	X_SC_THREAD_KEYS_MAX                  = 81
  1343  	X_SC_THREAD_PRIORITY_SCHEDULING       = 84
  1344  	X_SC_THREAD_PRIO_INHERIT              = 82
  1345  	X_SC_THREAD_PRIO_PROTECT              = 83
  1346  	X_SC_THREAD_PROCESS_SHARED            = 85
  1347  	X_SC_THREAD_ROBUST_PRIO_INHERIT       = 86
  1348  	X_SC_THREAD_ROBUST_PRIO_PROTECT       = 87
  1349  	X_SC_THREAD_SAFE_FUNCTIONS            = 103
  1350  	X_SC_THREAD_SPORADIC_SERVER           = 88
  1351  	X_SC_THREAD_STACK_MIN                 = 89
  1352  	X_SC_THREAD_THREADS_MAX               = 90
  1353  	X_SC_TIMEOUTS                         = 92
  1354  	X_SC_TIMERS                           = 94
  1355  	X_SC_TIMER_MAX                        = 93
  1356  	X_SC_TRACE                            = 95
  1357  	X_SC_TRACE_EVENT_FILTER               = 96
  1358  	X_SC_TRACE_EVENT_NAME_MAX             = 97
  1359  	X_SC_TRACE_INHERIT                    = 98
  1360  	X_SC_TRACE_LOG                        = 99
  1361  	X_SC_TRACE_NAME_MAX                   = 104
  1362  	X_SC_TRACE_SYS_MAX                    = 105
  1363  	X_SC_TRACE_USER_EVENT_MAX             = 106
  1364  	X_SC_TTY_NAME_MAX                     = 107
  1365  	X_SC_TYPED_MEMORY_OBJECTS             = 108
  1366  	X_SC_TZNAME_MAX                       = 27
  1367  	X_SC_V6_ILP32_OFF32                   = 109
  1368  	X_SC_V6_ILP32_OFFBIG                  = 110
  1369  	X_SC_V6_LP64_OFF64                    = 111
  1370  	X_SC_V6_LPBIG_OFFBIG                  = 112
  1371  	X_SC_V7_ILP32_OFF32                   = 113
  1372  	X_SC_V7_ILP32_OFFBIG                  = 114
  1373  	X_SC_V7_LP64_OFF64                    = 115
  1374  	X_SC_V7_LPBIG_OFFBIG                  = 116
  1375  	X_SC_VERSION                          = 8
  1376  	X_SC_XOPEN_CRYPT                      = 117
  1377  	X_SC_XOPEN_ENH_I18N                   = 118
  1378  	X_SC_XOPEN_LEGACY                     = 119
  1379  	X_SC_XOPEN_REALTIME                   = 120
  1380  	X_SC_XOPEN_REALTIME_THREADS           = 121
  1381  	X_SC_XOPEN_SHM                        = 30
  1382  	X_SC_XOPEN_STREAMS                    = 122
  1383  	X_SC_XOPEN_UNIX                       = 123
  1384  	X_SC_XOPEN_UUCP                       = 124
  1385  	X_SC_XOPEN_VERSION                    = 125
  1386  	X_SELECT_DEFINED_                     = 0
  1387  	X_SIGSET_T_DEFINED_                   = 0
  1388  	X_SYS_DIRENT_H_                       = 0
  1389  	X_SYS_FCNTL_H_                        = 0
  1390  	X_SYS_SELECT_H_                       = 0
  1391  	X_SYS_STAT_H_                         = 0
  1392  	X_SYS_TIME_H_                         = 0
  1393  	X_SYS_UNISTD_H_                       = 0
  1394  	X_SYS__TIME_H_                        = 0
  1395  	X_TIMESPEC_DECLARED                   = 0
  1396  	X_TIMEVAL_DECLARED                    = 0
  1397  	X_TIME_H_                             = 0
  1398  	X_UNISTD_H_                           = 0
  1399  	X_UTIME_H_                            = 0
  1400  	X_XOPEN_CRYPT                         = 1
  1401  	X_XOPEN_ENH_I18N                      = -1
  1402  	X_XOPEN_LEGACY                        = -1
  1403  	X_XOPEN_REALTIME                      = -1
  1404  	X_XOPEN_REALTIME_THREADS              = -1
  1405  	X_XOPEN_SHM                           = 1
  1406  	X_XOPEN_STREAMS                       = -1
  1407  	X_XOPEN_UNIX                          = -1
  1408  	X_XOPEN_UUCP                          = -1
  1409  	FUZZER_HASH                           = 4001
  1410  	FUZZER_MX_COST                        = 1000
  1411  	FUZZER_MX_LENGTH                      = 50
  1412  	FUZZER_MX_OUTPUT_LENGTH               = 100
  1413  	FUZZER_MX_RULEID                      = 2147483647
  1414  	FUZZER_NQUEUE                         = 20
  1415  	CC_AND                                = 24
  1416  	CC_BANG                               = 15
  1417  	CC_COMMA                              = 23
  1418  	CC_DIGIT                              = 3
  1419  	CC_DOLLAR                             = 4
  1420  	CC_DOT                                = 26
  1421  	CC_EQ                                 = 14
  1422  	CC_GT                                 = 13
  1423  	CC_ID                                 = 2
  1424  	CC_ILLEGAL                            = 27
  1425  	CC_KYWD                               = 1
  1426  	CC_LP                                 = 17
  1427  	CC_LT                                 = 12
  1428  	CC_MINUS                              = 11
  1429  	CC_PERCENT                            = 22
  1430  	CC_PIPE                               = 10
  1431  	CC_PLUS                               = 20
  1432  	CC_QUOTE                              = 8
  1433  	CC_QUOTE2                             = 9
  1434  	CC_RP                                 = 18
  1435  	CC_SEMI                               = 19
  1436  	CC_SLASH                              = 16
  1437  	CC_SPACE                              = 7
  1438  	CC_STAR                               = 21
  1439  	CC_TILDA                              = 25
  1440  	CC_VARALPHA                           = 5
  1441  	CC_VARNUM                             = 6
  1442  	CC_X                                  = 0
  1443  	TK_BITAND                             = 3
  1444  	TK_BITNOT                             = 3
  1445  	TK_BITOR                              = 3
  1446  	TK_BLOB                               = 2
  1447  	TK_COMMA                              = 3
  1448  	TK_CONCAT                             = 3
  1449  	TK_DOT                                = 3
  1450  	TK_EQ                                 = 3
  1451  	TK_ERROR                              = 4
  1452  	TK_FLOAT                              = 2
  1453  	TK_GE                                 = 3
  1454  	TK_GT                                 = 3
  1455  	TK_ID                                 = 1
  1456  	TK_ILLEGAL                            = 4
  1457  	TK_INTEGER                            = 2
  1458  	TK_LE                                 = 3
  1459  	TK_LITERAL                            = 2
  1460  	TK_LP                                 = 3
  1461  	TK_LSHIFT                             = 3
  1462  	TK_LT                                 = 3
  1463  	TK_MINUS                              = 3
  1464  	TK_NAME                               = 1
  1465  	TK_NE                                 = 3
  1466  	TK_PLUS                               = 3
  1467  	TK_PUNCT                              = 3
  1468  	TK_REM                                = 3
  1469  	TK_RP                                 = 3
  1470  	TK_RSHIFT                             = 3
  1471  	TK_SEMI                               = 3
  1472  	TK_SLASH                              = 3
  1473  	TK_SPACE                              = 0
  1474  	TK_STAR                               = 3
  1475  	TK_STRING                             = 2
  1476  	TK_VARIABLE                           = 2
  1477  	Deliberate_fall_through               = 0
  1478  	QPVTAB_A                              = 6
  1479  	QPVTAB_B                              = 7
  1480  	QPVTAB_C                              = 8
  1481  	QPVTAB_CN                             = 2
  1482  	QPVTAB_D                              = 9
  1483  	QPVTAB_E                              = 10
  1484  	QPVTAB_FLAGS                          = 11
  1485  	QPVTAB_IX                             = 1
  1486  	QPVTAB_NONE                           = 12
  1487  	QPVTAB_OP                             = 3
  1488  	QPVTAB_RHS                            = 5
  1489  	QPVTAB_UX                             = 4
  1490  	QPVTAB_VN                             = 0
  1491  	RE_EOF                                = 0
  1492  	RE_OP_ACCEPT                          = 6
  1493  	RE_OP_ANY                             = 2
  1494  	RE_OP_ANYSTAR                         = 3
  1495  	RE_OP_BOUNDARY                        = 17
  1496  	RE_OP_CC_EXC                          = 8
  1497  	RE_OP_CC_INC                          = 7
  1498  	RE_OP_CC_RANGE                        = 10
  1499  	RE_OP_CC_VALUE                        = 9
  1500  	RE_OP_DIGIT                           = 13
  1501  	RE_OP_FORK                            = 4
  1502  	RE_OP_GOTO                            = 5
  1503  	RE_OP_MATCH                           = 1
  1504  	RE_OP_NOTDIGIT                        = 14
  1505  	RE_OP_NOTSPACE                        = 16
  1506  	RE_OP_NOTWORD                         = 12
  1507  	RE_OP_SPACE                           = 15
  1508  	RE_OP_WORD                            = 11
  1509  	SERIES_COLUMN_START                   = 1
  1510  	SERIES_COLUMN_STEP                    = 3
  1511  	SERIES_COLUMN_STOP                    = 2
  1512  	SERIES_COLUMN_VALUE                   = 0
  1513  	CCLASS_B                              = 2
  1514  	CCLASS_C                              = 3
  1515  	CCLASS_D                              = 4
  1516  	CCLASS_DIGIT                          = 10
  1517  	CCLASS_H                              = 5
  1518  	CCLASS_L                              = 6
  1519  	CCLASS_M                              = 8
  1520  	CCLASS_OTHER                          = 12
  1521  	CCLASS_R                              = 7
  1522  	CCLASS_SILENT                         = 0
  1523  	CCLASS_SPACE                          = 11
  1524  	CCLASS_VOWEL                          = 1
  1525  	CCLASS_Y                              = 9
  1526  	FINAL_INS_COST_DIV                    = 4
  1527  	SCRIPT_ARABIC                         = 0x0010
  1528  	SCRIPT_CYRILLIC                       = 0x0002
  1529  	SCRIPT_GREEK                          = 0x0004
  1530  	SCRIPT_HEBREW                         = 0x0008
  1531  	SCRIPT_LATIN                          = 0x0001
  1532  	SPELLFIX_COL_COMMAND                  = 11
  1533  	SPELLFIX_COL_DISTANCE                 = 2
  1534  	SPELLFIX_COL_LANGID                   = 3
  1535  	SPELLFIX_COL_MATCHLEN                 = 5
  1536  	SPELLFIX_COL_PHONEHASH                = 6
  1537  	SPELLFIX_COL_RANK                     = 1
  1538  	SPELLFIX_COL_SCOPE                    = 8
  1539  	SPELLFIX_COL_SCORE                    = 4
  1540  	SPELLFIX_COL_SOUNDSLIKE               = 10
  1541  	SPELLFIX_COL_SRCHCNT                  = 9
  1542  	SPELLFIX_COL_TOP                      = 7
  1543  	SPELLFIX_COL_WORD                     = 0
  1544  	SPELLFIX_IDXNUM_DIST                  = 48
  1545  	SPELLFIX_IDXNUM_DISTLE                = 0x20
  1546  	SPELLFIX_IDXNUM_DISTLT                = 0x10
  1547  	SPELLFIX_IDXNUM_LANGID                = 0x02
  1548  	SPELLFIX_IDXNUM_MATCH                 = 0x01
  1549  	SPELLFIX_IDXNUM_ROWID                 = 0x40
  1550  	SPELLFIX_IDXNUM_SCOPE                 = 0x08
  1551  	SPELLFIX_IDXNUM_TOP                   = 0x04
  1552  	SPELLFIX_MX_HASH                      = 32
  1553  	SPELLFIX_MX_RUN                       = 1
  1554  	SQLITE_SPELLFIX_STACKALLOC_SZ         = 1024
  1555  	TOTYPE_BIGENDIAN                      = 0
  1556  	TOTYPE_LITTLEENDIAN                   = 1
  1557  	SWARMVTAB_MAX_OPEN                    = 9
  1558  	SQLITE_RBU_STATE_CHECKPOINT           = 3
  1559  	SQLITE_RBU_STATE_DONE                 = 4
  1560  	SQLITE_RBU_STATE_ERROR                = 5
  1561  	SQLITE_RBU_STATE_MOVE                 = 2
  1562  	SQLITE_RBU_STATE_OAL                  = 1
  1563  	X_SQLITE3RBU_H                        = 0
  1564  	BTREE_APPEND                          = 0x08
  1565  	BTREE_APPLICATION_ID                  = 8
  1566  	BTREE_AUTOVACUUM_FULL                 = 1
  1567  	BTREE_AUTOVACUUM_INCR                 = 2
  1568  	BTREE_AUTOVACUUM_NONE                 = 0
  1569  	BTREE_AUXDELETE                       = 0x04
  1570  	BTREE_BLOBKEY                         = 2
  1571  	BTREE_BULKLOAD                        = 0x00000001
  1572  	BTREE_DATA_VERSION                    = 15
  1573  	BTREE_DEFAULT_CACHE_SIZE              = 3
  1574  	BTREE_FILE_FORMAT                     = 2
  1575  	BTREE_FORDELETE                       = 0x00000008
  1576  	BTREE_FREE_PAGE_COUNT                 = 0
  1577  	BTREE_HINT_RANGE                      = 0
  1578  	BTREE_INCR_VACUUM                     = 7
  1579  	BTREE_INTKEY                          = 1
  1580  	BTREE_LARGEST_ROOT_PAGE               = 4
  1581  	BTREE_MEMORY                          = 2
  1582  	BTREE_OMIT_JOURNAL                    = 1
  1583  	BTREE_PREFORMAT                       = 0x80
  1584  	BTREE_SAVEPOSITION                    = 0x02
  1585  	BTREE_SCHEMA_VERSION                  = 1
  1586  	BTREE_SEEK_EQ                         = 0x00000002
  1587  	BTREE_SINGLE                          = 4
  1588  	BTREE_TEXT_ENCODING                   = 5
  1589  	BTREE_UNORDERED                       = 8
  1590  	BTREE_USER_VERSION                    = 6
  1591  	BTREE_WRCSR                           = 0x00000004
  1592  	COLFLAG_BUSY                          = 0x0100
  1593  	COLFLAG_GENERATED                     = 0x0060
  1594  	COLFLAG_HASCOLL                       = 0x0200
  1595  	COLFLAG_HASTYPE                       = 0x0004
  1596  	COLFLAG_HIDDEN                        = 0x0002
  1597  	COLFLAG_NOEXPAND                      = 0x0400
  1598  	COLFLAG_NOINSERT                      = 0x0062
  1599  	COLFLAG_NOTAVAIL                      = 0x0080
  1600  	COLFLAG_PRIMKEY                       = 0x0001
  1601  	COLFLAG_SORTERREF                     = 0x0010
  1602  	COLFLAG_STORED                        = 0x0040
  1603  	COLFLAG_UNIQUE                        = 0x0008
  1604  	COLFLAG_VIRTUAL                       = 0x0020
  1605  	COLNAME_COLUMN                        = 4
  1606  	COLNAME_DATABASE                      = 2
  1607  	COLNAME_DECLTYPE                      = 1
  1608  	COLNAME_N                             = 5
  1609  	COLNAME_NAME                          = 0
  1610  	COLNAME_TABLE                         = 3
  1611  	COLTYPE_ANY                           = 1
  1612  	COLTYPE_BLOB                          = 2
  1613  	COLTYPE_CUSTOM                        = 0
  1614  	COLTYPE_INT                           = 3
  1615  	COLTYPE_INTEGER                       = 4
  1616  	COLTYPE_REAL                          = 5
  1617  	COLTYPE_TEXT                          = 6
  1618  	DBFLAG_EncodingFixed                  = 0x0040
  1619  	DBFLAG_InternalFunc                   = 0x0020
  1620  	DBFLAG_PreferBuiltin                  = 0x0002
  1621  	DBFLAG_SchemaChange                   = 0x0001
  1622  	DBFLAG_SchemaKnownOk                  = 0x0010
  1623  	DBFLAG_Vacuum                         = 0x0004
  1624  	DBFLAG_VacuumInto                     = 0x0008
  1625  	DB_ResetWanted                        = 0x0008
  1626  	DB_SchemaLoaded                       = 0x0001
  1627  	DB_UnresetViews                       = 0x0002
  1628  	ENAME_NAME                            = 0
  1629  	ENAME_SPAN                            = 1
  1630  	ENAME_TAB                             = 2
  1631  	EP_Agg                                = 0x000010
  1632  	EP_CanBeNull                          = 0x200000
  1633  	EP_Collate                            = 0x000200
  1634  	EP_Commuted                           = 0x000400
  1635  	EP_ConstFunc                          = 0x100000
  1636  	EP_DblQuoted                          = 0x000080
  1637  	EP_Distinct                           = 0x000004
  1638  	EP_FixedCol                           = 0x000020
  1639  	EP_FromDDL                            = 0x40000000
  1640  	EP_HasFunc                            = 0x000008
  1641  	EP_IfNullRow                          = 0x040000
  1642  	EP_Immutable                          = 0x02
  1643  	EP_InfixFunc                          = 0x000100
  1644  	EP_InnerON                            = 0x000002
  1645  	EP_IntValue                           = 0x000800
  1646  	EP_IsFalse                            = 0x20000000
  1647  	EP_IsTrue                             = 0x10000000
  1648  	EP_Leaf                               = 0x800000
  1649  	EP_MemToken                           = 0x020000
  1650  	EP_NoReduce                           = 0x01
  1651  	EP_OuterON                            = 0x000001
  1652  	EP_Propagate                          = 4194824
  1653  	EP_Quoted                             = 0x4000000
  1654  	EP_Reduced                            = 0x004000
  1655  	EP_Skip                               = 0x002000
  1656  	EP_Static                             = 0x8000000
  1657  	EP_Subquery                           = 0x400000
  1658  	EP_Subrtn                             = 0x2000000
  1659  	EP_TokenOnly                          = 0x010000
  1660  	EP_Unlikely                           = 0x080000
  1661  	EP_VarSelect                          = 0x000040
  1662  	EP_Win                                = 0x008000
  1663  	EP_WinFunc                            = 0x1000000
  1664  	EP_xIsSelect                          = 0x001000
  1665  	EU4_EXPR                              = 2
  1666  	EU4_IDX                               = 1
  1667  	EU4_NONE                              = 0
  1668  	EXCLUSIVE_LOCK                        = 4
  1669  	EXPRDUP_REDUCE                        = 0x0001
  1670  	GCC_VERSION                           = 4002001
  1671  	HAVE_DLFCN_H                          = 1
  1672  	HAVE_FCHOWN                           = 1
  1673  	HAVE_FDATASYNC                        = 1
  1674  	HAVE_GMTIME_R                         = 1
  1675  	HAVE_INT16_T                          = 1
  1676  	HAVE_INT32_T                          = 1
  1677  	HAVE_INT64_T                          = 1
  1678  	HAVE_INT8_T                           = 1
  1679  	HAVE_INTPTR_T                         = 1
  1680  	HAVE_INTTYPES_H                       = 1
  1681  	HAVE_ISNAN                            = 1
  1682  	HAVE_LOCALTIME_R                      = 1
  1683  	HAVE_LSTAT                            = 1
  1684  	HAVE_MEMORY_H                         = 1
  1685  	HAVE_PREAD                            = 1
  1686  	HAVE_PWRITE                           = 1
  1687  	HAVE_READLINK                         = 1
  1688  	HAVE_STDINT_H                         = 1
  1689  	HAVE_STDLIB_H                         = 1
  1690  	HAVE_STRINGS_H                        = 1
  1691  	HAVE_STRING_H                         = 1
  1692  	HAVE_SYS_STAT_H                       = 1
  1693  	HAVE_SYS_TYPES_H                      = 1
  1694  	HAVE_UINT16_T                         = 1
  1695  	HAVE_UINT32_T                         = 1
  1696  	HAVE_UINT64_T                         = 1
  1697  	HAVE_UINT8_T                          = 1
  1698  	HAVE_UINTPTR_T                        = 1
  1699  	HAVE_UNISTD_H                         = 1
  1700  	HAVE_UTIME                            = 1
  1701  	INITFLAG_AlterAdd                     = 0x0003
  1702  	INITFLAG_AlterDrop                    = 0x0002
  1703  	INITFLAG_AlterMask                    = 0x0003
  1704  	INITFLAG_AlterRename                  = 0x0001
  1705  	INLINEFUNC_affinity                   = 4
  1706  	INLINEFUNC_coalesce                   = 0
  1707  	INLINEFUNC_expr_compare               = 3
  1708  	INLINEFUNC_expr_implies_expr          = 2
  1709  	INLINEFUNC_iif                        = 5
  1710  	INLINEFUNC_implies_nonnull_row        = 1
  1711  	INLINEFUNC_sqlite_offset              = 6
  1712  	INLINEFUNC_unlikely                   = 99
  1713  	INT16_MAX                             = 0x7fff
  1714  	INT16_MIN                             = -32768
  1715  	INT32_MAX                             = 0x7fffffff
  1716  	INT32_MIN                             = -2147483648
  1717  	INT64_MAX                             = 0x7fffffffffffffff
  1718  	INT64_MIN                             = -9223372036854775808
  1719  	INT8_MAX                              = 0x7f
  1720  	INT8_MIN                              = -128
  1721  	INTMAX_MAX                            = 9223372036854775807
  1722  	INTMAX_MIN                            = -9223372036854775808
  1723  	INTPTR_MAX                            = 0x7fffffffffffffff
  1724  	INTPTR_MIN                            = -9223372036854775808
  1725  	INT_FAST16_MAX                        = 2147483647
  1726  	INT_FAST16_MIN                        = -2147483648
  1727  	INT_FAST32_MAX                        = 2147483647
  1728  	INT_FAST32_MIN                        = -2147483648
  1729  	INT_FAST64_MAX                        = 9223372036854775807
  1730  	INT_FAST64_MIN                        = -9223372036854775808
  1731  	INT_FAST8_MAX                         = 2147483647
  1732  	INT_FAST8_MIN                         = -2147483648
  1733  	INT_LEAST16_MAX                       = 32767
  1734  	INT_LEAST16_MIN                       = -32768
  1735  	INT_LEAST32_MAX                       = 2147483647
  1736  	INT_LEAST32_MIN                       = -2147483648
  1737  	INT_LEAST64_MAX                       = 9223372036854775807
  1738  	INT_LEAST64_MIN                       = -9223372036854775808
  1739  	INT_LEAST8_MAX                        = 127
  1740  	INT_LEAST8_MIN                        = -128
  1741  	IN_INDEX_EPH                          = 2
  1742  	IN_INDEX_INDEX_ASC                    = 3
  1743  	IN_INDEX_INDEX_DESC                   = 4
  1744  	IN_INDEX_LOOP                         = 0x0004
  1745  	IN_INDEX_MEMBERSHIP                   = 0x0002
  1746  	IN_INDEX_NOOP                         = 5
  1747  	IN_INDEX_NOOP_OK                      = 0x0001
  1748  	IN_INDEX_ROWID                        = 1
  1749  	JT_CROSS                              = 0x02
  1750  	JT_ERROR                              = 0x80
  1751  	JT_INNER                              = 0x01
  1752  	JT_LEFT                               = 0x08
  1753  	JT_LTORJ                              = 0x40
  1754  	JT_NATURAL                            = 0x04
  1755  	JT_OUTER                              = 0x20
  1756  	JT_RIGHT                              = 0x10
  1757  	KEYINFO_ORDER_BIGNULL                 = 0x02
  1758  	KEYINFO_ORDER_DESC                    = 0x01
  1759  	LEGACY_SCHEMA_TABLE                   = "sqlite_master"
  1760  	LEGACY_TEMP_SCHEMA_TABLE              = "sqlite_temp_master"
  1761  	LOCATE_NOERR                          = 0x02
  1762  	LOCATE_VIEW                           = 0x01
  1763  	LOOKASIDE_SMALL                       = 128
  1764  	LT_OBJDIR                             = ".libs/"
  1765  	M10d_Any                              = 1
  1766  	M10d_No                               = 2
  1767  	M10d_Yes                              = 0
  1768  	MEMTYPE_HEAP                          = 0x01
  1769  	MEMTYPE_LOOKASIDE                     = 0x02
  1770  	MEMTYPE_PCACHE                        = 0x04
  1771  	MSVC_VERSION                          = 0
  1772  	NC_AllowAgg                           = 0x000001
  1773  	NC_AllowWin                           = 0x004000
  1774  	NC_Complex                            = 0x002000
  1775  	NC_FromDDL                            = 0x040000
  1776  	NC_GenCol                             = 0x000008
  1777  	NC_HasAgg                             = 0x000010
  1778  	NC_HasWin                             = 0x008000
  1779  	NC_IdxExpr                            = 0x000020
  1780  	NC_InAggFunc                          = 0x020000
  1781  	NC_IsCheck                            = 0x000004
  1782  	NC_IsDDL                              = 0x010000
  1783  	NC_MinMaxAgg                          = 0x001000
  1784  	NC_NoSelect                           = 0x080000
  1785  	NC_OrderAgg                           = 0x8000000
  1786  	NC_PartIdx                            = 0x000002
  1787  	NC_SelfRef                            = 0x00002e
  1788  	NC_UAggInfo                           = 0x000100
  1789  	NC_UBaseReg                           = 0x000400
  1790  	NC_UEList                             = 0x000080
  1791  	NC_UUpsert                            = 0x000200
  1792  	NC_VarSelect                          = 0x000040
  1793  	NO_LOCK                               = 0
  1794  	OE_Abort                              = 2
  1795  	OE_Cascade                            = 10
  1796  	OE_Default                            = 11
  1797  	OE_Fail                               = 3
  1798  	OE_Ignore                             = 4
  1799  	OE_None                               = 0
  1800  	OE_Replace                            = 5
  1801  	OE_Restrict                           = 7
  1802  	OE_Rollback                           = 1
  1803  	OE_SetDflt                            = 9
  1804  	OE_SetNull                            = 8
  1805  	OE_Update                             = 6
  1806  	OMIT_TEMPDB                           = 0
  1807  	ONEPASS_MULTI                         = 2
  1808  	ONEPASS_OFF                           = 0
  1809  	ONEPASS_SINGLE                        = 1
  1810  	OPFLAG_APPEND                         = 0x08
  1811  	OPFLAG_AUXDELETE                      = 0x04
  1812  	OPFLAG_BULKCSR                        = 0x01
  1813  	OPFLAG_EPHEM                          = 0x01
  1814  	OPFLAG_FORDELETE                      = 0x08
  1815  	OPFLAG_ISNOOP                         = 0x40
  1816  	OPFLAG_ISUPDATE                       = 0x04
  1817  	OPFLAG_LASTROWID                      = 0x20
  1818  	OPFLAG_LENGTHARG                      = 0x40
  1819  	OPFLAG_NCHANGE                        = 0x01
  1820  	OPFLAG_NOCHNG                         = 0x01
  1821  	OPFLAG_NOCHNG_MAGIC                   = 0x6d
  1822  	OPFLAG_P2ISREG                        = 0x10
  1823  	OPFLAG_PERMUTE                        = 0x01
  1824  	OPFLAG_PREFORMAT                      = 0x80
  1825  	OPFLAG_SAVEPOSITION                   = 0x02
  1826  	OPFLAG_SEEKEQ                         = 0x02
  1827  	OPFLAG_TYPEOFARG                      = 0x80
  1828  	OPFLAG_USESEEKRESULT                  = 0x10
  1829  	OPFLG_IN1                             = 0x02
  1830  	OPFLG_IN2                             = 0x04
  1831  	OPFLG_IN3                             = 0x08
  1832  	OPFLG_JUMP                            = 0x01
  1833  	OPFLG_OUT2                            = 0x10
  1834  	OPFLG_OUT3                            = 0x20
  1835  	OP_Abortable                          = 186
  1836  	OP_Add                                = 106
  1837  	OP_AddImm                             = 86
  1838  	OP_Affinity                           = 96
  1839  	OP_AggFinal                           = 165
  1840  	OP_AggInverse                         = 161
  1841  	OP_AggStep                            = 162
  1842  	OP_AggStep1                           = 163
  1843  	OP_AggValue                           = 164
  1844  	OP_And                                = 44
  1845  	OP_AutoCommit                         = 1
  1846  	OP_BeginSubrtn                        = 74
  1847  	OP_BitAnd                             = 102
  1848  	OP_BitNot                             = 114
  1849  	OP_BitOr                              = 103
  1850  	OP_Blob                               = 77
  1851  	OP_Cast                               = 88
  1852  	OP_Checkpoint                         = 3
  1853  	OP_Clear                              = 145
  1854  	OP_Close                              = 122
  1855  	OP_ClrSubtype                         = 179
  1856  	OP_CollSeq                            = 85
  1857  	OP_Column                             = 94
  1858  	OP_ColumnsUsed                        = 123
  1859  	OP_Compare                            = 90
  1860  	OP_Concat                             = 111
  1861  	OP_Copy                               = 80
  1862  	OP_Count                              = 98
  1863  	OP_CreateBtree                        = 147
  1864  	OP_CursorHint                         = 182
  1865  	OP_CursorLock                         = 167
  1866  	OP_CursorUnlock                       = 168
  1867  	OP_DecrJumpZero                       = 60
  1868  	OP_DeferredSeek                       = 141
  1869  	OP_Delete                             = 130
  1870  	OP_Destroy                            = 144
  1871  	OP_Divide                             = 109
  1872  	OP_DropIndex                          = 152
  1873  	OP_DropTable                          = 151
  1874  	OP_DropTrigger                        = 154
  1875  	OP_ElseEq                             = 58
  1876  	OP_EndCoroutine                       = 68
  1877  	OP_Eq                                 = 53
  1878  	OP_Expire                             = 166
  1879  	OP_Explain                            = 185
  1880  	OP_Filter                             = 63
  1881  	OP_FilterAdd                          = 180
  1882  	OP_FinishSeek                         = 143
  1883  	OP_FkCheck                            = 83
  1884  	OP_FkCounter                          = 158
  1885  	OP_FkIfZero                           = 48
  1886  	OP_Found                              = 28
  1887  	OP_Function                           = 66
  1888  	OP_Ge                                 = 57
  1889  	OP_Gosub                              = 9
  1890  	OP_Goto                               = 8
  1891  	OP_Gt                                 = 54
  1892  	OP_Halt                               = 70
  1893  	OP_HaltIfNull                         = 69
  1894  	OP_IdxDelete                          = 140
  1895  	OP_IdxGE                              = 42
  1896  	OP_IdxGT                              = 40
  1897  	OP_IdxInsert                          = 138
  1898  	OP_IdxLE                              = 39
  1899  	OP_IdxLT                              = 41
  1900  	OP_IdxRowid                           = 142
  1901  	OP_If                                 = 15
  1902  	OP_IfNoHope                           = 25
  1903  	OP_IfNot                              = 16
  1904  	OP_IfNotOpen                          = 24
  1905  	OP_IfNotZero                          = 59
  1906  	OP_IfNullRow                          = 18
  1907  	OP_IfPos                              = 49
  1908  	OP_IfSmaller                          = 32
  1909  	OP_IncrVacuum                         = 61
  1910  	OP_Init                               = 64
  1911  	OP_InitCoroutine                      = 10
  1912  	OP_Insert                             = 128
  1913  	OP_Int64                              = 72
  1914  	OP_IntCopy                            = 82
  1915  	OP_Integer                            = 71
  1916  	OP_IntegrityCk                        = 155
  1917  	OP_IsNull                             = 50
  1918  	OP_IsNullOrType                       = 17
  1919  	OP_IsTrue                             = 91
  1920  	OP_JournalMode                        = 4
  1921  	OP_Jump                               = 13
  1922  	OP_Last                               = 31
  1923  	OP_Le                                 = 55
  1924  	OP_LoadAnalysis                       = 150
  1925  	OP_Lt                                 = 56
  1926  	OP_MakeRecord                         = 97
  1927  	OP_MaxPgcnt                           = 178
  1928  	OP_MemMax                             = 159
  1929  	OP_Move                               = 79
  1930  	OP_Multiply                           = 108
  1931  	OP_MustBeInt                          = 12
  1932  	OP_Ne                                 = 52
  1933  	OP_NewRowid                           = 127
  1934  	OP_Next                               = 38
  1935  	OP_NoConflict                         = 26
  1936  	OP_Noop                               = 184
  1937  	OP_Not                                = 19
  1938  	OP_NotExists                          = 30
  1939  	OP_NotFound                           = 27
  1940  	OP_NotNull                            = 51
  1941  	OP_Null                               = 75
  1942  	OP_NullRow                            = 136
  1943  	OP_Offset                             = 93
  1944  	OP_OffsetLimit                        = 160
  1945  	OP_Once                               = 14
  1946  	OP_OpenAutoindex                      = 116
  1947  	OP_OpenDup                            = 115
  1948  	OP_OpenEphemeral                      = 118
  1949  	OP_OpenPseudo                         = 121
  1950  	OP_OpenRead                           = 112
  1951  	OP_OpenWrite                          = 113
  1952  	OP_Or                                 = 43
  1953  	OP_Pagecount                          = 177
  1954  	OP_Param                              = 157
  1955  	OP_ParseSchema                        = 149
  1956  	OP_Permutation                        = 89
  1957  	OP_Prev                               = 37
  1958  	OP_Program                            = 47
  1959  	OP_PureFunc                           = 65
  1960  	OP_ReadCookie                         = 99
  1961  	OP_Real                               = 153
  1962  	OP_RealAffinity                       = 87
  1963  	OP_ReleaseReg                         = 183
  1964  	OP_Remainder                          = 110
  1965  	OP_ReopenIdx                          = 101
  1966  	OP_ResetCount                         = 131
  1967  	OP_ResetSorter                        = 146
  1968  	OP_ResultRow                          = 84
  1969  	OP_Return                             = 67
  1970  	OP_Rewind                             = 35
  1971  	OP_RowCell                            = 129
  1972  	OP_RowData                            = 134
  1973  	OP_RowSetAdd                          = 156
  1974  	OP_RowSetRead                         = 45
  1975  	OP_RowSetTest                         = 46
  1976  	OP_Rowid                              = 135
  1977  	OP_SCopy                              = 81
  1978  	OP_Savepoint                          = 0
  1979  	OP_SeekEnd                            = 137
  1980  	OP_SeekGE                             = 22
  1981  	OP_SeekGT                             = 23
  1982  	OP_SeekHit                            = 125
  1983  	OP_SeekLE                             = 21
  1984  	OP_SeekLT                             = 20
  1985  	OP_SeekRowid                          = 29
  1986  	OP_SeekScan                           = 124
  1987  	OP_Sequence                           = 126
  1988  	OP_SequenceTest                       = 120
  1989  	OP_SetCookie                          = 100
  1990  	OP_ShiftLeft                          = 104
  1991  	OP_ShiftRight                         = 105
  1992  	OP_SoftNull                           = 76
  1993  	OP_Sort                               = 34
  1994  	OP_SorterCompare                      = 132
  1995  	OP_SorterData                         = 133
  1996  	OP_SorterInsert                       = 139
  1997  	OP_SorterNext                         = 36
  1998  	OP_SorterOpen                         = 119
  1999  	OP_SorterSort                         = 33
  2000  	OP_SqlExec                            = 148
  2001  	OP_String                             = 73
  2002  	OP_String8                            = 117
  2003  	OP_Subtract                           = 107
  2004  	OP_TableLock                          = 169
  2005  	OP_Trace                              = 181
  2006  	OP_Transaction                        = 2
  2007  	OP_TypeCheck                          = 95
  2008  	OP_VBegin                             = 170
  2009  	OP_VColumn                            = 175
  2010  	OP_VCreate                            = 171
  2011  	OP_VDestroy                           = 172
  2012  	OP_VFilter                            = 6
  2013  	OP_VInitIn                            = 174
  2014  	OP_VNext                              = 62
  2015  	OP_VOpen                              = 173
  2016  	OP_VRename                            = 176
  2017  	OP_VUpdate                            = 7
  2018  	OP_Vacuum                             = 5
  2019  	OP_Variable                           = 78
  2020  	OP_Yield                              = 11
  2021  	OP_ZeroOrNull                         = 92
  2022  	OS_VXWORKS                            = 0
  2023  	P4_COLLSEQ                            = -2
  2024  	P4_DYNAMIC                            = -6
  2025  	P4_EXPR                               = -9
  2026  	P4_FREE_IF_LE                         = -6
  2027  	P4_FUNCCTX                            = -15
  2028  	P4_FUNCDEF                            = -7
  2029  	P4_INT32                              = -3
  2030  	P4_INT64                              = -13
  2031  	P4_INTARRAY                           = -14
  2032  	P4_KEYINFO                            = -8
  2033  	P4_MEM                                = -10
  2034  	P4_NOTUSED                            = 0
  2035  	P4_REAL                               = -12
  2036  	P4_STATIC                             = -1
  2037  	P4_SUBPROGRAM                         = -4
  2038  	P4_TABLE                              = -5
  2039  	P4_TRANSIENT                          = 0
  2040  	P4_VTAB                               = -11
  2041  	P5_ConstraintCheck                    = 3
  2042  	P5_ConstraintFK                       = 4
  2043  	P5_ConstraintNotNull                  = 1
  2044  	P5_ConstraintUnique                   = 2
  2045  	PACKAGE_BUGREPORT                     = ""
  2046  	PACKAGE_NAME                          = "sqlite"
  2047  	PACKAGE_STRING                        = "sqlite 3.39.3"
  2048  	PACKAGE_TARNAME                       = "sqlite"
  2049  	PACKAGE_VERSION                       = "3.39.3"
  2050  	PAGER_CACHESPILL                      = 0x20
  2051  	PAGER_CKPT_FULLFSYNC                  = 0x10
  2052  	PAGER_FLAGS_MASK                      = 0x38
  2053  	PAGER_FULLFSYNC                       = 0x08
  2054  	PAGER_GET_NOCONTENT                   = 0x01
  2055  	PAGER_GET_READONLY                    = 0x02
  2056  	PAGER_JOURNALMODE_DELETE              = 0
  2057  	PAGER_JOURNALMODE_MEMORY              = 4
  2058  	PAGER_JOURNALMODE_OFF                 = 2
  2059  	PAGER_JOURNALMODE_PERSIST             = 1
  2060  	PAGER_JOURNALMODE_QUERY               = -1
  2061  	PAGER_JOURNALMODE_TRUNCATE            = 3
  2062  	PAGER_JOURNALMODE_WAL                 = 5
  2063  	PAGER_LOCKINGMODE_EXCLUSIVE           = 1
  2064  	PAGER_LOCKINGMODE_NORMAL              = 0
  2065  	PAGER_LOCKINGMODE_QUERY               = -1
  2066  	PAGER_MEMORY                          = 0x0002
  2067  	PAGER_OMIT_JOURNAL                    = 0x0001
  2068  	PAGER_SYNCHRONOUS_EXTRA               = 0x04
  2069  	PAGER_SYNCHRONOUS_FULL                = 0x03
  2070  	PAGER_SYNCHRONOUS_MASK                = 0x07
  2071  	PAGER_SYNCHRONOUS_NORMAL              = 0x02
  2072  	PAGER_SYNCHRONOUS_OFF                 = 0x01
  2073  	PARSE_MODE_DECLARE_VTAB               = 1
  2074  	PARSE_MODE_NORMAL                     = 0
  2075  	PARSE_MODE_RENAME                     = 2
  2076  	PARSE_MODE_UNMAP                      = 3
  2077  	PENDING_LOCK                          = 3
  2078  	PGHDR_CLEAN                           = 0x001
  2079  	PGHDR_DIRTY                           = 0x002
  2080  	PGHDR_DONT_WRITE                      = 0x010
  2081  	PGHDR_MMAP                            = 0x020
  2082  	PGHDR_NEED_SYNC                       = 0x008
  2083  	PGHDR_WAL_APPEND                      = 0x040
  2084  	PGHDR_WRITEABLE                       = 0x004
  2085  	PREFERRED_SCHEMA_TABLE                = "sqlite_schema"
  2086  	PREFERRED_TEMP_SCHEMA_TABLE           = "sqlite_temp_schema"
  2087  	PRIX16                                = "X"
  2088  	PRIX32                                = "X"
  2089  	PRIX64                                = "llX"
  2090  	PRIX8                                 = "X"
  2091  	PRIXFAST16                            = "X"
  2092  	PRIXFAST32                            = "X"
  2093  	PRIXFAST64                            = "llX"
  2094  	PRIXFAST8                             = "X"
  2095  	PRIXLEAST16                           = "X"
  2096  	PRIXLEAST32                           = "X"
  2097  	PRIXLEAST64                           = "llX"
  2098  	PRIXLEAST8                            = "X"
  2099  	PRIXMAX                               = "jX"
  2100  	PRIXPTR                               = "lX"
  2101  	PRId16                                = "d"
  2102  	PRId32                                = "d"
  2103  	PRId64                                = "lld"
  2104  	PRId8                                 = "d"
  2105  	PRIdFAST16                            = "d"
  2106  	PRIdFAST32                            = "d"
  2107  	PRIdFAST64                            = "lld"
  2108  	PRIdFAST8                             = "d"
  2109  	PRIdLEAST16                           = "d"
  2110  	PRIdLEAST32                           = "d"
  2111  	PRIdLEAST64                           = "lld"
  2112  	PRIdLEAST8                            = "d"
  2113  	PRIdMAX                               = "jd"
  2114  	PRIdPTR                               = "ld"
  2115  	PRIi16                                = "i"
  2116  	PRIi32                                = "i"
  2117  	PRIi64                                = "lli"
  2118  	PRIi8                                 = "i"
  2119  	PRIiFAST16                            = "i"
  2120  	PRIiFAST32                            = "i"
  2121  	PRIiFAST64                            = "lli"
  2122  	PRIiFAST8                             = "i"
  2123  	PRIiLEAST16                           = "i"
  2124  	PRIiLEAST32                           = "i"
  2125  	PRIiLEAST64                           = "lli"
  2126  	PRIiLEAST8                            = "i"
  2127  	PRIiMAX                               = "ji"
  2128  	PRIiPTR                               = "li"
  2129  	PRIo16                                = "o"
  2130  	PRIo32                                = "o"
  2131  	PRIo64                                = "llo"
  2132  	PRIo8                                 = "o"
  2133  	PRIoFAST16                            = "o"
  2134  	PRIoFAST32                            = "o"
  2135  	PRIoFAST64                            = "llo"
  2136  	PRIoFAST8                             = "o"
  2137  	PRIoLEAST16                           = "o"
  2138  	PRIoLEAST32                           = "o"
  2139  	PRIoLEAST64                           = "llo"
  2140  	PRIoLEAST8                            = "o"
  2141  	PRIoMAX                               = "jo"
  2142  	PRIoPTR                               = "lo"
  2143  	PRIu16                                = "u"
  2144  	PRIu32                                = "u"
  2145  	PRIu64                                = "llu"
  2146  	PRIu8                                 = "u"
  2147  	PRIuFAST16                            = "u"
  2148  	PRIuFAST32                            = "u"
  2149  	PRIuFAST64                            = "llu"
  2150  	PRIuFAST8                             = "u"
  2151  	PRIuLEAST16                           = "u"
  2152  	PRIuLEAST32                           = "u"
  2153  	PRIuLEAST64                           = "llu"
  2154  	PRIuLEAST8                            = "u"
  2155  	PRIuMAX                               = "ju"
  2156  	PRIuPTR                               = "lu"
  2157  	PRIx16                                = "x"
  2158  	PRIx32                                = "x"
  2159  	PRIx64                                = "llx"
  2160  	PRIx8                                 = "x"
  2161  	PRIxFAST16                            = "x"
  2162  	PRIxFAST32                            = "x"
  2163  	PRIxFAST64                            = "llx"
  2164  	PRIxFAST8                             = "x"
  2165  	PRIxLEAST16                           = "x"
  2166  	PRIxLEAST32                           = "x"
  2167  	PRIxLEAST64                           = "llx"
  2168  	PRIxLEAST8                            = "x"
  2169  	PRIxMAX                               = "jx"
  2170  	PRIxPTR                               = "lx"
  2171  	PTRDIFF_MAX                           = 9223372036854775807
  2172  	PTRDIFF_MIN                           = -9223372036854775808
  2173  	RESERVED_LOCK                         = 2
  2174  	SAVEPOINT_BEGIN                       = 0
  2175  	SAVEPOINT_RELEASE                     = 1
  2176  	SAVEPOINT_ROLLBACK                    = 2
  2177  	SCHEMA_ROOT                           = 1
  2178  	SCNd16                                = "hd"
  2179  	SCNd32                                = "d"
  2180  	SCNd64                                = "lld"
  2181  	SCNd8                                 = "hhd"
  2182  	SCNdFAST16                            = "d"
  2183  	SCNdFAST32                            = "d"
  2184  	SCNdFAST64                            = "lld"
  2185  	SCNdFAST8                             = "d"
  2186  	SCNdLEAST16                           = "hd"
  2187  	SCNdLEAST32                           = "d"
  2188  	SCNdLEAST64                           = "lld"
  2189  	SCNdLEAST8                            = "hhd"
  2190  	SCNdMAX                               = "jd"
  2191  	SCNdPTR                               = "ld"
  2192  	SCNi16                                = "hi"
  2193  	SCNi32                                = "i"
  2194  	SCNi64                                = "lli"
  2195  	SCNi8                                 = "hhi"
  2196  	SCNiFAST16                            = "i"
  2197  	SCNiFAST32                            = "i"
  2198  	SCNiFAST64                            = "lli"
  2199  	SCNiFAST8                             = "i"
  2200  	SCNiLEAST16                           = "hi"
  2201  	SCNiLEAST32                           = "i"
  2202  	SCNiLEAST64                           = "lli"
  2203  	SCNiLEAST8                            = "hhi"
  2204  	SCNiMAX                               = "ji"
  2205  	SCNiPTR                               = "li"
  2206  	SCNo16                                = "ho"
  2207  	SCNo32                                = "o"
  2208  	SCNo64                                = "llo"
  2209  	SCNo8                                 = "hho"
  2210  	SCNoFAST16                            = "o"
  2211  	SCNoFAST32                            = "o"
  2212  	SCNoFAST64                            = "llo"
  2213  	SCNoFAST8                             = "o"
  2214  	SCNoLEAST16                           = "ho"
  2215  	SCNoLEAST32                           = "o"
  2216  	SCNoLEAST64                           = "llo"
  2217  	SCNoLEAST8                            = "hho"
  2218  	SCNoMAX                               = "jo"
  2219  	SCNoPTR                               = "lo"
  2220  	SCNu16                                = "hu"
  2221  	SCNu32                                = "u"
  2222  	SCNu64                                = "llu"
  2223  	SCNu8                                 = "hhu"
  2224  	SCNuFAST16                            = "u"
  2225  	SCNuFAST32                            = "u"
  2226  	SCNuFAST64                            = "llu"
  2227  	SCNuFAST8                             = "u"
  2228  	SCNuLEAST16                           = "hu"
  2229  	SCNuLEAST32                           = "u"
  2230  	SCNuLEAST64                           = "llu"
  2231  	SCNuLEAST8                            = "hhu"
  2232  	SCNuMAX                               = "ju"
  2233  	SCNuPTR                               = "lu"
  2234  	SCNx16                                = "hx"
  2235  	SCNx32                                = "x"
  2236  	SCNx64                                = "llx"
  2237  	SCNx8                                 = "hhx"
  2238  	SCNxFAST16                            = "x"
  2239  	SCNxFAST32                            = "x"
  2240  	SCNxFAST64                            = "llx"
  2241  	SCNxFAST8                             = "x"
  2242  	SCNxLEAST16                           = "hx"
  2243  	SCNxLEAST32                           = "x"
  2244  	SCNxLEAST64                           = "llx"
  2245  	SCNxLEAST8                            = "hhx"
  2246  	SCNxMAX                               = "jx"
  2247  	SCNxPTR                               = "lx"
  2248  	SF_Aggregate                          = 0x0000008
  2249  	SF_All                                = 0x0000002
  2250  	SF_ComplexResult                      = 0x0040000
  2251  	SF_Compound                           = 0x0000100
  2252  	SF_Converted                          = 0x0010000
  2253  	SF_CopyCte                            = 0x4000000
  2254  	SF_Distinct                           = 0x0000001
  2255  	SF_Expanded                           = 0x0000040
  2256  	SF_FixedLimit                         = 0x0004000
  2257  	SF_HasAgg                             = 0x0000010
  2258  	SF_HasTypeInfo                        = 0x0000080
  2259  	SF_IncludeHidden                      = 0x0020000
  2260  	SF_MaybeConvert                       = 0x0008000
  2261  	SF_MinMaxAgg                          = 0x0001000
  2262  	SF_MultiPart                          = 0x2000000
  2263  	SF_MultiValue                         = 0x0000400
  2264  	SF_NestedFrom                         = 0x0000800
  2265  	SF_NoopOrderBy                        = 0x0400000
  2266  	SF_OrderByReqd                        = 0x8000000
  2267  	SF_PushDown                           = 0x1000000
  2268  	SF_Recursive                          = 0x0002000
  2269  	SF_Resolved                           = 0x0000004
  2270  	SF_UFSrcCheck                         = 0x0800000
  2271  	SF_UsesEphemeral                      = 0x0000020
  2272  	SF_Values                             = 0x0000200
  2273  	SF_View                               = 0x0200000
  2274  	SF_WhereBegin                         = 0x0080000
  2275  	SF_WinRewrite                         = 0x0100000
  2276  	SHARED_LOCK                           = 1
  2277  	SHARED_SIZE                           = 510
  2278  	SIG_ATOMIC_MAX                        = 2147483647
  2279  	SIG_ATOMIC_MIN                        = -2147483648
  2280  	SIZE_MAX                              = 18446744073709551615
  2281  	SQLITECONFIG_H                        = 1
  2282  	SQLITEINT_H                           = 0
  2283  	SQLITE_AFF_BLOB                       = 0x41
  2284  	SQLITE_AFF_INTEGER                    = 0x44
  2285  	SQLITE_AFF_MASK                       = 0x47
  2286  	SQLITE_AFF_NONE                       = 0x40
  2287  	SQLITE_AFF_NUMERIC                    = 0x43
  2288  	SQLITE_AFF_REAL                       = 0x45
  2289  	SQLITE_AFF_TEXT                       = 0x42
  2290  	SQLITE_ASCII                          = 1
  2291  	SQLITE_ATOMIC_INTRINSICS              = 0
  2292  	SQLITE_AllOpts                        = 0xffffffff
  2293  	SQLITE_AutoIndex                      = 0x00008000
  2294  	SQLITE_BIGENDIAN                      = 0
  2295  	SQLITE_BTREE_H                        = 0
  2296  	SQLITE_BYTEORDER                      = 1234
  2297  	SQLITE_BalancedMerge                  = 0x00200000
  2298  	SQLITE_BloomFilter                    = 0x00080000
  2299  	SQLITE_BloomPulldown                  = 0x00100000
  2300  	SQLITE_CacheSpill                     = 0x00000020
  2301  	SQLITE_CellSizeCk                     = 0x00200000
  2302  	SQLITE_CkptFullFSync                  = 0x00000010
  2303  	SQLITE_CountOfView                    = 0x00000200
  2304  	SQLITE_CoverIdxScan                   = 0x00000020
  2305  	SQLITE_CursorHints                    = 0x00000400
  2306  	SQLITE_DEFAULT_AUTOVACUUM             = 0
  2307  	SQLITE_DEFAULT_CACHE_SIZE             = -2000
  2308  	SQLITE_DEFAULT_FILE_FORMAT            = 4
  2309  	SQLITE_DEFAULT_JOURNAL_SIZE_LIMIT     = -1
  2310  	SQLITE_DEFAULT_MMAP_SIZE              = 0
  2311  	SQLITE_DEFAULT_PCACHE_INITSZ          = 20
  2312  	SQLITE_DEFAULT_RECURSIVE_TRIGGERS     = 0
  2313  	SQLITE_DEFAULT_SECTOR_SIZE            = 4096
  2314  	SQLITE_DEFAULT_SORTERREF_SIZE         = 0x7fffffff
  2315  	SQLITE_DEFAULT_SYNCHRONOUS            = 2
  2316  	SQLITE_DEFAULT_WAL_AUTOCHECKPOINT     = 1000
  2317  	SQLITE_DEFAULT_WAL_SYNCHRONOUS        = 2
  2318  	SQLITE_DEFAULT_WORKER_THREADS         = 0
  2319  	SQLITE_Defensive                      = 0x10000000
  2320  	SQLITE_DeferFKs                       = 0x00080000
  2321  	SQLITE_DistinctOpt                    = 0x00000010
  2322  	SQLITE_DqsDDL                         = 0x20000000
  2323  	SQLITE_DqsDML                         = 0x40000000
  2324  	SQLITE_ECEL_DUP                       = 0x01
  2325  	SQLITE_ECEL_FACTOR                    = 0x02
  2326  	SQLITE_ECEL_OMITREF                   = 0x08
  2327  	SQLITE_ECEL_REF                       = 0x04
  2328  	SQLITE_EnableQPSG                     = 0x00800000
  2329  	SQLITE_EnableTrigger                  = 0x00040000
  2330  	SQLITE_EnableView                     = 0x80000000
  2331  	SQLITE_FAULTINJECTOR_COUNT            = 1
  2332  	SQLITE_FAULTINJECTOR_MALLOC           = 0
  2333  	SQLITE_FCNTL_DB_UNCHANGED             = 0xca093fa0
  2334  	SQLITE_FUNC_ANYORDER                  = 0x08000000
  2335  	SQLITE_FUNC_BUILTIN                   = 0x00800000
  2336  	SQLITE_FUNC_CASE                      = 0x0008
  2337  	SQLITE_FUNC_CONSTANT                  = 0x0800
  2338  	SQLITE_FUNC_COUNT                     = 0x0100
  2339  	SQLITE_FUNC_DIRECT                    = 0x00080000
  2340  	SQLITE_FUNC_ENCMASK                   = 0x0003
  2341  	SQLITE_FUNC_EPHEM                     = 0x0010
  2342  	SQLITE_FUNC_HASH_SZ                   = 23
  2343  	SQLITE_FUNC_INLINE                    = 0x00400000
  2344  	SQLITE_FUNC_INTERNAL                  = 0x00040000
  2345  	SQLITE_FUNC_LENGTH                    = 0x0040
  2346  	SQLITE_FUNC_LIKE                      = 0x0004
  2347  	SQLITE_FUNC_MINMAX                    = 0x1000
  2348  	SQLITE_FUNC_NEEDCOLL                  = 0x0020
  2349  	SQLITE_FUNC_SLOCHNG                   = 0x2000
  2350  	SQLITE_FUNC_SUBTYPE                   = 0x00100000
  2351  	SQLITE_FUNC_TEST                      = 0x4000
  2352  	SQLITE_FUNC_TYPEOF                    = 0x0080
  2353  	SQLITE_FUNC_UNLIKELY                  = 0x0400
  2354  	SQLITE_FUNC_UNSAFE                    = 0x00200000
  2355  	SQLITE_FUNC_WINDOW                    = 0x00010000
  2356  	SQLITE_FactorOutConst                 = 0x00000008
  2357  	SQLITE_FlttnUnionAll                  = 0x00800000
  2358  	SQLITE_ForeignKeys                    = 0x00004000
  2359  	SQLITE_Fts3Tokenizer                  = 0x00400000
  2360  	SQLITE_FullColNames                   = 0x00000004
  2361  	SQLITE_FullFSync                      = 0x00000008
  2362  	SQLITE_GroupByOrder                   = 0x00000004
  2363  	SQLITE_HASH_H                         = 0
  2364  	SQLITE_HAVE_C99_MATH_FUNCS            = 1
  2365  	SQLITE_HAVE_OS_TRACE                  = 0
  2366  	SQLITE_IDXTYPE_APPDEF                 = 0
  2367  	SQLITE_IDXTYPE_IPK                    = 3
  2368  	SQLITE_IDXTYPE_PRIMARYKEY             = 2
  2369  	SQLITE_IDXTYPE_UNIQUE                 = 1
  2370  	SQLITE_IOERR_NOMEM_BKPT               = 3082
  2371  	SQLITE_IgnoreChecks                   = 0x00000200
  2372  	SQLITE_JUMPIFNULL                     = 0x10
  2373  	SQLITE_LITTLEENDIAN                   = 1
  2374  	SQLITE_LegacyAlter                    = 0x04000000
  2375  	SQLITE_LegacyFileFmt                  = 0x00000002
  2376  	SQLITE_LoadExtFunc                    = 0x00020000
  2377  	SQLITE_LoadExtension                  = 0x00010000
  2378  	SQLITE_MALLOC_SOFT_LIMIT              = 1024
  2379  	SQLITE_MAX_ATTACHED                   = 10
  2380  	SQLITE_MAX_COLUMN                     = 2000
  2381  	SQLITE_MAX_COMPOUND_SELECT            = 500
  2382  	SQLITE_MAX_DB                         = 12
  2383  	SQLITE_MAX_DEFAULT_PAGE_SIZE          = 8192
  2384  	SQLITE_MAX_EXPR_DEPTH                 = 1000
  2385  	SQLITE_MAX_FILE_FORMAT                = 4
  2386  	SQLITE_MAX_FUNCTION_ARG               = 127
  2387  	SQLITE_MAX_LENGTH                     = 1000000000
  2388  	SQLITE_MAX_LIKE_PATTERN_LENGTH        = 50000
  2389  	SQLITE_MAX_MMAP_SIZE                  = 0
  2390  	SQLITE_MAX_PAGE_COUNT                 = 1073741823
  2391  	SQLITE_MAX_PAGE_SIZE                  = 65536
  2392  	SQLITE_MAX_PATHLEN                    = 1024
  2393  	SQLITE_MAX_SQL_LENGTH                 = 1000000000
  2394  	SQLITE_MAX_SYMLINK                    = 200
  2395  	SQLITE_MAX_TRIGGER_DEPTH              = 1000
  2396  	SQLITE_MAX_VARIABLE_NUMBER            = 32766
  2397  	SQLITE_MAX_VDBE_OP                    = 250000000
  2398  	SQLITE_MAX_WORKER_THREADS             = 8
  2399  	SQLITE_MSVC_H                         = 0
  2400  	SQLITE_MUTEX_STATIC_TEMPDIR           = 11
  2401  	SQLITE_MX_JUMP_OPCODE                 = 64
  2402  	SQLITE_MinMaxOpt                      = 0x00010000
  2403  	SQLITE_NEED_ERR_NAME                  = 0
  2404  	SQLITE_NOMEM_BKPT                     = 7
  2405  	SQLITE_NOTNULL                        = 0x90
  2406  	SQLITE_NTUNE                          = 6
  2407  	SQLITE_NULLEQ                         = 0x80
  2408  	SQLITE_N_BTREE_META                   = 16
  2409  	SQLITE_N_LIMIT                        = 12
  2410  	SQLITE_N_STDTYPE                      = 6
  2411  	SQLITE_NoCkptOnClose                  = 0x00000800
  2412  	SQLITE_NoSchemaError                  = 0x08000000
  2413  	SQLITE_NullCallback                   = 0x00000100
  2414  	SQLITE_OS_OTHER                       = 0
  2415  	SQLITE_OS_SETUP_H                     = 0
  2416  	SQLITE_OS_UNIX                        = 1
  2417  	SQLITE_OS_WIN                         = 0
  2418  	SQLITE_OmitNoopJoin                   = 0x00000100
  2419  	SQLITE_OmitOrderBy                    = 0x00040000
  2420  	SQLITE_OrderByIdxJoin                 = 0x00000040
  2421  	SQLITE_PAGER_H                        = 0
  2422  	SQLITE_POWERSAFE_OVERWRITE            = 1
  2423  	SQLITE_PREPARE_MASK                   = 0x0f
  2424  	SQLITE_PREPARE_SAVESQL                = 0x80
  2425  	SQLITE_PRINTF_INTERNAL                = 0x01
  2426  	SQLITE_PRINTF_MALLOCED                = 0x04
  2427  	SQLITE_PRINTF_SQLFUNC                 = 0x02
  2428  	SQLITE_PTRSIZE                        = 8
  2429  	SQLITE_PropagateConst                 = 0x00008000
  2430  	SQLITE_PushDown                       = 0x00001000
  2431  	SQLITE_QueryFlattener                 = 0x00000001
  2432  	SQLITE_QueryOnly                      = 0x00100000
  2433  	SQLITE_ReadUncommit                   = 0x00000400
  2434  	SQLITE_RecTriggers                    = 0x00002000
  2435  	SQLITE_ReleaseReg                     = 0x00400000
  2436  	SQLITE_ResetDatabase                  = 0x02000000
  2437  	SQLITE_ReverseOrder                   = 0x00001000
  2438  	SQLITE_SO_ASC                         = 0
  2439  	SQLITE_SO_DESC                        = 1
  2440  	SQLITE_SO_UNDEFINED                   = -1
  2441  	SQLITE_STATE_BUSY                     = 0x6d
  2442  	SQLITE_STATE_CLOSED                   = 0xce
  2443  	SQLITE_STATE_ERROR                    = 0xd5
  2444  	SQLITE_STATE_OPEN                     = 0x76
  2445  	SQLITE_STATE_SICK                     = 0xba
  2446  	SQLITE_STATE_ZOMBIE                   = 0xa7
  2447  	SQLITE_SYSTEM_MALLOC                  = 1
  2448  	SQLITE_SeekScan                       = 0x00020000
  2449  	SQLITE_ShortColNames                  = 0x00000040
  2450  	SQLITE_SimplifyJoin                   = 0x00002000
  2451  	SQLITE_SkipScan                       = 0x00004000
  2452  	SQLITE_Stat4                          = 0x00000800
  2453  	SQLITE_TEMP_FILE_PREFIX               = "etilqs_"
  2454  	SQLITE_TOKEN_KEYWORD                  = 0x2
  2455  	SQLITE_TOKEN_QUOTED                   = 0x1
  2456  	SQLITE_TRACE_LEGACY                   = 0x40
  2457  	SQLITE_TRACE_NONLEGACY_MASK           = 0x0f
  2458  	SQLITE_TRACE_XPROFILE                 = 0x80
  2459  	SQLITE_Transitive                     = 0x00000080
  2460  	SQLITE_TriggerEQP                     = 0x01000000
  2461  	SQLITE_TrustedSchema                  = 0x00000080
  2462  	SQLITE_UTF16NATIVE                    = 2
  2463  	SQLITE_VDBE_H                         = 0
  2464  	SQLITE_VTABRISK_High                  = 2
  2465  	SQLITE_VTABRISK_Low                   = 0
  2466  	SQLITE_VTABRISK_Normal                = 1
  2467  	SQLITE_WSD                            = 0
  2468  	SQLITE_WindowFunc                     = 0x00000002
  2469  	SQLITE_WriteSchema                    = 0x00000001
  2470  	SRT_Coroutine                         = 13
  2471  	SRT_Discard                           = 4
  2472  	SRT_DistFifo                          = 5
  2473  	SRT_DistQueue                         = 6
  2474  	SRT_EphemTab                          = 12
  2475  	SRT_Except                            = 2
  2476  	SRT_Exists                            = 3
  2477  	SRT_Fifo                              = 8
  2478  	SRT_Mem                               = 10
  2479  	SRT_Output                            = 9
  2480  	SRT_Queue                             = 7
  2481  	SRT_Set                               = 11
  2482  	SRT_Table                             = 14
  2483  	SRT_Union                             = 1
  2484  	SRT_Upfrom                            = 15
  2485  	STDC_HEADERS                          = 1
  2486  	TABTYP_NORM                           = 0
  2487  	TABTYP_VIEW                           = 2
  2488  	TABTYP_VTAB                           = 1
  2489  	TF_Autoincrement                      = 0x00000008
  2490  	TF_Ephemeral                          = 0x00004000
  2491  	TF_Eponymous                          = 0x00008000
  2492  	TF_HasGenerated                       = 0x00000060
  2493  	TF_HasHidden                          = 0x00000002
  2494  	TF_HasNotNull                         = 0x00000800
  2495  	TF_HasPrimaryKey                      = 0x00000004
  2496  	TF_HasStat1                           = 0x00000010
  2497  	TF_HasStat4                           = 0x00002000
  2498  	TF_HasStored                          = 0x00000040
  2499  	TF_HasVirtual                         = 0x00000020
  2500  	TF_NoVisibleRowid                     = 0x00000200
  2501  	TF_OOOHidden                          = 0x00000400
  2502  	TF_Readonly                           = 0x00000001
  2503  	TF_Shadow                             = 0x00001000
  2504  	TF_StatsUsed                          = 0x00000100
  2505  	TF_Strict                             = 0x00010000
  2506  	TF_WithoutRowid                       = 0x00000080
  2507  	TK_ABORT                              = 27
  2508  	TK_ACTION                             = 28
  2509  	TK_ADD                                = 163
  2510  	TK_AFTER                              = 29
  2511  	TK_AGG_COLUMN                         = 169
  2512  	TK_AGG_FUNCTION                       = 168
  2513  	TK_ALL                                = 135
  2514  	TK_ALTER                              = 162
  2515  	TK_ALWAYS                             = 96
  2516  	TK_ANALYZE                            = 30
  2517  	TK_AND                                = 44
  2518  	TK_ANY                                = 101
  2519  	TK_AS                                 = 24
  2520  	TK_ASC                                = 31
  2521  	TK_ASTERISK                           = 180
  2522  	TK_ATTACH                             = 32
  2523  	TK_AUTOINCR                           = 126
  2524  	TK_BEFORE                             = 33
  2525  	TK_BEGIN                              = 5
  2526  	TK_BETWEEN                            = 48
  2527  	TK_BY                                 = 34
  2528  	TK_CASCADE                            = 35
  2529  	TK_CASE                               = 157
  2530  	TK_CAST                               = 36
  2531  	TK_CHECK                              = 124
  2532  	TK_COLLATE                            = 113
  2533  	TK_COLUMN                             = 167
  2534  	TK_COLUMNKW                           = 60
  2535  	TK_COMMIT                             = 10
  2536  	TK_CONFLICT                           = 37
  2537  	TK_CONSTRAINT                         = 119
  2538  	TK_CREATE                             = 17
  2539  	TK_CTIME_KW                           = 100
  2540  	TK_CURRENT                            = 85
  2541  	TK_DATABASE                           = 38
  2542  	TK_DEFAULT                            = 120
  2543  	TK_DEFERRABLE                         = 131
  2544  	TK_DEFERRED                           = 7
  2545  	TK_DELETE                             = 128
  2546  	TK_DESC                               = 39
  2547  	TK_DETACH                             = 40
  2548  	TK_DISTINCT                           = 140
  2549  	TK_DO                                 = 61
  2550  	TK_DROP                               = 133
  2551  	TK_EACH                               = 41
  2552  	TK_ELSE                               = 160
  2553  	TK_END                                = 11
  2554  	TK_ESCAPE                             = 58
  2555  	TK_EXCEPT                             = 136
  2556  	TK_EXCLUDE                            = 91
  2557  	TK_EXCLUSIVE                          = 9
  2558  	TK_EXISTS                             = 20
  2559  	TK_EXPLAIN                            = 2
  2560  	TK_FAIL                               = 42
  2561  	TK_FILTER                             = 166
  2562  	TK_FIRST                              = 83
  2563  	TK_FOLLOWING                          = 86
  2564  	TK_FOR                                = 62
  2565  	TK_FOREIGN                            = 132
  2566  	TK_FROM                               = 142
  2567  	TK_FUNCTION                           = 172
  2568  	TK_GENERATED                          = 95
  2569  	TK_GROUP                              = 146
  2570  	TK_GROUPS                             = 92
  2571  	TK_HAVING                             = 147
  2572  	TK_IF                                 = 18
  2573  	TK_IF_NULL_ROW                        = 179
  2574  	TK_IGNORE                             = 63
  2575  	TK_IMMEDIATE                          = 8
  2576  	TK_IN                                 = 49
  2577  	TK_INDEX                              = 161
  2578  	TK_INDEXED                            = 116
  2579  	TK_INITIALLY                          = 64
  2580  	TK_INSERT                             = 127
  2581  	TK_INSTEAD                            = 65
  2582  	TK_INTERSECT                          = 137
  2583  	TK_INTO                               = 151
  2584  	TK_IS                                 = 45
  2585  	TK_ISNOT                              = 171
  2586  	TK_ISNULL                             = 50
  2587  	TK_JOIN                               = 143
  2588  	TK_JOIN_KW                            = 118
  2589  	TK_KEY                                = 67
  2590  	TK_LAST                               = 84
  2591  	TK_LIKE_KW                            = 47
  2592  	TK_LIMIT                              = 148
  2593  	TK_MATCH                              = 46
  2594  	TK_MATERIALIZED                       = 97
  2595  	TK_NO                                 = 66
  2596  	TK_NOT                                = 19
  2597  	TK_NOTHING                            = 152
  2598  	TK_NOTNULL                            = 51
  2599  	TK_NULL                               = 121
  2600  	TK_NULLS                              = 82
  2601  	TK_OF                                 = 68
  2602  	TK_OFFSET                             = 69
  2603  	TK_ON                                 = 115
  2604  	TK_OR                                 = 43
  2605  	TK_ORDER                              = 145
  2606  	TK_OTHERS                             = 93
  2607  	TK_OVER                               = 165
  2608  	TK_PARTITION                          = 87
  2609  	TK_PLAN                               = 4
  2610  	TK_PRAGMA                             = 70
  2611  	TK_PRECEDING                          = 88
  2612  	TK_PRIMARY                            = 122
  2613  	TK_PTR                                = 112
  2614  	TK_QUERY                              = 3
  2615  	TK_RAISE                              = 71
  2616  	TK_RANGE                              = 89
  2617  	TK_RECURSIVE                          = 72
  2618  	TK_REFERENCES                         = 125
  2619  	TK_REGISTER                           = 176
  2620  	TK_REINDEX                            = 98
  2621  	TK_RELEASE                            = 14
  2622  	TK_RENAME                             = 99
  2623  	TK_REPLACE                            = 73
  2624  	TK_RESTRICT                           = 74
  2625  	TK_RETURNING                          = 150
  2626  	TK_ROLLBACK                           = 12
  2627  	TK_ROW                                = 75
  2628  	TK_ROWS                               = 76
  2629  	TK_SAVEPOINT                          = 13
  2630  	TK_SELECT                             = 138
  2631  	TK_SELECT_COLUMN                      = 178
  2632  	TK_SET                                = 130
  2633  	TK_SPAN                               = 181
  2634  	TK_TABLE                              = 16
  2635  	TK_TEMP                               = 21
  2636  	TK_THEN                               = 159
  2637  	TK_TIES                               = 94
  2638  	TK_TO                                 = 15
  2639  	TK_TRANSACTION                        = 6
  2640  	TK_TRIGGER                            = 77
  2641  	TK_TRUEFALSE                          = 170
  2642  	TK_TRUTH                              = 175
  2643  	TK_UMINUS                             = 173
  2644  	TK_UNBOUNDED                          = 90
  2645  	TK_UNION                              = 134
  2646  	TK_UNIQUE                             = 123
  2647  	TK_UPDATE                             = 129
  2648  	TK_UPLUS                              = 174
  2649  	TK_USING                              = 144
  2650  	TK_VACUUM                             = 78
  2651  	TK_VALUES                             = 139
  2652  	TK_VECTOR                             = 177
  2653  	TK_VIEW                               = 79
  2654  	TK_VIRTUAL                            = 80
  2655  	TK_WHEN                               = 158
  2656  	TK_WHERE                              = 149
  2657  	TK_WINDOW                             = 164
  2658  	TK_WITH                               = 81
  2659  	TK_WITHOUT                            = 26
  2660  	TREETRACE_ENABLED                     = 0
  2661  	TRIGGER_AFTER                         = 2
  2662  	TRIGGER_BEFORE                        = 1
  2663  	UINT16_MAX                            = 0xffff
  2664  	UINT32_MAX                            = 0xffffffff
  2665  	UINT64_MAX                            = 0xffffffffffffffff
  2666  	UINT8_MAX                             = 0xff
  2667  	UINTMAX_MAX                           = 18446744073709551615
  2668  	UINTPTR_MAX                           = 0xffffffffffffffff
  2669  	UINT_FAST16_MAX                       = 4294967295
  2670  	UINT_FAST32_MAX                       = 4294967295
  2671  	UINT_FAST64_MAX                       = 18446744073709551615
  2672  	UINT_FAST8_MAX                        = 4294967295
  2673  	UINT_LEAST16_MAX                      = 65535
  2674  	UINT_LEAST32_MAX                      = 4294967295
  2675  	UINT_LEAST64_MAX                      = 18446744073709551615
  2676  	UINT_LEAST8_MAX                       = 255
  2677  	WCHAR_MAX                             = 2147483647
  2678  	WCHAR_MIN                             = -2147483648
  2679  	WHERE_AGG_DISTINCT                    = 0x0400
  2680  	WHERE_DISTINCTBY                      = 0x0080
  2681  	WHERE_DISTINCT_NOOP                   = 0
  2682  	WHERE_DISTINCT_ORDERED                = 2
  2683  	WHERE_DISTINCT_UNIQUE                 = 1
  2684  	WHERE_DISTINCT_UNORDERED              = 3
  2685  	WHERE_DUPLICATES_OK                   = 0x0010
  2686  	WHERE_GROUPBY                         = 0x0040
  2687  	WHERE_ONEPASS_DESIRED                 = 0x0004
  2688  	WHERE_ONEPASS_MULTIROW                = 0x0008
  2689  	WHERE_ORDERBY_LIMIT                   = 0x0800
  2690  	WHERE_ORDERBY_MAX                     = 0x0002
  2691  	WHERE_ORDERBY_MIN                     = 0x0001
  2692  	WHERE_ORDERBY_NORMAL                  = 0x0000
  2693  	WHERE_OR_SUBCLAUSE                    = 0x0020
  2694  	WHERE_RIGHT_JOIN                      = 0x1000
  2695  	WHERE_SORTBYGROUP                     = 0x0200
  2696  	WHERE_USE_LIMIT                       = 0x4000
  2697  	WHERE_WANT_DISTINCT                   = 0x0100
  2698  	WINT_MAX                              = 2147483647
  2699  	WINT_MIN                              = -2147483648
  2700  	WRC_Abort                             = 2
  2701  	WRC_Continue                          = 0
  2702  	WRC_Prune                             = 1
  2703  	XN_EXPR                               = -2
  2704  	XN_ROWID                              = -1
  2705  	X_BSD_SOURCE                          = 0
  2706  	X_GNU_SOURCE                          = 0
  2707  	X_INTTYPES_H_                         = 0
  2708  	X_LARGEFILE_SOURCE                    = 1
  2709  	X_LARGE_FILE                          = 1
  2710  	X_MBSTATE_T_DEFINED_                  = 0
  2711  	X_PTRDIFF_T_DEFINED_                  = 0
  2712  	X_SQLITE_OS_H_                        = 0
  2713  	X_STDDEF_H_                           = 0
  2714  	X_SYS_STDINT_H_                       = 0
  2715  	X_WINT_T_DEFINED_                     = 0
  2716  	X_XOPEN_SOURCE                        = 600
  2717  	SESSION_STREAM_TCL_VAR                = "sqlite3session_streams"
  2718  	BUS_ADRALN                            = 1
  2719  	BUS_ADRERR                            = 2
  2720  	BUS_OBJERR                            = 3
  2721  	CLD_CONTINUED                         = 6
  2722  	CLD_DUMPED                            = 3
  2723  	CLD_EXITED                            = 1
  2724  	CLD_KILLED                            = 2
  2725  	CLD_STOPPED                           = 5
  2726  	CLD_TRAPPED                           = 4
  2727  	EMT_TAGOVF                            = 1
  2728  	FPE_FLTDIV                            = 3
  2729  	FPE_FLTINV                            = 7
  2730  	FPE_FLTOVF                            = 4
  2731  	FPE_FLTRES                            = 6
  2732  	FPE_FLTSUB                            = 8
  2733  	FPE_FLTUND                            = 5
  2734  	FPE_INTDIV                            = 1
  2735  	FPE_INTOVF                            = 2
  2736  	ILL_BADSTK                            = 8
  2737  	ILL_COPROC                            = 7
  2738  	ILL_ILLADR                            = 3
  2739  	ILL_ILLOPC                            = 1
  2740  	ILL_ILLOPN                            = 2
  2741  	ILL_ILLTRP                            = 4
  2742  	ILL_PRVOPC                            = 5
  2743  	ILL_PRVREG                            = 6
  2744  	MAX_PREPARED_STMTS                    = 100
  2745  	MINSIGSTKSZ                           = 12288
  2746  	NSIG                                  = 33
  2747  	NSIGBUS                               = 3
  2748  	NSIGCLD                               = 6
  2749  	NSIGEMT                               = 1
  2750  	NSIGFPE                               = 8
  2751  	NSIGILL                               = 8
  2752  	NSIGSEGV                              = 2
  2753  	NSIGTRAP                              = 2
  2754  	NUM_PREPARED_STMTS                    = 10
  2755  	SA_NOCLDSTOP                          = 0x0008
  2756  	SA_NOCLDWAIT                          = 0x0020
  2757  	SA_NODEFER                            = 0x0010
  2758  	SA_ONSTACK                            = 0x0001
  2759  	SA_RESETHAND                          = 0x0004
  2760  	SA_RESTART                            = 0x0002
  2761  	SA_SIGINFO                            = 0x0040
  2762  	SEGV_ACCERR                           = 2
  2763  	SEGV_MAPERR                           = 1
  2764  	SIGABRT                               = 6
  2765  	SIGALRM                               = 14
  2766  	SIGBUS                                = 10
  2767  	SIGCHLD                               = 20
  2768  	SIGCONT                               = 19
  2769  	SIGEMT                                = 7
  2770  	SIGFPE                                = 8
  2771  	SIGHUP                                = 1
  2772  	SIGILL                                = 4
  2773  	SIGINFO                               = 29
  2774  	SIGINT                                = 2
  2775  	SIGIO                                 = 23
  2776  	SIGIOT                                = 6
  2777  	SIGKILL                               = 9
  2778  	SIGPIPE                               = 13
  2779  	SIGPROF                               = 27
  2780  	SIGQUIT                               = 3
  2781  	SIGSEGV                               = 11
  2782  	SIGSTKSZ                              = 28672
  2783  	SIGSTOP                               = 17
  2784  	SIGSYS                                = 12
  2785  	SIGTERM                               = 15
  2786  	SIGTHR                                = 32
  2787  	SIGTRAP                               = 5
  2788  	SIGTSTP                               = 18
  2789  	SIGTTIN                               = 21
  2790  	SIGTTOU                               = 22
  2791  	SIGURG                                = 16
  2792  	SIGUSR1                               = 30
  2793  	SIGUSR2                               = 31
  2794  	SIGVTALRM                             = 26
  2795  	SIGWINCH                              = 28
  2796  	SIGXCPU                               = 24
  2797  	SIGXFSZ                               = 25
  2798  	SIG_BLOCK                             = 1
  2799  	SIG_SETMASK                           = 3
  2800  	SIG_UNBLOCK                           = 2
  2801  	SI_LWP                                = -1
  2802  	SI_MAXSZ                              = 128
  2803  	SI_NOINFO                             = 32767
  2804  	SI_QUEUE                              = -2
  2805  	SI_TIMER                              = -3
  2806  	SI_USER                               = 0
  2807  	SQLITE_EVAL_WITHOUTNULLS              = 0x00001
  2808  	SQLITE_TCL_NRE                        = 1
  2809  	SS_DISABLE                            = 0x0004
  2810  	SS_ONSTACK                            = 0x0001
  2811  	SV_INTERRUPT                          = 2
  2812  	SV_ONSTACK                            = 1
  2813  	SV_RESETHAND                          = 4
  2814  	TCLSH                                 = 1
  2815  	TRAP_BRKPT                            = 1
  2816  	TRAP_TRACE                            = 2
  2817  	X_MACHINE_SIGNAL_H_                   = 0
  2818  	X_NSIG                                = 33
  2819  	X_SYS_SIGINFO_H                       = 0
  2820  	X_SYS_SIGNAL_H_                       = 0
  2821  	X_USER_SIGNAL_H                       = 0
  2822  	CACHE_STALE                           = 0
  2823  	CURTYPE_BTREE                         = 0
  2824  	CURTYPE_PSEUDO                        = 3
  2825  	CURTYPE_SORTER                        = 1
  2826  	CURTYPE_VTAB                          = 2
  2827  	MEM_AffMask                           = 0x003f
  2828  	MEM_Agg                               = 0x8000
  2829  	MEM_Blob                              = 0x0010
  2830  	MEM_Cleared                           = 0x0100
  2831  	MEM_Dyn                               = 0x1000
  2832  	MEM_Ephem                             = 0x4000
  2833  	MEM_FromBind                          = 0x0040
  2834  	MEM_Int                               = 0x0004
  2835  	MEM_IntReal                           = 0x0020
  2836  	MEM_Null                              = 0x0001
  2837  	MEM_Real                              = 0x0008
  2838  	MEM_Static                            = 0x2000
  2839  	MEM_Str                               = 0x0002
  2840  	MEM_Subtype                           = 0x0800
  2841  	MEM_Term                              = 0x0200
  2842  	MEM_TypeMask                          = 0x0dbf
  2843  	MEM_Undefined                         = 0x0000
  2844  	MEM_Zero                              = 0x0400
  2845  	PRIO_MAX                              = 20
  2846  	PRIO_MIN                              = -20
  2847  	PRIO_PGRP                             = 1
  2848  	PRIO_PROCESS                          = 0
  2849  	PRIO_USER                             = 2
  2850  	RLIMIT_CORE                           = 4
  2851  	RLIMIT_CPU                            = 0
  2852  	RLIMIT_DATA                           = 2
  2853  	RLIMIT_FSIZE                          = 1
  2854  	RLIMIT_MEMLOCK                        = 6
  2855  	RLIMIT_NOFILE                         = 8
  2856  	RLIMIT_NPROC                          = 7
  2857  	RLIMIT_RSS                            = 5
  2858  	RLIMIT_STACK                          = 3
  2859  	RLIM_NLIMITS                          = 9
  2860  	RUSAGE_CHILDREN                       = -1
  2861  	RUSAGE_SELF                           = 0
  2862  	RUSAGE_THREAD                         = 1
  2863  	SQLITE_ENABLE_LOCKING_STYLE           = 0
  2864  	SQLITE_FRAME_MAGIC                    = 0x879fb71e
  2865  	SQLITE_MAX_SCHEMA_RETRY               = 50
  2866  	SQLITE_VDBEINT_H                      = 0
  2867  	VDBE_DISPLAY_P4                       = 1
  2868  	VDBE_HALT_STATE                       = 3
  2869  	VDBE_INIT_STATE                       = 0
  2870  	VDBE_READY_STATE                      = 1
  2871  	VDBE_RUN_STATE                        = 2
  2872  	X_SYS_RESOURCE_H_                     = 0
  2873  	BTCF_AtLast                           = 0x08
  2874  	BTCF_Incrblob                         = 0x10
  2875  	BTCF_Multiple                         = 0x20
  2876  	BTCF_Pinned                           = 0x40
  2877  	BTCF_ValidNKey                        = 0x02
  2878  	BTCF_ValidOvfl                        = 0x04
  2879  	BTCF_WriteFlag                        = 0x01
  2880  	BTCURSOR_MAX_DEPTH                    = 20
  2881  	BTS_EXCLUSIVE                         = 0x0040
  2882  	BTS_FAST_SECURE                       = 0x000c
  2883  	BTS_INITIALLY_EMPTY                   = 0x0010
  2884  	BTS_NO_WAL                            = 0x0020
  2885  	BTS_OVERWRITE                         = 0x0008
  2886  	BTS_PAGESIZE_FIXED                    = 0x0002
  2887  	BTS_PENDING                           = 0x0080
  2888  	BTS_READ_ONLY                         = 0x0001
  2889  	BTS_SECURE_DELETE                     = 0x0004
  2890  	CURSOR_FAULT                          = 4
  2891  	CURSOR_INVALID                        = 1
  2892  	CURSOR_REQUIRESEEK                    = 3
  2893  	CURSOR_SKIPNEXT                       = 2
  2894  	CURSOR_VALID                          = 0
  2895  	PTF_INTKEY                            = 0x01
  2896  	PTF_LEAF                              = 0x08
  2897  	PTF_LEAFDATA                          = 0x04
  2898  	PTF_ZERODATA                          = 0x02
  2899  	PTRMAP_BTREE                          = 5
  2900  	PTRMAP_FREEPAGE                       = 2
  2901  	PTRMAP_OVERFLOW1                      = 3
  2902  	PTRMAP_OVERFLOW2                      = 4
  2903  	PTRMAP_ROOTPAGE                       = 1
  2904  	READ_LOCK                             = 1
  2905  	SQLITE_FILE_HEADER                    = "SQLite format 3"
  2906  	TRANS_NONE                            = 0
  2907  	TRANS_READ                            = 1
  2908  	TRANS_WRITE                           = 2
  2909  	WRITE_LOCK                            = 2
  2910  	ARG_MAX                               = 524288
  2911  	BC_BASE_MAX                           = 2147483647
  2912  	BC_DIM_MAX                            = 65535
  2913  	BC_SCALE_MAX                          = 2147483647
  2914  	BC_STRING_MAX                         = 2147483647
  2915  	CHAR_BIT                              = 8
  2916  	CHAR_MAX                              = 0x7f
  2917  	CHAR_MIN                              = -128
  2918  	CHILD_MAX                             = 80
  2919  	COLL_WEIGHTS_MAX                      = 2
  2920  	EXPR_NEST_MAX                         = 32
  2921  	GID_MAX                               = 4294967295
  2922  	HOST_NAME_MAX                         = 255
  2923  	INT_MAX                               = 0x7fffffff
  2924  	INT_MIN                               = -2147483648
  2925  	IOV_MAX                               = 1024
  2926  	LINE_MAX                              = 2048
  2927  	LINK_MAX                              = 32767
  2928  	LLONG_MAX                             = 0x7fffffffffffffff
  2929  	LLONG_MIN                             = -9223372036854775808
  2930  	LOGIN_NAME_MAX                        = 32
  2931  	LONG_BIT                              = 64
  2932  	LONG_MAX                              = 0x7fffffffffffffff
  2933  	LONG_MIN                              = -9223372036854775808
  2934  	MAX_CANON                             = 255
  2935  	MAX_INPUT                             = 255
  2936  	MB_LEN_MAX                            = 4
  2937  	NAME_MAX                              = 255
  2938  	NGROUPS_MAX                           = 16
  2939  	NL_ARGMAX                             = 9
  2940  	NL_LANGMAX                            = 14
  2941  	NL_MSGMAX                             = 32767
  2942  	NL_SETMAX                             = 255
  2943  	NL_TEXTMAX                            = 255
  2944  	NZERO                                 = 20
  2945  	N_THREAD                              = 26
  2946  	OPEN_MAX                              = 64
  2947  	PATH_MAX                              = 1024
  2948  	PIPE_BUF                              = 512
  2949  	PTHREAD_BARRIER_SERIAL_THREAD         = -1
  2950  	PTHREAD_CANCEL_ASYNCHRONOUS           = 2
  2951  	PTHREAD_CANCEL_DEFERRED               = 0
  2952  	PTHREAD_CANCEL_DISABLE                = 1
  2953  	PTHREAD_CANCEL_ENABLE                 = 0
  2954  	PTHREAD_CREATE_DETACHED               = 1
  2955  	PTHREAD_CREATE_JOINABLE               = 0
  2956  	PTHREAD_DESTRUCTOR_ITERATIONS         = 4
  2957  	PTHREAD_DETACHED                      = 0x1
  2958  	PTHREAD_DONE_INIT                     = 1
  2959  	PTHREAD_EXPLICIT_SCHED                = 0
  2960  	PTHREAD_INHERIT_SCHED                 = 0x4
  2961  	PTHREAD_KEYS_MAX                      = 256
  2962  	PTHREAD_NEEDS_INIT                    = 0
  2963  	PTHREAD_NOFLOAT                       = 0x8
  2964  	PTHREAD_PRIO_INHERIT                  = 1
  2965  	PTHREAD_PRIO_NONE                     = 0
  2966  	PTHREAD_PRIO_PROTECT                  = 2
  2967  	PTHREAD_PROCESS_PRIVATE               = 0
  2968  	PTHREAD_PROCESS_SHARED                = 1
  2969  	PTHREAD_SCOPE_PROCESS                 = 0
  2970  	PTHREAD_SCOPE_SYSTEM                  = 0x2
  2971  	PTHREAD_STACK_MIN                     = 4096
  2972  	PTHREAD_THREADS_MAX                   = 18446744073709551615
  2973  	QUAD_MAX                              = 0x7fffffffffffffff
  2974  	QUAD_MIN                              = -9223372036854775808
  2975  	RE_DUP_MAX                            = 255
  2976  	SCHAR_MAX                             = 0x7f
  2977  	SCHAR_MIN                             = -128
  2978  	SCHED_FIFO                            = 1
  2979  	SCHED_OTHER                           = 2
  2980  	SCHED_RR                              = 3
  2981  	SEM_VALUE_MAX                         = 4294967295
  2982  	SHRT_MAX                              = 0x7fff
  2983  	SHRT_MIN                              = -32768
  2984  	SIZE_T_MAX                            = 18446744073709551615
  2985  	SSIZE_MAX                             = 9223372036854775807
  2986  	SYMLINK_MAX                           = 1024
  2987  	SYMLOOP_MAX                           = 32
  2988  	TTY_NAME_MAX                          = 260
  2989  	UCHAR_MAX                             = 0xff
  2990  	UID_MAX                               = 4294967295
  2991  	UINT_MAX                              = 0xffffffff
  2992  	ULLONG_MAX                            = 0xffffffffffffffff
  2993  	ULONG_MAX                             = 0xffffffffffffffff
  2994  	UQUAD_MAX                             = 0xffffffffffffffff
  2995  	USHRT_MAX                             = 0xffff
  2996  	WORD_BIT                              = 32
  2997  	X_LIMITS_H_                           = 0
  2998  	X_MACHINE_LIMITS_H_                   = 0
  2999  	X_MAXCOMLEN                           = 24
  3000  	X_POSIX2_BC_BASE_MAX                  = 99
  3001  	X_POSIX2_BC_DIM_MAX                   = 2048
  3002  	X_POSIX2_BC_SCALE_MAX                 = 99
  3003  	X_POSIX2_BC_STRING_MAX                = 1000
  3004  	X_POSIX2_CHARCLASS_NAME_MAX           = 14
  3005  	X_POSIX2_COLL_WEIGHTS_MAX             = 2
  3006  	X_POSIX2_EXPR_NEST_MAX                = 32
  3007  	X_POSIX2_LINE_MAX                     = 2048
  3008  	X_POSIX2_RE_DUP_MAX                   = 255
  3009  	X_POSIX_ARG_MAX                       = 4096
  3010  	X_POSIX_CHILD_MAX                     = 25
  3011  	X_POSIX_CLOCKRES_MIN                  = 20000000
  3012  	X_POSIX_HOST_NAME_MAX                 = 255
  3013  	X_POSIX_LINK_MAX                      = 8
  3014  	X_POSIX_LOGIN_NAME_MAX                = 9
  3015  	X_POSIX_MAX_CANON                     = 255
  3016  	X_POSIX_MAX_INPUT                     = 255
  3017  	X_POSIX_NAME_MAX                      = 14
  3018  	X_POSIX_NGROUPS_MAX                   = 8
  3019  	X_POSIX_OPEN_MAX                      = 20
  3020  	X_POSIX_PATH_MAX                      = 256
  3021  	X_POSIX_PIPE_BUF                      = 512
  3022  	X_POSIX_RE_DUP_MAX                    = 255
  3023  	X_POSIX_SEM_NSEMS_MAX                 = 256
  3024  	X_POSIX_SEM_VALUE_MAX                 = 32767
  3025  	X_POSIX_SSIZE_MAX                     = 32767
  3026  	X_POSIX_STREAM_MAX                    = 8
  3027  	X_POSIX_SYMLINK_MAX                   = 255
  3028  	X_POSIX_SYMLOOP_MAX                   = 8
  3029  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS  = 4
  3030  	X_POSIX_THREAD_KEYS_MAX               = 128
  3031  	X_POSIX_THREAD_THREADS_MAX            = 4
  3032  	X_POSIX_TTY_NAME_MAX                  = 9
  3033  	X_POSIX_TZNAME_MAX                    = 6
  3034  	X_PTHREAD_H_                          = 0
  3035  	X_SCHED_H_                            = 0
  3036  	X_SYS_LIMITS_H_                       = 0
  3037  	X_XOPEN_IOV_MAX                       = 16
  3038  	X_XOPEN_NAME_MAX                      = 255
  3039  	X_XOPEN_PATH_MAX                      = 1024
  3040  	TCL_THREADS                           = 0
  3041  	MX_CHUNK_NUMBER                       = 299
  3042  	SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET   = 400
  3043  	SQLITE_MULTIPLEX_WAL_8_3_OFFSET       = 700
  3044  	DEVSYM_MAX_PATHNAME                   = 512
  3045  	DEVSYM_VFS_NAME                       = "devsym"
  3046  	WRITECRASH_NAME                       = "writecrash"
  3047  	SQLITE_INTARRAY_H                     = 0
  3048  	JT_MAX_PATHNAME                       = 512
  3049  	JT_VFS_NAME                           = "jt"
  3050  	MALLOC_LOG_FRAMES                     = 10
  3051  	DEFAULT_SECTOR_SIZE                   = 0x1000
  3052  	MAX_PAGE_SIZE                         = 0x10000
  3053  	MULTIPLEX_CTRL_ENABLE                 = 214014
  3054  	MULTIPLEX_CTRL_SET_CHUNK_SIZE         = 214015
  3055  	MULTIPLEX_CTRL_SET_MAX_CHUNKS         = 214016
  3056  	SQLITE_MULTIPLEX_CHUNK_SIZE           = 2147418112
  3057  	SQLITE_MULTIPLEX_MAX_CHUNKS           = 12
  3058  	SQLITE_MULTIPLEX_VFS_NAME             = "multiplex"
  3059  	SQLITE_TEST_MULTIPLEX_H               = 0
  3060  	MAX_MUTEXES                           = 14
  3061  	STATIC_MUTEXES                        = 12
  3062  	BLOBSIZE                              = 10485760
  3063  	BLOCKSIZE                             = 512
  3064  	DATABASE_FILE                         = 1
  3065  	FS_VFS_NAME                           = "fs"
  3066  	JOURNAL_FILE                          = 2
  3067  	INST_MAX_PATHNAME                     = 512
  3068  	OS_ACCESS                             = 1
  3069  	OS_ANNOTATE                           = 28
  3070  	OS_CHECKRESERVEDLOCK                  = 2
  3071  	OS_CLOSE                              = 3
  3072  	OS_CURRENTTIME                        = 4
  3073  	OS_DELETE                             = 5
  3074  	OS_DEVCHAR                            = 6
  3075  	OS_FILECONTROL                        = 7
  3076  	OS_FILESIZE                           = 8
  3077  	OS_FULLPATHNAME                       = 9
  3078  	OS_LOCK                               = 11
  3079  	OS_NUMEVENTS                          = 29
  3080  	OS_OPEN                               = 12
  3081  	OS_RANDOMNESS                         = 13
  3082  	OS_READ                               = 14
  3083  	OS_SECTORSIZE                         = 15
  3084  	OS_SHMBARRIER                         = 26
  3085  	OS_SHMLOCK                            = 25
  3086  	OS_SHMMAP                             = 23
  3087  	OS_SHMUNMAP                           = 22
  3088  	OS_SLEEP                              = 16
  3089  	OS_SYNC                               = 17
  3090  	OS_TRUNCATE                           = 18
  3091  	OS_UNLOCK                             = 19
  3092  	OS_WRITE                              = 20
  3093  	VFSLOG_BUFFERSIZE                     = 8192
  3094  	TESTPCACHE_CLEAR                      = 0xd42670d4
  3095  	TESTPCACHE_NPAGE                      = 217
  3096  	TESTPCACHE_RESERVE                    = 17
  3097  	TESTPCACHE_VALID                      = 0x364585fd
  3098  	MSG_Close                             = 6
  3099  	MSG_Done                              = 7
  3100  	MSG_Finalize                          = 5
  3101  	MSG_Open                              = 1
  3102  	MSG_Prepare                           = 2
  3103  	MSG_Reset                             = 4
  3104  	MSG_Step                              = 3
  3105  	MADV_DONTNEED                         = 4
  3106  	MADV_FREE                             = 6
  3107  	MADV_NORMAL                           = 0
  3108  	MADV_RANDOM                           = 1
  3109  	MADV_SEQUENTIAL                       = 2
  3110  	MADV_SPACEAVAIL                       = 5
  3111  	MADV_WILLNEED                         = 3
  3112  	MAP_ANON                              = 0x1000
  3113  	MAP_ANONYMOUS                         = 4096
  3114  	MAP_CONCEAL                           = 0x8000
  3115  	MAP_COPY                              = 2
  3116  	MAP_FILE                              = 0
  3117  	MAP_FIXED                             = 0x0010
  3118  	MAP_FLAGMASK                          = 0xfff7
  3119  	MAP_HASSEMAPHORE                      = 0
  3120  	MAP_INHERIT                           = 0
  3121  	MAP_INHERIT_COPY                      = 1
  3122  	MAP_INHERIT_NONE                      = 2
  3123  	MAP_INHERIT_SHARE                     = 0
  3124  	MAP_INHERIT_ZERO                      = 3
  3125  	MAP_NOEXTEND                          = 0
  3126  	MAP_NORESERVE                         = 0
  3127  	MAP_PRIVATE                           = 0x0002
  3128  	MAP_RENAME                            = 0
  3129  	MAP_SHARED                            = 0x0001
  3130  	MAP_STACK                             = 0x4000
  3131  	MAP_TRYFIXED                          = 0
  3132  	MCL_CURRENT                           = 0x01
  3133  	MCL_FUTURE                            = 0x02
  3134  	MS_ASYNC                              = 0x01
  3135  	MS_INVALIDATE                         = 0x04
  3136  	MS_SYNC                               = 0x02
  3137  	POSIX_MADV_DONTNEED                   = 4
  3138  	POSIX_MADV_NORMAL                     = 0
  3139  	POSIX_MADV_RANDOM                     = 1
  3140  	POSIX_MADV_SEQUENTIAL                 = 2
  3141  	POSIX_MADV_WILLNEED                   = 3
  3142  	PROT_EXEC                             = 0x04
  3143  	PROT_NONE                             = 0x00
  3144  	PROT_READ                             = 0x01
  3145  	PROT_WRITE                            = 0x02
  3146  	TCLVAR_NAME_EQ                        = 101
  3147  	TCLVAR_NAME_MATCH                     = 109
  3148  	TCLVAR_VALUE_GLOB                     = 103
  3149  	TCLVAR_VALUE_LIKE                     = 108
  3150  	TCLVAR_VALUE_REGEXP                   = 114
  3151  	FAULT_INJECT_NONE                     = 0
  3152  	FAULT_INJECT_PERSISTENT               = 2
  3153  	FAULT_INJECT_TRANSIENT                = 1
  3154  	TESTVFS_ACCESS_MASK                   = 0x00004000
  3155  	TESTVFS_ALL_MASK                      = 0x001FFFFF
  3156  	TESTVFS_CKLOCK_MASK                   = 0x00080000
  3157  	TESTVFS_CLOSE_MASK                    = 0x00000800
  3158  	TESTVFS_DELETE_MASK                   = 0x00000400
  3159  	TESTVFS_FCNTL_MASK                    = 0x00100000
  3160  	TESTVFS_FULLPATHNAME_MASK             = 0x00008000
  3161  	TESTVFS_LOCK_MASK                     = 0x00040000
  3162  	TESTVFS_MAX_ARGS                      = 12
  3163  	TESTVFS_MAX_PAGES                     = 1024
  3164  	TESTVFS_OPEN_MASK                     = 0x00000100
  3165  	TESTVFS_READ_MASK                     = 0x00010000
  3166  	TESTVFS_SHMBARRIER_MASK               = 0x00000040
  3167  	TESTVFS_SHMCLOSE_MASK                 = 0x00000080
  3168  	TESTVFS_SHMLOCK_MASK                  = 0x00000010
  3169  	TESTVFS_SHMMAP_MASK                   = 0x00000020
  3170  	TESTVFS_SHMOPEN_MASK                  = 0x00000001
  3171  	TESTVFS_SYNC_MASK                     = 0x00000200
  3172  	TESTVFS_TRUNCATE_MASK                 = 0x00002000
  3173  	TESTVFS_UNLOCK_MASK                   = 0x00020000
  3174  	TESTVFS_WRITE_MASK                    = 0x00001000
  3175  )
  3176  
  3177  const (
  3178  	PTHREAD_MUTEX_ERRORCHECK = 1
  3179  	PTHREAD_MUTEX_RECURSIVE  = 2
  3180  	PTHREAD_MUTEX_NORMAL     = 3
  3181  	PTHREAD_MUTEX_STRICT_NP  = 4
  3182  	PTHREAD_MUTEX_TYPE_MAX   = 5
  3183  )
  3184  
  3185  const (
  3186  	TCL_QUEUE_TAIL = 0
  3187  	TCL_QUEUE_HEAD = 1
  3188  	TCL_QUEUE_MARK = 2
  3189  )
  3190  
  3191  const (
  3192  	TCL_PATH_ABSOLUTE        = 0
  3193  	TCL_PATH_RELATIVE        = 1
  3194  	TCL_PATH_VOLUME_RELATIVE = 2
  3195  )
  3196  
  3197  const (
  3198  	TCL_INT      = 0
  3199  	TCL_DOUBLE   = 1
  3200  	TCL_EITHER   = 2
  3201  	TCL_WIDE_INT = 3
  3202  )
  3203  
  3204  type ptrdiff_t = int64
  3205  
  3206  type size_t = uint64
  3207  
  3208  type wchar_t = int32
  3209  
  3210  type va_list = uintptr
  3211  
  3212  type sqlite32 = struct {
  3213  	FpVfs                   uintptr
  3214  	FpVdbe                  uintptr
  3215  	FpDfltColl              uintptr
  3216  	Fmutex                  uintptr
  3217  	FaDb                    uintptr
  3218  	FnDb                    int32
  3219  	FmDbFlags               u32
  3220  	Fflags                  u64
  3221  	FlastRowid              i64
  3222  	FszMmap                 i64
  3223  	FnSchemaLock            u32
  3224  	FopenFlags              uint32
  3225  	FerrCode                int32
  3226  	FerrByteOffset          int32
  3227  	FerrMask                int32
  3228  	FiSysErrno              int32
  3229  	FdbOptFlags             u32
  3230  	Fenc                    u8
  3231  	FautoCommit             u8
  3232  	Ftemp_store             u8
  3233  	FmallocFailed           u8
  3234  	FbBenignMalloc          u8
  3235  	FdfltLockMode           u8
  3236  	FnextAutovac            int8
  3237  	FsuppressErr            u8
  3238  	FvtabOnConflict         u8
  3239  	FisTransactionSavepoint u8
  3240  	FmTrace                 u8
  3241  	FnoSharedCache          u8
  3242  	FnSqlExec               u8
  3243  	FeOpenState             u8
  3244  	F__ccgo_pad1            [2]byte
  3245  	FnextPagesize           int32
  3246  	FnChange                i64
  3247  	FnTotalChange           i64
  3248  	FaLimit                 [12]int32
  3249  	FnMaxSorterMmap         int32
  3250  	F__ccgo_pad2            [4]byte
  3251  	Finit                   struct {
  3252  		FnewTnum       Pgno
  3253  		FiDb           u8
  3254  		Fbusy          u8
  3255  		F__ccgo_pad1   [2]byte
  3256  		ForphanTrigger uint8
  3257  		F__ccgo_pad2   [7]byte
  3258  		FazInit        uintptr
  3259  	}
  3260  	FnVdbeActive        int32
  3261  	FnVdbeRead          int32
  3262  	FnVdbeWrite         int32
  3263  	FnVdbeExec          int32
  3264  	FnVDestroy          int32
  3265  	FnExtension         int32
  3266  	FaExtension         uintptr
  3267  	Ftrace              struct{ FxLegacy uintptr }
  3268  	FpTraceArg          uintptr
  3269  	FxProfile           uintptr
  3270  	FpProfileArg        uintptr
  3271  	FpCommitArg         uintptr
  3272  	FxCommitCallback    uintptr
  3273  	FpRollbackArg       uintptr
  3274  	FxRollbackCallback  uintptr
  3275  	FpUpdateArg         uintptr
  3276  	FxUpdateCallback    uintptr
  3277  	FpAutovacPagesArg   uintptr
  3278  	FxAutovacDestr      uintptr
  3279  	FxAutovacPages      uintptr
  3280  	FpParse             uintptr
  3281  	FpPreUpdateArg      uintptr
  3282  	FxPreUpdateCallback uintptr
  3283  	FpPreUpdate         uintptr
  3284  	FxWalCallback       uintptr
  3285  	FpWalArg            uintptr
  3286  	FxCollNeeded        uintptr
  3287  	FxCollNeeded16      uintptr
  3288  	FpCollNeededArg     uintptr
  3289  	FpErr               uintptr
  3290  	Fu1                 struct {
  3291  		F__ccgo_pad1   [0]uint64
  3292  		FisInterrupted int32
  3293  		F__ccgo_pad2   [4]byte
  3294  	}
  3295  	Flookaside           Lookaside
  3296  	FxAuth               sqlite3_xauth
  3297  	FpAuthArg            uintptr
  3298  	FxProgress           uintptr
  3299  	FpProgressArg        uintptr
  3300  	FnProgressOps        uint32
  3301  	FnVTrans             int32
  3302  	FaModule             Hash
  3303  	FpVtabCtx            uintptr
  3304  	FaVTrans             uintptr
  3305  	FpDisconnect         uintptr
  3306  	FaFunc               Hash
  3307  	FaCollSeq            Hash
  3308  	FbusyHandler         BusyHandler
  3309  	FaDbStatic           [2]Db
  3310  	FpSavepoint          uintptr
  3311  	FnAnalysisLimit      int32
  3312  	FbusyTimeout         int32
  3313  	FnSavepoint          int32
  3314  	FnStatement          int32
  3315  	FnDeferredCons       i64
  3316  	FnDeferredImmCons    i64
  3317  	FpnBytesFreed        uintptr
  3318  	FpBlockingConnection uintptr
  3319  	FpUnlockConnection   uintptr
  3320  	FpUnlockArg          uintptr
  3321  	FxUnlockNotify       uintptr
  3322  	FpNextBlocked        uintptr
  3323  }
  3324  
  3325  type sqlite_int64 = int64
  3326  type sqlite_uint64 = uint64
  3327  type sqlite3_int64 = sqlite_int64
  3328  type sqlite3_uint64 = sqlite_uint64
  3329  
  3330  type sqlite3_callback = uintptr
  3331  
  3332  type sqlite3_file1 = struct{ FpMethods uintptr }
  3333  
  3334  type sqlite3_file = sqlite3_file1
  3335  type sqlite3_io_methods1 = struct {
  3336  	FiVersion               int32
  3337  	F__ccgo_pad1            [4]byte
  3338  	FxClose                 uintptr
  3339  	FxRead                  uintptr
  3340  	FxWrite                 uintptr
  3341  	FxTruncate              uintptr
  3342  	FxSync                  uintptr
  3343  	FxFileSize              uintptr
  3344  	FxLock                  uintptr
  3345  	FxUnlock                uintptr
  3346  	FxCheckReservedLock     uintptr
  3347  	FxFileControl           uintptr
  3348  	FxSectorSize            uintptr
  3349  	FxDeviceCharacteristics uintptr
  3350  	FxShmMap                uintptr
  3351  	FxShmLock               uintptr
  3352  	FxShmBarrier            uintptr
  3353  	FxShmUnmap              uintptr
  3354  	FxFetch                 uintptr
  3355  	FxUnfetch               uintptr
  3356  }
  3357  
  3358  type sqlite3_io_methods = sqlite3_io_methods1
  3359  
  3360  type sqlite3_mutex1 = struct {
  3361  	FpReal       uintptr
  3362  	FeType       int32
  3363  	F__ccgo_pad1 [4]byte
  3364  }
  3365  
  3366  type sqlite3_api_routines1 = struct {
  3367  	Faggregate_context      uintptr
  3368  	Faggregate_count        uintptr
  3369  	Fbind_blob              uintptr
  3370  	Fbind_double            uintptr
  3371  	Fbind_int               uintptr
  3372  	Fbind_int64             uintptr
  3373  	Fbind_null              uintptr
  3374  	Fbind_parameter_count   uintptr
  3375  	Fbind_parameter_index   uintptr
  3376  	Fbind_parameter_name    uintptr
  3377  	Fbind_text              uintptr
  3378  	Fbind_text16            uintptr
  3379  	Fbind_value             uintptr
  3380  	Fbusy_handler           uintptr
  3381  	Fbusy_timeout           uintptr
  3382  	Fchanges                uintptr
  3383  	Fclose                  uintptr
  3384  	Fcollation_needed       uintptr
  3385  	Fcollation_needed16     uintptr
  3386  	Fcolumn_blob            uintptr
  3387  	Fcolumn_bytes           uintptr
  3388  	Fcolumn_bytes16         uintptr
  3389  	Fcolumn_count           uintptr
  3390  	Fcolumn_database_name   uintptr
  3391  	Fcolumn_database_name16 uintptr
  3392  	Fcolumn_decltype        uintptr
  3393  	Fcolumn_decltype16      uintptr
  3394  	Fcolumn_double          uintptr
  3395  	Fcolumn_int             uintptr
  3396  	Fcolumn_int64           uintptr
  3397  	Fcolumn_name            uintptr
  3398  	Fcolumn_name16          uintptr
  3399  	Fcolumn_origin_name     uintptr
  3400  	Fcolumn_origin_name16   uintptr
  3401  	Fcolumn_table_name      uintptr
  3402  	Fcolumn_table_name16    uintptr
  3403  	Fcolumn_text            uintptr
  3404  	Fcolumn_text16          uintptr
  3405  	Fcolumn_type            uintptr
  3406  	Fcolumn_value           uintptr
  3407  	Fcommit_hook            uintptr
  3408  	Fcomplete               uintptr
  3409  	Fcomplete16             uintptr
  3410  	Fcreate_collation       uintptr
  3411  	Fcreate_collation16     uintptr
  3412  	Fcreate_function        uintptr
  3413  	Fcreate_function16      uintptr
  3414  	Fcreate_module          uintptr
  3415  	Fdata_count             uintptr
  3416  	Fdb_handle              uintptr
  3417  	Fdeclare_vtab           uintptr
  3418  	Fenable_shared_cache    uintptr
  3419  	Ferrcode                uintptr
  3420  	Ferrmsg                 uintptr
  3421  	Ferrmsg16               uintptr
  3422  	Fexec                   uintptr
  3423  	Fexpired                uintptr
  3424  	Ffinalize               uintptr
  3425  	Ffree                   uintptr
  3426  	Ffree_table             uintptr
  3427  	Fget_autocommit         uintptr
  3428  	Fget_auxdata            uintptr
  3429  	Fget_table              uintptr
  3430  	Fglobal_recover         uintptr
  3431  	Finterruptx             uintptr
  3432  	Flast_insert_rowid      uintptr
  3433  	Flibversion             uintptr
  3434  	Flibversion_number      uintptr
  3435  	Fmalloc                 uintptr
  3436  	Fmprintf                uintptr
  3437  	Fopen                   uintptr
  3438  	Fopen16                 uintptr
  3439  	Fprepare                uintptr
  3440  	Fprepare16              uintptr
  3441  	Fprofile                uintptr
  3442  	Fprogress_handler       uintptr
  3443  	Frealloc                uintptr
  3444  	Freset                  uintptr
  3445  	Fresult_blob            uintptr
  3446  	Fresult_double          uintptr
  3447  	Fresult_error           uintptr
  3448  	Fresult_error16         uintptr
  3449  	Fresult_int             uintptr
  3450  	Fresult_int64           uintptr
  3451  	Fresult_null            uintptr
  3452  	Fresult_text            uintptr
  3453  	Fresult_text16          uintptr
  3454  	Fresult_text16be        uintptr
  3455  	Fresult_text16le        uintptr
  3456  	Fresult_value           uintptr
  3457  	Frollback_hook          uintptr
  3458  	Fset_authorizer         uintptr
  3459  	Fset_auxdata            uintptr
  3460  	Fxsnprintf              uintptr
  3461  	Fstep                   uintptr
  3462  	Ftable_column_metadata  uintptr
  3463  	Fthread_cleanup         uintptr
  3464  	Ftotal_changes          uintptr
  3465  	Ftrace                  uintptr
  3466  	Ftransfer_bindings      uintptr
  3467  	Fupdate_hook            uintptr
  3468  	Fuser_data              uintptr
  3469  	Fvalue_blob             uintptr
  3470  	Fvalue_bytes            uintptr
  3471  	Fvalue_bytes16          uintptr
  3472  	Fvalue_double           uintptr
  3473  	Fvalue_int              uintptr
  3474  	Fvalue_int64            uintptr
  3475  	Fvalue_numeric_type     uintptr
  3476  	Fvalue_text             uintptr
  3477  	Fvalue_text16           uintptr
  3478  	Fvalue_text16be         uintptr
  3479  	Fvalue_text16le         uintptr
  3480  	Fvalue_type             uintptr
  3481  	Fvmprintf               uintptr
  3482  	Foverload_function      uintptr
  3483  	Fprepare_v2             uintptr
  3484  	Fprepare16_v2           uintptr
  3485  	Fclear_bindings         uintptr
  3486  	Fcreate_module_v2       uintptr
  3487  	Fbind_zeroblob          uintptr
  3488  	Fblob_bytes             uintptr
  3489  	Fblob_close             uintptr
  3490  	Fblob_open              uintptr
  3491  	Fblob_read              uintptr
  3492  	Fblob_write             uintptr
  3493  	Fcreate_collation_v2    uintptr
  3494  	Ffile_control           uintptr
  3495  	Fmemory_highwater       uintptr
  3496  	Fmemory_used            uintptr
  3497  	Fmutex_alloc            uintptr
  3498  	Fmutex_enter            uintptr
  3499  	Fmutex_free             uintptr
  3500  	Fmutex_leave            uintptr
  3501  	Fmutex_try              uintptr
  3502  	Fopen_v2                uintptr
  3503  	Frelease_memory         uintptr
  3504  	Fresult_error_nomem     uintptr
  3505  	Fresult_error_toobig    uintptr
  3506  	Fsleep                  uintptr
  3507  	Fsoft_heap_limit        uintptr
  3508  	Fvfs_find               uintptr
  3509  	Fvfs_register           uintptr
  3510  	Fvfs_unregister         uintptr
  3511  	Fxthreadsafe            uintptr
  3512  	Fresult_zeroblob        uintptr
  3513  	Fresult_error_code      uintptr
  3514  	Ftest_control           uintptr
  3515  	Frandomness             uintptr
  3516  	Fcontext_db_handle      uintptr
  3517  	Fextended_result_codes  uintptr
  3518  	Flimit                  uintptr
  3519  	Fnext_stmt              uintptr
  3520  	Fsql                    uintptr
  3521  	Fstatus                 uintptr
  3522  	Fbackup_finish          uintptr
  3523  	Fbackup_init            uintptr
  3524  	Fbackup_pagecount       uintptr
  3525  	Fbackup_remaining       uintptr
  3526  	Fbackup_step            uintptr
  3527  	Fcompileoption_get      uintptr
  3528  	Fcompileoption_used     uintptr
  3529  	Fcreate_function_v2     uintptr
  3530  	Fdb_config              uintptr
  3531  	Fdb_mutex               uintptr
  3532  	Fdb_status              uintptr
  3533  	Fextended_errcode       uintptr
  3534  	Flog                    uintptr
  3535  	Fsoft_heap_limit64      uintptr
  3536  	Fsourceid               uintptr
  3537  	Fstmt_status            uintptr
  3538  	Fstrnicmp               uintptr
  3539  	Funlock_notify          uintptr
  3540  	Fwal_autocheckpoint     uintptr
  3541  	Fwal_checkpoint         uintptr
  3542  	Fwal_hook               uintptr
  3543  	Fblob_reopen            uintptr
  3544  	Fvtab_config            uintptr
  3545  	Fvtab_on_conflict       uintptr
  3546  	Fclose_v2               uintptr
  3547  	Fdb_filename            uintptr
  3548  	Fdb_readonly            uintptr
  3549  	Fdb_release_memory      uintptr
  3550  	Ferrstr                 uintptr
  3551  	Fstmt_busy              uintptr
  3552  	Fstmt_readonly          uintptr
  3553  	Fstricmp                uintptr
  3554  	Furi_boolean            uintptr
  3555  	Furi_int64              uintptr
  3556  	Furi_parameter          uintptr
  3557  	Fxvsnprintf             uintptr
  3558  	Fwal_checkpoint_v2      uintptr
  3559  	Fauto_extension         uintptr
  3560  	Fbind_blob64            uintptr
  3561  	Fbind_text64            uintptr
  3562  	Fcancel_auto_extension  uintptr
  3563  	Fload_extension         uintptr
  3564  	Fmalloc64               uintptr
  3565  	Fmsize                  uintptr
  3566  	Frealloc64              uintptr
  3567  	Freset_auto_extension   uintptr
  3568  	Fresult_blob64          uintptr
  3569  	Fresult_text64          uintptr
  3570  	Fstrglob                uintptr
  3571  	Fvalue_dup              uintptr
  3572  	Fvalue_free             uintptr
  3573  	Fresult_zeroblob64      uintptr
  3574  	Fbind_zeroblob64        uintptr
  3575  	Fvalue_subtype          uintptr
  3576  	Fresult_subtype         uintptr
  3577  	Fstatus64               uintptr
  3578  	Fstrlike                uintptr
  3579  	Fdb_cacheflush          uintptr
  3580  	Fsystem_errno           uintptr
  3581  	Ftrace_v2               uintptr
  3582  	Fexpanded_sql           uintptr
  3583  	Fset_last_insert_rowid  uintptr
  3584  	Fprepare_v3             uintptr
  3585  	Fprepare16_v3           uintptr
  3586  	Fbind_pointer           uintptr
  3587  	Fresult_pointer         uintptr
  3588  	Fvalue_pointer          uintptr
  3589  	Fvtab_nochange          uintptr
  3590  	Fvalue_nochange         uintptr
  3591  	Fvtab_collation         uintptr
  3592  	Fkeyword_count          uintptr
  3593  	Fkeyword_name           uintptr
  3594  	Fkeyword_check          uintptr
  3595  	Fstr_new                uintptr
  3596  	Fstr_finish             uintptr
  3597  	Fstr_appendf            uintptr
  3598  	Fstr_vappendf           uintptr
  3599  	Fstr_append             uintptr
  3600  	Fstr_appendall          uintptr
  3601  	Fstr_appendchar         uintptr
  3602  	Fstr_reset              uintptr
  3603  	Fstr_errcode            uintptr
  3604  	Fstr_length             uintptr
  3605  	Fstr_value              uintptr
  3606  	Fcreate_window_function uintptr
  3607  	Fnormalized_sql         uintptr
  3608  	Fstmt_isexplain         uintptr
  3609  	Fvalue_frombind         uintptr
  3610  	Fdrop_modules           uintptr
  3611  	Fhard_heap_limit64      uintptr
  3612  	Furi_key                uintptr
  3613  	Ffilename_database      uintptr
  3614  	Ffilename_journal       uintptr
  3615  	Ffilename_wal           uintptr
  3616  	Fcreate_filename        uintptr
  3617  	Ffree_filename          uintptr
  3618  	Fdatabase_file_object   uintptr
  3619  	Ftxn_state              uintptr
  3620  	Fchanges64              uintptr
  3621  	Ftotal_changes64        uintptr
  3622  	Fautovacuum_pages       uintptr
  3623  	Ferror_offset           uintptr
  3624  	Fvtab_rhs_value         uintptr
  3625  	Fvtab_distinct          uintptr
  3626  	Fvtab_in                uintptr
  3627  	Fvtab_in_first          uintptr
  3628  	Fvtab_in_next           uintptr
  3629  	Fdeserialize            uintptr
  3630  	Fserialize              uintptr
  3631  	Fdb_name                uintptr
  3632  }
  3633  
  3634  type sqlite3_vfs1 = struct {
  3635  	FiVersion          int32
  3636  	FszOsFile          int32
  3637  	FmxPathname        int32
  3638  	F__ccgo_pad1       [4]byte
  3639  	FpNext             uintptr
  3640  	FzName             uintptr
  3641  	FpAppData          uintptr
  3642  	FxOpen             uintptr
  3643  	FxDelete           uintptr
  3644  	FxAccess           uintptr
  3645  	FxFullPathname     uintptr
  3646  	FxDlOpen           uintptr
  3647  	FxDlError          uintptr
  3648  	FxDlSym            uintptr
  3649  	FxDlClose          uintptr
  3650  	FxRandomness       uintptr
  3651  	FxSleep            uintptr
  3652  	FxCurrentTime      uintptr
  3653  	FxGetLastError     uintptr
  3654  	FxCurrentTimeInt64 uintptr
  3655  	FxSetSystemCall    uintptr
  3656  	FxGetSystemCall    uintptr
  3657  	FxNextSystemCall   uintptr
  3658  }
  3659  
  3660  type sqlite3_vfs = sqlite3_vfs1
  3661  type sqlite3_syscall_ptr = uintptr
  3662  
  3663  type sqlite3_mem_methods1 = struct {
  3664  	FxMalloc   uintptr
  3665  	FxFree     uintptr
  3666  	FxRealloc  uintptr
  3667  	FxSize     uintptr
  3668  	FxRoundup  uintptr
  3669  	FxInit     uintptr
  3670  	FxShutdown uintptr
  3671  	FpAppData  uintptr
  3672  }
  3673  
  3674  type sqlite3_mem_methods = sqlite3_mem_methods1
  3675  
  3676  type sqlite3_value1 = struct {
  3677  	Fu        struct{ Fr float64 }
  3678  	Fz        uintptr
  3679  	Fn        int32
  3680  	Fflags    u16
  3681  	Fenc      u8
  3682  	FeSubtype u8
  3683  	Fdb       uintptr
  3684  	FszMalloc int32
  3685  	FuTemp    u32
  3686  	FzMalloc  uintptr
  3687  	FxDel     uintptr
  3688  }
  3689  
  3690  type sqlite3_context1 = struct {
  3691  	FpOut        uintptr
  3692  	FpFunc       uintptr
  3693  	FpMem        uintptr
  3694  	FpVdbe       uintptr
  3695  	FiOp         int32
  3696  	FisError     int32
  3697  	Fenc         u8
  3698  	FskipFlag    u8
  3699  	Fargc        u8
  3700  	F__ccgo_pad1 [5]byte
  3701  	Fargv        [1]uintptr
  3702  }
  3703  
  3704  type sqlite3_destructor_type = uintptr
  3705  
  3706  type sqlite3_vtab1 = struct {
  3707  	FpModule     uintptr
  3708  	FnRef        int32
  3709  	F__ccgo_pad1 [4]byte
  3710  	FzErrMsg     uintptr
  3711  }
  3712  
  3713  type sqlite3_vtab = sqlite3_vtab1
  3714  type sqlite3_index_info1 = struct {
  3715  	FnConstraint      int32
  3716  	F__ccgo_pad1      [4]byte
  3717  	FaConstraint      uintptr
  3718  	FnOrderBy         int32
  3719  	F__ccgo_pad2      [4]byte
  3720  	FaOrderBy         uintptr
  3721  	FaConstraintUsage uintptr
  3722  	FidxNum           int32
  3723  	F__ccgo_pad3      [4]byte
  3724  	FidxStr           uintptr
  3725  	FneedToFreeIdxStr int32
  3726  	ForderByConsumed  int32
  3727  	FestimatedCost    float64
  3728  	FestimatedRows    sqlite3_int64
  3729  	FidxFlags         int32
  3730  	F__ccgo_pad4      [4]byte
  3731  	FcolUsed          sqlite3_uint64
  3732  }
  3733  
  3734  type sqlite3_index_info = sqlite3_index_info1
  3735  type sqlite3_vtab_cursor1 = struct{ FpVtab uintptr }
  3736  
  3737  type sqlite3_vtab_cursor = sqlite3_vtab_cursor1
  3738  type sqlite3_module1 = struct {
  3739  	FiVersion      int32
  3740  	F__ccgo_pad1   [4]byte
  3741  	FxCreate       uintptr
  3742  	FxConnect      uintptr
  3743  	FxBestIndex    uintptr
  3744  	FxDisconnect   uintptr
  3745  	FxDestroy      uintptr
  3746  	FxOpen         uintptr
  3747  	FxClose        uintptr
  3748  	FxFilter       uintptr
  3749  	FxNext         uintptr
  3750  	FxEof          uintptr
  3751  	FxColumn       uintptr
  3752  	FxRowid        uintptr
  3753  	FxUpdate       uintptr
  3754  	FxBegin        uintptr
  3755  	FxSync         uintptr
  3756  	FxCommit       uintptr
  3757  	FxRollback     uintptr
  3758  	FxFindFunction uintptr
  3759  	FxRename       uintptr
  3760  	FxSavepoint    uintptr
  3761  	FxRelease      uintptr
  3762  	FxRollbackTo   uintptr
  3763  	FxShadowName   uintptr
  3764  }
  3765  
  3766  type sqlite3_module = sqlite3_module1
  3767  
  3768  type sqlite3_index_constraint = struct {
  3769  	FiColumn     int32
  3770  	Fop          uint8
  3771  	Fusable      uint8
  3772  	F__ccgo_pad1 [2]byte
  3773  	FiTermOffset int32
  3774  }
  3775  
  3776  type sqlite3_index_orderby = struct {
  3777  	FiColumn     int32
  3778  	Fdesc        uint8
  3779  	F__ccgo_pad1 [3]byte
  3780  }
  3781  
  3782  type sqlite3_index_constraint_usage = struct {
  3783  	FargvIndex   int32
  3784  	Fomit        uint8
  3785  	F__ccgo_pad1 [3]byte
  3786  }
  3787  
  3788  type sqlite3_mutex_methods1 = struct {
  3789  	FxMutexInit    uintptr
  3790  	FxMutexEnd     uintptr
  3791  	FxMutexAlloc   uintptr
  3792  	FxMutexFree    uintptr
  3793  	FxMutexEnter   uintptr
  3794  	FxMutexTry     uintptr
  3795  	FxMutexLeave   uintptr
  3796  	FxMutexHeld    uintptr
  3797  	FxMutexNotheld uintptr
  3798  }
  3799  
  3800  type sqlite3_mutex_methods = sqlite3_mutex_methods1
  3801  
  3802  type sqlite3_str1 = struct {
  3803  	Fdb          uintptr
  3804  	FzText       uintptr
  3805  	FnAlloc      u32
  3806  	FmxAlloc     u32
  3807  	FnChar       u32
  3808  	FaccError    u8
  3809  	FprintfFlags u8
  3810  	F__ccgo_pad1 [2]byte
  3811  }
  3812  
  3813  type sqlite3_pcache_page1 = struct {
  3814  	FpBuf   uintptr
  3815  	FpExtra uintptr
  3816  }
  3817  
  3818  type sqlite3_pcache_page = sqlite3_pcache_page1
  3819  
  3820  type sqlite3_pcache_methods21 = struct {
  3821  	FiVersion    int32
  3822  	F__ccgo_pad1 [4]byte
  3823  	FpArg        uintptr
  3824  	FxInit       uintptr
  3825  	FxShutdown   uintptr
  3826  	FxCreate     uintptr
  3827  	FxCachesize  uintptr
  3828  	FxPagecount  uintptr
  3829  	FxFetch      uintptr
  3830  	FxUnpin      uintptr
  3831  	FxRekey      uintptr
  3832  	FxTruncate   uintptr
  3833  	FxDestroy    uintptr
  3834  	FxShrink     uintptr
  3835  }
  3836  
  3837  type sqlite3_pcache_methods2 = sqlite3_pcache_methods21
  3838  
  3839  type sqlite3_pcache_methods1 = struct {
  3840  	FpArg       uintptr
  3841  	FxInit      uintptr
  3842  	FxShutdown  uintptr
  3843  	FxCreate    uintptr
  3844  	FxCachesize uintptr
  3845  	FxPagecount uintptr
  3846  	FxFetch     uintptr
  3847  	FxUnpin     uintptr
  3848  	FxRekey     uintptr
  3849  	FxTruncate  uintptr
  3850  	FxDestroy   uintptr
  3851  }
  3852  
  3853  type sqlite3_pcache_methods = sqlite3_pcache_methods1
  3854  
  3855  type sqlite3_snapshot1 = struct{ Fhidden [48]uint8 }
  3856  
  3857  type sqlite3_snapshot = sqlite3_snapshot1
  3858  
  3859  type sqlite3_rtree_geometry1 = struct {
  3860  	FpContext    uintptr
  3861  	FnParam      int32
  3862  	F__ccgo_pad1 [4]byte
  3863  	FaParam      uintptr
  3864  	FpUser       uintptr
  3865  	FxDelUser    uintptr
  3866  }
  3867  
  3868  type sqlite3_rtree_geometry = sqlite3_rtree_geometry1
  3869  type sqlite3_rtree_query_info1 = struct {
  3870  	FpContext      uintptr
  3871  	FnParam        int32
  3872  	F__ccgo_pad1   [4]byte
  3873  	FaParam        uintptr
  3874  	FpUser         uintptr
  3875  	FxDelUser      uintptr
  3876  	FaCoord        uintptr
  3877  	FanQueue       uintptr
  3878  	FnCoord        int32
  3879  	FiLevel        int32
  3880  	FmxLevel       int32
  3881  	F__ccgo_pad2   [4]byte
  3882  	FiRowid        sqlite3_int64
  3883  	FrParentScore  sqlite3_rtree_dbl
  3884  	FeParentWithin int32
  3885  	FeWithin       int32
  3886  	FrScore        sqlite3_rtree_dbl
  3887  	FapSqlParam    uintptr
  3888  }
  3889  
  3890  type sqlite3_rtree_query_info = sqlite3_rtree_query_info1
  3891  
  3892  type sqlite3_rtree_dbl = float64
  3893  
  3894  type Fts5ExtensionApi1 = struct {
  3895  	FiVersion           int32
  3896  	F__ccgo_pad1        [4]byte
  3897  	FxUserData          uintptr
  3898  	FxColumnCount       uintptr
  3899  	FxRowCount          uintptr
  3900  	FxColumnTotalSize   uintptr
  3901  	FxTokenize          uintptr
  3902  	FxPhraseCount       uintptr
  3903  	FxPhraseSize        uintptr
  3904  	FxInstCount         uintptr
  3905  	FxInst              uintptr
  3906  	FxRowid             uintptr
  3907  	FxColumnText        uintptr
  3908  	FxColumnSize        uintptr
  3909  	FxQueryPhrase       uintptr
  3910  	FxSetAuxdata        uintptr
  3911  	FxGetAuxdata        uintptr
  3912  	FxPhraseFirst       uintptr
  3913  	FxPhraseNext        uintptr
  3914  	FxPhraseFirstColumn uintptr
  3915  	FxPhraseNextColumn  uintptr
  3916  }
  3917  
  3918  type Fts5ExtensionApi = Fts5ExtensionApi1
  3919  type Fts5PhraseIter1 = struct {
  3920  	Fa uintptr
  3921  	Fb uintptr
  3922  }
  3923  
  3924  type Fts5PhraseIter = Fts5PhraseIter1
  3925  
  3926  type fts5_extension_function = uintptr
  3927  type fts5_tokenizer1 = struct {
  3928  	FxCreate   uintptr
  3929  	FxDelete   uintptr
  3930  	FxTokenize uintptr
  3931  }
  3932  
  3933  type fts5_tokenizer = fts5_tokenizer1
  3934  
  3935  type fts5_api1 = struct {
  3936  	FiVersion         int32
  3937  	F__ccgo_pad1      [4]byte
  3938  	FxCreateTokenizer uintptr
  3939  	FxFindTokenizer   uintptr
  3940  	FxCreateFunction  uintptr
  3941  }
  3942  
  3943  type fts5_api = fts5_api1
  3944  
  3945  type sqlite3expert1 = struct {
  3946  	FiSample     int32
  3947  	F__ccgo_pad1 [4]byte
  3948  	Fdb          uintptr
  3949  	Fdbm         uintptr
  3950  	Fdbv         uintptr
  3951  	FpTable      uintptr
  3952  	FpScan       uintptr
  3953  	FpWrite      uintptr
  3954  	FpStatement  uintptr
  3955  	FbRun        int32
  3956  	F__ccgo_pad2 [4]byte
  3957  	FpzErrmsg    uintptr
  3958  	Frc          int32
  3959  	F__ccgo_pad3 [4]byte
  3960  	FhIdx        IdxHash
  3961  	FzCandidates uintptr
  3962  }
  3963  
  3964  type sqlite3expert = sqlite3expert1
  3965  
  3966  type locale_t = uintptr
  3967  
  3968  type u_char = uint8
  3969  type u_short = uint16
  3970  type u_int = uint32
  3971  type u_long = uint64
  3972  
  3973  type unchar = uint8
  3974  type ushort = uint16
  3975  type uint = uint32
  3976  type ulong = uint64
  3977  
  3978  type cpuid_t = uint64
  3979  type register_t = int64
  3980  
  3981  type int8_t = int8
  3982  
  3983  type uint8_t = uint8
  3984  
  3985  type int16_t = int16
  3986  
  3987  type uint16_t = uint16
  3988  
  3989  type int32_t = int32
  3990  
  3991  type uint32_t = uint32
  3992  
  3993  type int64_t = int64
  3994  
  3995  type uint64_t = uint64
  3996  
  3997  type u_int8_t = uint8
  3998  type u_int16_t = uint16
  3999  type u_int32_t = uint32
  4000  type u_int64_t = uint64
  4001  
  4002  type quad_t = int64
  4003  type u_quad_t = uint64
  4004  
  4005  type vaddr_t = uint64
  4006  type paddr_t = uint64
  4007  type vsize_t = uint64
  4008  type psize_t = uint64
  4009  
  4010  type blkcnt_t = int64
  4011  type blksize_t = int32
  4012  type caddr_t = uintptr
  4013  type daddr32_t = int32
  4014  type daddr_t = int64
  4015  type dev_t = int32
  4016  type fixpt_t = uint32
  4017  type gid_t = uint32
  4018  type id_t = uint32
  4019  type ino_t = uint64
  4020  type key_t = int64
  4021  type mode_t = uint32
  4022  type nlink_t = uint32
  4023  type rlim_t = uint64
  4024  type segsz_t = int32
  4025  type uid_t = uint32
  4026  type useconds_t = uint32
  4027  type suseconds_t = int64
  4028  type fsblkcnt_t = uint64
  4029  type fsfilcnt_t = uint64
  4030  
  4031  type clock_t = int64
  4032  
  4033  type clockid_t = int32
  4034  
  4035  type pid_t = int32
  4036  
  4037  type ssize_t = int64
  4038  
  4039  type time_t = int64
  4040  
  4041  type timer_t = int32
  4042  
  4043  type off_t = int64
  4044  
  4045  type fpos_t = off_t
  4046  
  4047  type __sbuf = struct {
  4048  	F_base       uintptr
  4049  	F_size       int32
  4050  	F__ccgo_pad1 [4]byte
  4051  }
  4052  
  4053  type __sFILE = struct {
  4054  	F_p          uintptr
  4055  	F_r          int32
  4056  	F_w          int32
  4057  	F_flags      int16
  4058  	F_file       int16
  4059  	F__ccgo_pad1 [4]byte
  4060  	F_bf         struct {
  4061  		F_base       uintptr
  4062  		F_size       int32
  4063  		F__ccgo_pad1 [4]byte
  4064  	}
  4065  	F_lbfsize    int32
  4066  	F__ccgo_pad2 [4]byte
  4067  	F_cookie     uintptr
  4068  	F_close      uintptr
  4069  	F_read       uintptr
  4070  	F_seek       uintptr
  4071  	F_write      uintptr
  4072  	F_ext        struct {
  4073  		F_base       uintptr
  4074  		F_size       int32
  4075  		F__ccgo_pad1 [4]byte
  4076  	}
  4077  	F_up   uintptr
  4078  	F_ur   int32
  4079  	F_ubuf [3]uint8
  4080  	F_nbuf [1]uint8
  4081  	F_lb   struct {
  4082  		F_base       uintptr
  4083  		F_size       int32
  4084  		F__ccgo_pad1 [4]byte
  4085  	}
  4086  	F_blksize    int32
  4087  	F__ccgo_pad3 [4]byte
  4088  	F_offset     fpos_t
  4089  }
  4090  
  4091  type FILE = __sFILE
  4092  
  4093  type i64 = sqlite3_int64
  4094  type u64 = sqlite3_uint64
  4095  
  4096  type IdxColumn1 = struct {
  4097  	FzName       uintptr
  4098  	FzColl       uintptr
  4099  	FiPk         int32
  4100  	F__ccgo_pad1 [4]byte
  4101  }
  4102  
  4103  type IdxColumn = IdxColumn1
  4104  type IdxConstraint1 = struct {
  4105  	FzColl  uintptr
  4106  	FbRange int32
  4107  	FiCol   int32
  4108  	FbFlag  int32
  4109  	FbDesc  int32
  4110  	FpNext  uintptr
  4111  	FpLink  uintptr
  4112  }
  4113  
  4114  type IdxConstraint = IdxConstraint1
  4115  type IdxScan1 = struct {
  4116  	FpTab        uintptr
  4117  	FiDb         int32
  4118  	F__ccgo_pad1 [4]byte
  4119  	Fcovering    i64
  4120  	FpOrder      uintptr
  4121  	FpEq         uintptr
  4122  	FpRange      uintptr
  4123  	FpNextScan   uintptr
  4124  }
  4125  
  4126  type IdxScan = IdxScan1
  4127  type IdxStatement1 = struct {
  4128  	FiId         int32
  4129  	F__ccgo_pad1 [4]byte
  4130  	FzSql        uintptr
  4131  	FzIdx        uintptr
  4132  	FzEQP        uintptr
  4133  	FpNext       uintptr
  4134  }
  4135  
  4136  type IdxStatement = IdxStatement1
  4137  type IdxTable1 = struct {
  4138  	FnCol        int32
  4139  	F__ccgo_pad1 [4]byte
  4140  	FzName       uintptr
  4141  	FaCol        uintptr
  4142  	FpNext       uintptr
  4143  }
  4144  
  4145  type IdxTable = IdxTable1
  4146  type IdxWrite1 = struct {
  4147  	FpTab        uintptr
  4148  	FeOp         int32
  4149  	F__ccgo_pad1 [4]byte
  4150  	FpNext       uintptr
  4151  }
  4152  
  4153  type IdxWrite = IdxWrite1
  4154  
  4155  type IdxHashEntry1 = struct {
  4156  	FzKey      uintptr
  4157  	FzVal      uintptr
  4158  	FzVal2     uintptr
  4159  	FpHashNext uintptr
  4160  	FpNext     uintptr
  4161  }
  4162  
  4163  type IdxHashEntry = IdxHashEntry1
  4164  type IdxHash1 = struct {
  4165  	FpFirst uintptr
  4166  	FaHash  [1023]uintptr
  4167  }
  4168  
  4169  type IdxHash = IdxHash1
  4170  
  4171  func idxMalloc(tls *libc.TLS, pRc uintptr, nByte int32) uintptr {
  4172  	var pRet uintptr
  4173  
  4174  	pRet = sqlite3.Xsqlite3_malloc(tls, nByte)
  4175  	if pRet != 0 {
  4176  		libc.Xmemset(tls, pRet, 0, uint64(nByte))
  4177  	} else {
  4178  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4179  	}
  4180  	return pRet
  4181  }
  4182  
  4183  func idxHashInit(tls *libc.TLS, pHash uintptr) {
  4184  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4185  }
  4186  
  4187  func idxHashClear(tls *libc.TLS, pHash uintptr) {
  4188  	var i int32
  4189  	for i = 0; i < IDX_HASH_SIZE; i++ {
  4190  		var pEntry uintptr
  4191  		var pNext uintptr
  4192  		for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(i)*8)); pEntry != 0; pEntry = pNext {
  4193  			pNext = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext
  4194  			sqlite3.Xsqlite3_free(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2)
  4195  			sqlite3.Xsqlite3_free(tls, pEntry)
  4196  		}
  4197  	}
  4198  	libc.Xmemset(tls, pHash, 0, uint64(unsafe.Sizeof(IdxHash{})))
  4199  }
  4200  
  4201  func idxHashString(tls *libc.TLS, z uintptr, n int32) int32 {
  4202  	var ret uint32 = uint32(0)
  4203  	var i int32
  4204  	for i = 0; i < n; i++ {
  4205  		ret = ret + (ret<<3 + uint32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(i))))))
  4206  	}
  4207  	return int32(ret % uint32(IDX_HASH_SIZE))
  4208  }
  4209  
  4210  func idxHashAdd(tls *libc.TLS, pRc uintptr, pHash uintptr, zKey uintptr, zVal uintptr) int32 {
  4211  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
  4212  	var iHash int32 = idxHashString(tls, zKey, nKey)
  4213  	var nVal int32 = func() int32 {
  4214  		if zVal != 0 {
  4215  			return int32(libc.Xstrlen(tls, zVal))
  4216  		}
  4217  		return 0
  4218  	}()
  4219  	var pEntry uintptr
  4220  
  4221  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4222  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4223  			return 1
  4224  		}
  4225  	}
  4226  	pEntry = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxHashEntry{}))+uint64(nKey)+uint64(1)+uint64(nVal)+uint64(1)))
  4227  	if pEntry != 0 {
  4228  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey = pEntry + 1*40
  4229  		libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey))
  4230  		if zVal != 0 {
  4231  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey + uintptr(nKey+1)
  4232  			libc.Xmemcpy(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal, zVal, uint64(nVal))
  4233  		}
  4234  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8))
  4235  		*(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)) = pEntry
  4236  
  4237  		(*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext = (*IdxHash)(unsafe.Pointer(pHash)).FpFirst
  4238  		(*IdxHash)(unsafe.Pointer(pHash)).FpFirst = pEntry
  4239  	}
  4240  	return 0
  4241  }
  4242  
  4243  func idxHashFind(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4244  	var iHash int32
  4245  	var pEntry uintptr
  4246  	if nKey < 0 {
  4247  		nKey = int32(libc.Xstrlen(tls, zKey))
  4248  	}
  4249  	iHash = idxHashString(tls, zKey, nKey)
  4250  
  4251  	for pEntry = *(*uintptr)(unsafe.Pointer(pHash + 8 + uintptr(iHash)*8)); pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpHashNext {
  4252  		if int32(libc.Xstrlen(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey)) == nKey && 0 == libc.Xmemcmp(tls, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey, zKey, uint64(nKey)) {
  4253  			return pEntry
  4254  		}
  4255  	}
  4256  	return uintptr(0)
  4257  }
  4258  
  4259  func idxHashSearch(tls *libc.TLS, pHash uintptr, zKey uintptr, nKey int32) uintptr {
  4260  	var pEntry uintptr = idxHashFind(tls, pHash, zKey, nKey)
  4261  	if pEntry != 0 {
  4262  		return (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal
  4263  	}
  4264  	return uintptr(0)
  4265  }
  4266  
  4267  func idxNewConstraint(tls *libc.TLS, pRc uintptr, zColl uintptr) uintptr {
  4268  	var pNew uintptr
  4269  	var nColl int32 = int32(libc.Xstrlen(tls, zColl))
  4270  
  4271  	pNew = idxMalloc(tls, pRc, int32(uint64(unsafe.Sizeof(IdxConstraint{}))*uint64(nColl)+uint64(1)))
  4272  	if pNew != 0 {
  4273  		(*IdxConstraint)(unsafe.Pointer(pNew)).FzColl = pNew + 1*40
  4274  		libc.Xmemcpy(tls, (*IdxConstraint)(unsafe.Pointer(pNew)).FzColl, zColl, uint64(nColl+1))
  4275  	}
  4276  	return pNew
  4277  }
  4278  
  4279  func idxDatabaseError(tls *libc.TLS, db uintptr, pzErrmsg uintptr) {
  4280  	bp := tls.Alloc(8)
  4281  	defer tls.Free(8)
  4282  
  4283  	*(*uintptr)(unsafe.Pointer(pzErrmsg)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
  4284  }
  4285  
  4286  func idxPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zSql uintptr) int32 {
  4287  	var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, ppStmt, uintptr(0))
  4288  	if rc != SQLITE_OK {
  4289  		*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
  4290  		idxDatabaseError(tls, db, pzErrmsg)
  4291  	}
  4292  	return rc
  4293  }
  4294  
  4295  func idxPrintfPrepareStmt(tls *libc.TLS, db uintptr, ppStmt uintptr, pzErrmsg uintptr, zFmt uintptr, va uintptr) int32 {
  4296  	var ap va_list
  4297  	_ = ap
  4298  	var rc int32
  4299  	var zSql uintptr
  4300  	ap = va
  4301  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4302  	if zSql == uintptr(0) {
  4303  		rc = SQLITE_NOMEM
  4304  	} else {
  4305  		rc = idxPrepareStmt(tls, db, ppStmt, pzErrmsg, zSql)
  4306  		sqlite3.Xsqlite3_free(tls, zSql)
  4307  	}
  4308  	_ = ap
  4309  	return rc
  4310  }
  4311  
  4312  type ExpertVtab1 = struct {
  4313  	Fbase    sqlite3_vtab
  4314  	FpTab    uintptr
  4315  	FpExpert uintptr
  4316  }
  4317  
  4318  type ExpertVtab = ExpertVtab1
  4319  
  4320  type ExpertCsr1 = struct {
  4321  	Fbase  sqlite3_vtab_cursor
  4322  	FpData uintptr
  4323  }
  4324  
  4325  type ExpertCsr = ExpertCsr1
  4326  
  4327  func expertDequote(tls *libc.TLS, zIn uintptr) uintptr {
  4328  	var n int32 = int32(libc.Xstrlen(tls, zIn))
  4329  	var zRet uintptr = sqlite3.Xsqlite3_malloc(tls, n)
  4330  
  4331  	if zRet != 0 {
  4332  		var iOut int32 = 0
  4333  		var iIn int32 = 0
  4334  		for iIn = 1; iIn < n-1; iIn++ {
  4335  			if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == '\'' {
  4336  				iIn++
  4337  			}
  4338  			*(*int8)(unsafe.Pointer(zRet + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
  4339  		}
  4340  		*(*int8)(unsafe.Pointer(zRet + uintptr(iOut))) = int8(0)
  4341  	}
  4342  
  4343  	return zRet
  4344  }
  4345  
  4346  func expertConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  4347  	bp := tls.Alloc(4)
  4348  	defer tls.Free(4)
  4349  
  4350  	var pExpert uintptr = pAux
  4351  	var p uintptr = uintptr(0)
  4352  
  4353  	if argc != 4 {
  4354  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3, 0)
  4355  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
  4356  	} else {
  4357  		var zCreateTable uintptr = expertDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
  4358  		if zCreateTable != 0 {
  4359  			*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
  4360  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4361  				p = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertVtab{})))
  4362  			}
  4363  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  4364  				(*ExpertVtab)(unsafe.Pointer(p)).FpExpert = pExpert
  4365  				(*ExpertVtab)(unsafe.Pointer(p)).FpTab = (*sqlite3expert)(unsafe.Pointer(pExpert)).FpTable
  4366  
  4367  			}
  4368  			sqlite3.Xsqlite3_free(tls, zCreateTable)
  4369  		} else {
  4370  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
  4371  		}
  4372  	}
  4373  
  4374  	*(*uintptr)(unsafe.Pointer(ppVtab)) = p
  4375  	return *(*int32)(unsafe.Pointer(bp))
  4376  }
  4377  
  4378  func expertDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
  4379  	var p uintptr = pVtab
  4380  	sqlite3.Xsqlite3_free(tls, p)
  4381  	return SQLITE_OK
  4382  }
  4383  
  4384  func expertBestIndex(tls *libc.TLS, pVtab uintptr, pIdxInfo uintptr) int32 {
  4385  	bp := tls.Alloc(4)
  4386  	defer tls.Free(4)
  4387  
  4388  	var p uintptr = pVtab
  4389  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4390  	var n int32 = 0
  4391  	var pScan uintptr
  4392  	var opmask int32 = SQLITE_INDEX_CONSTRAINT_EQ | SQLITE_INDEX_CONSTRAINT_GT | SQLITE_INDEX_CONSTRAINT_LT | SQLITE_INDEX_CONSTRAINT_GE | SQLITE_INDEX_CONSTRAINT_LE
  4393  
  4394  	pScan = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxScan{})))
  4395  	if pScan != 0 {
  4396  		var i int32
  4397  
  4398  		(*IdxScan)(unsafe.Pointer(pScan)).FpTab = (*ExpertVtab)(unsafe.Pointer(p)).FpTab
  4399  		(*IdxScan)(unsafe.Pointer(pScan)).FpNextScan = (*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan
  4400  		(*sqlite3expert)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpExpert)).FpScan = pScan
  4401  
  4402  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
  4403  			var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
  4404  			if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
  4405  				(*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn >= 0 &&
  4406  				(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn)*24)).FiPk == 0 &&
  4407  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop)&opmask != 0 {
  4408  				var pNew uintptr
  4409  				var zColl uintptr = sqlite3.Xsqlite3_vtab_collation(tls, pIdxInfo, i)
  4410  				pNew = idxNewConstraint(tls, bp, zColl)
  4411  				if pNew != 0 {
  4412  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn
  4413  					if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  4414  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpEq
  4415  						(*IdxScan)(unsafe.Pointer(pScan)).FpEq = pNew
  4416  					} else {
  4417  						(*IdxConstraint)(unsafe.Pointer(pNew)).FbRange = 1
  4418  						(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpRange
  4419  						(*IdxScan)(unsafe.Pointer(pScan)).FpRange = pNew
  4420  					}
  4421  				}
  4422  				n++
  4423  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = n
  4424  			}
  4425  		}
  4426  
  4427  		for i = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy - 1; i >= 0; i-- {
  4428  			var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
  4429  			if iCol >= 0 {
  4430  				var pNew uintptr = idxNewConstraint(tls, bp, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(p)).FpTab)).FaCol+uintptr(iCol)*24)).FzColl)
  4431  				if pNew != 0 {
  4432  					(*IdxConstraint)(unsafe.Pointer(pNew)).FiCol = iCol
  4433  					(*IdxConstraint)(unsafe.Pointer(pNew)).FbDesc = int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).Fdesc)
  4434  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpNext = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4435  					(*IdxConstraint)(unsafe.Pointer(pNew)).FpLink = (*IdxScan)(unsafe.Pointer(pScan)).FpOrder
  4436  					(*IdxScan)(unsafe.Pointer(pScan)).FpOrder = pNew
  4437  					n++
  4438  				}
  4439  			}
  4440  		}
  4441  	}
  4442  
  4443  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000.0 / float64(n+1)
  4444  	return *(*int32)(unsafe.Pointer(bp))
  4445  }
  4446  
  4447  func expertUpdate(tls *libc.TLS, pVtab uintptr, nData int32, azData uintptr, pRowid uintptr) int32 {
  4448  	_ = pVtab
  4449  	_ = nData
  4450  	_ = azData
  4451  	_ = pRowid
  4452  	return SQLITE_OK
  4453  }
  4454  
  4455  func expertOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
  4456  	bp := tls.Alloc(4)
  4457  	defer tls.Free(4)
  4458  
  4459  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  4460  	var pCsr uintptr
  4461  	_ = pVTab
  4462  	pCsr = idxMalloc(tls, bp, int32(unsafe.Sizeof(ExpertCsr{})))
  4463  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
  4464  	return *(*int32)(unsafe.Pointer(bp))
  4465  }
  4466  
  4467  func expertClose(tls *libc.TLS, cur uintptr) int32 {
  4468  	var pCsr uintptr = cur
  4469  	sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4470  	sqlite3.Xsqlite3_free(tls, pCsr)
  4471  	return SQLITE_OK
  4472  }
  4473  
  4474  func expertEof(tls *libc.TLS, cur uintptr) int32 {
  4475  	var pCsr uintptr = cur
  4476  	return libc.Bool32((*ExpertCsr)(unsafe.Pointer(pCsr)).FpData == uintptr(0))
  4477  }
  4478  
  4479  func expertNext(tls *libc.TLS, cur uintptr) int32 {
  4480  	var pCsr uintptr = cur
  4481  	var rc int32 = SQLITE_OK
  4482  
  4483  	rc = sqlite3.Xsqlite3_step(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4484  	if rc != SQLITE_ROW {
  4485  		rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4486  		(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4487  	} else {
  4488  		rc = SQLITE_OK
  4489  	}
  4490  
  4491  	return rc
  4492  }
  4493  
  4494  func expertRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
  4495  	_ = cur
  4496  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
  4497  	return SQLITE_OK
  4498  }
  4499  
  4500  func expertColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
  4501  	var pCsr uintptr = cur
  4502  	var pVal uintptr
  4503  	pVal = sqlite3.Xsqlite3_column_value(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData, i)
  4504  	if pVal != 0 {
  4505  		sqlite3.Xsqlite3_result_value(tls, ctx, pVal)
  4506  	}
  4507  	return SQLITE_OK
  4508  }
  4509  
  4510  func expertFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
  4511  	bp := tls.Alloc(8)
  4512  	defer tls.Free(8)
  4513  
  4514  	var pCsr uintptr = cur
  4515  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
  4516  	var pExpert uintptr = (*ExpertVtab)(unsafe.Pointer(pVtab)).FpExpert
  4517  	var rc int32
  4518  
  4519  	_ = idxNum
  4520  	_ = idxStr
  4521  	_ = argc
  4522  	_ = argv
  4523  	rc = sqlite3.Xsqlite3_finalize(tls, (*ExpertCsr)(unsafe.Pointer(pCsr)).FpData)
  4524  	(*ExpertCsr)(unsafe.Pointer(pCsr)).FpData = uintptr(0)
  4525  	if rc == SQLITE_OK {
  4526  		rc = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pExpert)).Fdb, pCsr+8, pVtab+16,
  4527  			ts+19, libc.VaList(bp, (*IdxTable)(unsafe.Pointer((*ExpertVtab)(unsafe.Pointer(pVtab)).FpTab)).FzName))
  4528  	}
  4529  
  4530  	if rc == SQLITE_OK {
  4531  		rc = expertNext(tls, cur)
  4532  	}
  4533  	return rc
  4534  }
  4535  
  4536  func idxRegisterVtab(tls *libc.TLS, p uintptr) int32 {
  4537  	return sqlite3.Xsqlite3_create_module(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+56, uintptr(unsafe.Pointer(&expertModule)), p)
  4538  }
  4539  
  4540  var expertModule = sqlite3_module{
  4541  	FiVersion:    2,
  4542  	FxCreate:     0,
  4543  	FxConnect:    0,
  4544  	FxBestIndex:  0,
  4545  	FxDisconnect: 0,
  4546  	FxDestroy:    0,
  4547  	FxOpen:       0,
  4548  	FxClose:      0,
  4549  	FxFilter:     0,
  4550  	FxNext:       0,
  4551  	FxEof:        0,
  4552  	FxColumn:     0,
  4553  	FxRowid:      0,
  4554  	FxUpdate:     0,
  4555  }
  4556  
  4557  func idxFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr) {
  4558  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
  4559  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4560  		*(*int32)(unsafe.Pointer(pRc)) = rc
  4561  	}
  4562  }
  4563  
  4564  func idxGetTableInfo(tls *libc.TLS, db uintptr, zTab uintptr, ppOut uintptr, pzErrmsg uintptr) int32 {
  4565  	bp := tls.Alloc(40)
  4566  	defer tls.Free(40)
  4567  
  4568  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  4569  	var nCol int32 = 0
  4570  	var nTab int32
  4571  	var nByte int32
  4572  	var pNew uintptr = uintptr(0)
  4573  
  4574  	var rc2 int32
  4575  	var pCsr uintptr = uintptr(0)
  4576  	var nPk int32 = 0
  4577  
  4578  	*(*uintptr)(unsafe.Pointer(ppOut)) = uintptr(0)
  4579  	if zTab == uintptr(0) {
  4580  		return SQLITE_ERROR
  4581  	}
  4582  	nTab = int32(libc.Xstrlen(tls, zTab))
  4583  	nByte = int32(uint64(unsafe.Sizeof(IdxTable{})) + uint64(nTab) + uint64(1))
  4584  	*(*int32)(unsafe.Pointer(bp + 24)) = idxPrintfPrepareStmt(tls, db, bp+8, pzErrmsg, ts+63, libc.VaList(bp, zTab))
  4585  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4586  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4587  		*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4588  		if zCol == uintptr(0) {
  4589  			*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ERROR
  4590  			break
  4591  		}
  4592  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, zCol)))
  4593  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4594  			db, ts+85, zTab, zCol, uintptr(0), bp+16, uintptr(0), uintptr(0), uintptr(0))
  4595  		if *(*uintptr)(unsafe.Pointer(bp + 16)) == uintptr(0) {
  4596  			*(*uintptr)(unsafe.Pointer(bp + 16)) = ts + 90
  4597  		}
  4598  		nByte = nByte + (1 + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))))
  4599  		nCol++
  4600  		nPk = nPk + libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) > 0)
  4601  	}
  4602  	rc2 = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4603  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4604  		*(*int32)(unsafe.Pointer(bp + 24)) = rc2
  4605  	}
  4606  
  4607  	nByte = int32(uint64(nByte) + uint64(unsafe.Sizeof(IdxColumn{}))*uint64(nCol))
  4608  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4609  		pNew = idxMalloc(tls, bp+24, nByte)
  4610  	}
  4611  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4612  		(*IdxTable)(unsafe.Pointer(pNew)).FaCol = pNew + 1*32
  4613  		(*IdxTable)(unsafe.Pointer(pNew)).FnCol = nCol
  4614  		pCsr = (*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24
  4615  	}
  4616  
  4617  	nCol = 0
  4618  	for *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) {
  4619  		var zCol uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
  4620  		*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  4621  		var nCopy int32
  4622  		if zCol == uintptr(0) {
  4623  			continue
  4624  		}
  4625  		nCopy = int32(libc.Xstrlen(tls, zCol)) + 1
  4626  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzName = pCsr
  4627  		(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FiPk = libc.Bool32(sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 5) == 1 && nPk == 1)
  4628  		libc.Xmemcpy(tls, pCsr, zCol, uint64(nCopy))
  4629  		pCsr += uintptr(nCopy)
  4630  
  4631  		*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3_table_column_metadata(tls,
  4632  			db, ts+85, zTab, zCol, uintptr(0), bp+32, uintptr(0), uintptr(0), uintptr(0))
  4633  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  4634  			if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
  4635  				*(*uintptr)(unsafe.Pointer(bp + 32)) = ts + 90
  4636  			}
  4637  			nCopy = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))) + 1
  4638  			(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pNew)).FaCol + uintptr(nCol)*24)).FzColl = pCsr
  4639  			libc.Xmemcpy(tls, pCsr, *(*uintptr)(unsafe.Pointer(bp + 32)), uint64(nCopy))
  4640  			pCsr += uintptr(nCopy)
  4641  		}
  4642  
  4643  		nCol++
  4644  	}
  4645  	idxFinalize(tls, bp+24, *(*uintptr)(unsafe.Pointer(bp + 8)))
  4646  
  4647  	if *(*int32)(unsafe.Pointer(bp + 24)) != SQLITE_OK {
  4648  		sqlite3.Xsqlite3_free(tls, pNew)
  4649  		pNew = uintptr(0)
  4650  	} else if pNew != uintptr(0) {
  4651  		(*IdxTable)(unsafe.Pointer(pNew)).FzName = pCsr
  4652  		if (*IdxTable)(unsafe.Pointer(pNew)).FzName != uintptr(0) {
  4653  			libc.Xmemcpy(tls, (*IdxTable)(unsafe.Pointer(pNew)).FzName, zTab, uint64(nTab+1))
  4654  		}
  4655  	}
  4656  
  4657  	*(*uintptr)(unsafe.Pointer(ppOut)) = pNew
  4658  	return *(*int32)(unsafe.Pointer(bp + 24))
  4659  }
  4660  
  4661  func idxAppendText(tls *libc.TLS, pRc uintptr, zIn uintptr, zFmt uintptr, va uintptr) uintptr {
  4662  	var ap va_list
  4663  	_ = ap
  4664  	var zAppend uintptr = uintptr(0)
  4665  	var zRet uintptr = uintptr(0)
  4666  	var nIn int32
  4667  	if zIn != 0 {
  4668  		nIn = int32(libc.Xstrlen(tls, zIn))
  4669  	} else {
  4670  		nIn = 0
  4671  	}
  4672  	var nAppend int32 = 0
  4673  	ap = va
  4674  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
  4675  		zAppend = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
  4676  		if zAppend != 0 {
  4677  			nAppend = int32(libc.Xstrlen(tls, zAppend))
  4678  			zRet = sqlite3.Xsqlite3_malloc(tls, nIn+nAppend+1)
  4679  		}
  4680  		if zAppend != 0 && zRet != 0 {
  4681  			if nIn != 0 {
  4682  				libc.Xmemcpy(tls, zRet, zIn, uint64(nIn))
  4683  			}
  4684  			libc.Xmemcpy(tls, zRet+uintptr(nIn), zAppend, uint64(nAppend+1))
  4685  		} else {
  4686  			sqlite3.Xsqlite3_free(tls, zRet)
  4687  			zRet = uintptr(0)
  4688  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
  4689  		}
  4690  		sqlite3.Xsqlite3_free(tls, zAppend)
  4691  		sqlite3.Xsqlite3_free(tls, zIn)
  4692  	}
  4693  	_ = ap
  4694  	return zRet
  4695  }
  4696  
  4697  func idxIdentifierRequiresQuotes(tls *libc.TLS, zId uintptr) int32 {
  4698  	var i int32
  4699  	for i = 0; *(*int8)(unsafe.Pointer(zId + uintptr(i))) != 0; i++ {
  4700  		if !(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) == '_') &&
  4701  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= '0' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= '9') &&
  4702  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'a' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'z') &&
  4703  			!(int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) >= 'A' && int32(*(*int8)(unsafe.Pointer(zId + uintptr(i)))) <= 'Z') {
  4704  			return 1
  4705  		}
  4706  	}
  4707  	return 0
  4708  }
  4709  
  4710  func idxAppendColDefn(tls *libc.TLS, pRc uintptr, zIn uintptr, pTab uintptr, pCons uintptr) uintptr {
  4711  	bp := tls.Alloc(32)
  4712  	defer tls.Free(32)
  4713  
  4714  	var zRet uintptr = zIn
  4715  	var p uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FaCol + uintptr((*IdxConstraint)(unsafe.Pointer(pCons)).FiCol)*24
  4716  	if zRet != 0 {
  4717  		zRet = idxAppendText(tls, pRc, zRet, ts+97, 0)
  4718  	}
  4719  
  4720  	if idxIdentifierRequiresQuotes(tls, (*IdxColumn)(unsafe.Pointer(p)).FzName) != 0 {
  4721  		zRet = idxAppendText(tls, pRc, zRet, ts+100, libc.VaList(bp, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4722  	} else {
  4723  		zRet = idxAppendText(tls, pRc, zRet, ts, libc.VaList(bp+8, (*IdxColumn)(unsafe.Pointer(p)).FzName))
  4724  	}
  4725  
  4726  	if sqlite3.Xsqlite3_stricmp(tls, (*IdxColumn)(unsafe.Pointer(p)).FzColl, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4727  		if idxIdentifierRequiresQuotes(tls, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl) != 0 {
  4728  			zRet = idxAppendText(tls, pRc, zRet, ts+103, libc.VaList(bp+16, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4729  		} else {
  4730  			zRet = idxAppendText(tls, pRc, zRet, ts+115, libc.VaList(bp+24, (*IdxConstraint)(unsafe.Pointer(pCons)).FzColl))
  4731  		}
  4732  	}
  4733  
  4734  	if (*IdxConstraint)(unsafe.Pointer(pCons)).FbDesc != 0 {
  4735  		zRet = idxAppendText(tls, pRc, zRet, ts+127, 0)
  4736  	}
  4737  	return zRet
  4738  }
  4739  
  4740  func idxFindCompatible(tls *libc.TLS, pRc uintptr, dbm uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4741  	bp := tls.Alloc(36)
  4742  	defer tls.Free(36)
  4743  
  4744  	var zTbl uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4745  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
  4746  	var pIter uintptr
  4747  	var nEq int32 = 0
  4748  
  4749  	for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4750  		nEq++
  4751  	}
  4752  
  4753  	*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+16, uintptr(0), ts+133, libc.VaList(bp, zTbl))
  4754  	for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW {
  4755  		var bMatch int32 = 1
  4756  		var pT uintptr = pTail
  4757  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  4758  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
  4759  		if zIdx == uintptr(0) {
  4760  			continue
  4761  		}
  4762  
  4763  		for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4764  			(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 0
  4765  		}
  4766  
  4767  		*(*int32)(unsafe.Pointer(bp + 32)) = idxPrintfPrepareStmt(tls, dbm, bp+24, uintptr(0), ts+154, libc.VaList(bp+8, zIdx))
  4768  		for *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW {
  4769  			var iIdx int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  4770  			var iCol int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
  4771  			var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 4)
  4772  
  4773  			if iIdx < nEq {
  4774  				for pIter = pEq; pIter != 0; pIter = (*IdxConstraint)(unsafe.Pointer(pIter)).FpLink {
  4775  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag != 0 {
  4776  						continue
  4777  					}
  4778  					if (*IdxConstraint)(unsafe.Pointer(pIter)).FiCol != iCol {
  4779  						continue
  4780  					}
  4781  					if sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pIter)).FzColl, zColl) != 0 {
  4782  						continue
  4783  					}
  4784  					(*IdxConstraint)(unsafe.Pointer(pIter)).FbFlag = 1
  4785  					break
  4786  				}
  4787  				if pIter == uintptr(0) {
  4788  					bMatch = 0
  4789  					break
  4790  				}
  4791  			} else {
  4792  				if pT != 0 {
  4793  					if (*IdxConstraint)(unsafe.Pointer(pT)).FiCol != iCol || sqlite3.Xsqlite3_stricmp(tls, (*IdxConstraint)(unsafe.Pointer(pT)).FzColl, zColl) != 0 {
  4794  						bMatch = 0
  4795  						break
  4796  					}
  4797  					pT = (*IdxConstraint)(unsafe.Pointer(pT)).FpLink
  4798  				}
  4799  			}
  4800  		}
  4801  		idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 24)))
  4802  
  4803  		if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK && bMatch != 0 {
  4804  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4805  			return 1
  4806  		}
  4807  	}
  4808  	idxFinalize(tls, bp+32, *(*uintptr)(unsafe.Pointer(bp + 16)))
  4809  
  4810  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 32))
  4811  	return 0
  4812  }
  4813  
  4814  func countNonzeros(tls *libc.TLS, pCount uintptr, nc int32, azResults uintptr, azColumns uintptr) int32 {
  4815  	_ = azColumns
  4816  	if nc > 0 && (int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults))))) != '0' || int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(azResults)) + 1))) != 0) {
  4817  		*(*int32)(unsafe.Pointer(pCount)) += 1
  4818  	}
  4819  	return 0
  4820  }
  4821  
  4822  func idxCreateFromCons(tls *libc.TLS, p uintptr, pScan uintptr, pEq uintptr, pTail uintptr) int32 {
  4823  	bp := tls.Alloc(56)
  4824  	defer tls.Free(56)
  4825  
  4826  	var dbm uintptr = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  4827  	*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_OK
  4828  	if (pEq != 0 || pTail != 0) && 0 == idxFindCompatible(tls, bp+48, dbm, pScan, pEq, pTail) {
  4829  		var pTab uintptr = (*IdxScan)(unsafe.Pointer(pScan)).FpTab
  4830  		var zCols uintptr = uintptr(0)
  4831  		var zIdx uintptr = uintptr(0)
  4832  		var pCons uintptr
  4833  		var h uint32 = uint32(0)
  4834  		var zFmt uintptr
  4835  
  4836  		for pCons = pEq; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4837  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4838  		}
  4839  		for pCons = pTail; pCons != 0; pCons = (*IdxConstraint)(unsafe.Pointer(pCons)).FpLink {
  4840  			zCols = idxAppendColDefn(tls, bp+48, zCols, pTab, pCons)
  4841  		}
  4842  
  4843  		if *(*int32)(unsafe.Pointer(bp + 48)) == SQLITE_OK {
  4844  			var zTable uintptr = (*IdxTable)(unsafe.Pointer((*IdxScan)(unsafe.Pointer(pScan)).FpTab)).FzName
  4845  			var quoteTable int32 = idxIdentifierRequiresQuotes(tls, zTable)
  4846  			var zName uintptr = uintptr(0)
  4847  			var collisions int32 = 0
  4848  			for __ccgo := true; __ccgo; __ccgo = collisions < 50 && zName != uintptr(0) {
  4849  				var zFind uintptr
  4850  				for *(*int32)(unsafe.Pointer(bp + 52)) = 0; *(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52))))) != 0; *(*int32)(unsafe.Pointer(bp + 52))++ {
  4851  					h = h + (h<<3 + uint32(*(*int8)(unsafe.Pointer(zCols + uintptr(*(*int32)(unsafe.Pointer(bp + 52)))))))
  4852  				}
  4853  				sqlite3.Xsqlite3_free(tls, zName)
  4854  				zName = sqlite3.Xsqlite3_mprintf(tls, ts+176, libc.VaList(bp, zTable, h))
  4855  				if zName == uintptr(0) {
  4856  					break
  4857  				}
  4858  
  4859  				zFmt = ts + 188
  4860  				zFind = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+16, zName))
  4861  				*(*int32)(unsafe.Pointer(bp + 52)) = 0
  4862  				*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zFind, *(*uintptr)(unsafe.Pointer(&struct {
  4863  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  4864  				}{countNonzeros})), bp+52, uintptr(0))
  4865  
  4866  				sqlite3.Xsqlite3_free(tls, zFind)
  4867  				if *(*int32)(unsafe.Pointer(bp + 52)) == 0 {
  4868  					collisions = 0
  4869  					break
  4870  				}
  4871  				collisions++
  4872  			}
  4873  			if collisions != 0 {
  4874  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4875  			} else if zName == uintptr(0) {
  4876  				*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4877  			} else {
  4878  				if quoteTable != 0 {
  4879  					zFmt = ts + 274
  4880  				} else {
  4881  					zFmt = ts + 304
  4882  				}
  4883  				zIdx = sqlite3.Xsqlite3_mprintf(tls, zFmt, libc.VaList(bp+24, zName, zTable, zCols))
  4884  				if !(zIdx != 0) {
  4885  					*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_NOMEM
  4886  				} else {
  4887  					*(*int32)(unsafe.Pointer(bp + 48)) = sqlite3.Xsqlite3_exec(tls, dbm, zIdx, uintptr(0), uintptr(0), (*sqlite3expert)(unsafe.Pointer(p)).FpzErrmsg)
  4888  					if *(*int32)(unsafe.Pointer(bp + 48)) != SQLITE_OK {
  4889  						*(*int32)(unsafe.Pointer(bp + 48)) = SQLITE_BUSY | int32(3)<<8
  4890  					} else {
  4891  						idxHashAdd(tls, bp+48, p+88, zName, zIdx)
  4892  					}
  4893  				}
  4894  				sqlite3.Xsqlite3_free(tls, zName)
  4895  				sqlite3.Xsqlite3_free(tls, zIdx)
  4896  			}
  4897  		}
  4898  
  4899  		sqlite3.Xsqlite3_free(tls, zCols)
  4900  	}
  4901  	return *(*int32)(unsafe.Pointer(bp + 48))
  4902  }
  4903  
  4904  func idxFindConstraint(tls *libc.TLS, pList uintptr, p uintptr) int32 {
  4905  	var pCmp uintptr
  4906  	for pCmp = pList; pCmp != 0; pCmp = (*IdxConstraint)(unsafe.Pointer(pCmp)).FpLink {
  4907  		if (*IdxConstraint)(unsafe.Pointer(p)).FiCol == (*IdxConstraint)(unsafe.Pointer(pCmp)).FiCol {
  4908  			return 1
  4909  		}
  4910  	}
  4911  	return 0
  4912  }
  4913  
  4914  func idxCreateFromWhere(tls *libc.TLS, p uintptr, pScan uintptr, pTail uintptr) int32 {
  4915  	var p1 uintptr = uintptr(0)
  4916  	var pCon uintptr
  4917  	var rc int32
  4918  
  4919  	for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpEq; pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4920  		if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4921  			(*IdxConstraint)(unsafe.Pointer(pCon)).FpLink = p1
  4922  			p1 = pCon
  4923  		}
  4924  	}
  4925  
  4926  	rc = idxCreateFromCons(tls, p, pScan, p1, pTail)
  4927  
  4928  	if pTail == uintptr(0) {
  4929  		for pCon = (*IdxScan)(unsafe.Pointer(pScan)).FpRange; rc == SQLITE_OK && pCon != 0; pCon = (*IdxConstraint)(unsafe.Pointer(pCon)).FpNext {
  4930  			if !(idxFindConstraint(tls, p1, pCon) != 0) && !(idxFindConstraint(tls, pTail, pCon) != 0) {
  4931  				rc = idxCreateFromCons(tls, p, pScan, p1, pCon)
  4932  			}
  4933  		}
  4934  	}
  4935  
  4936  	return rc
  4937  }
  4938  
  4939  func idxCreateCandidates(tls *libc.TLS, p uintptr) int32 {
  4940  	var rc int32 = SQLITE_OK
  4941  	var pIter uintptr
  4942  
  4943  	for pIter = (*sqlite3expert)(unsafe.Pointer(p)).FpScan; pIter != 0 && rc == SQLITE_OK; pIter = (*IdxScan)(unsafe.Pointer(pIter)).FpNextScan {
  4944  		rc = idxCreateFromWhere(tls, p, pIter, uintptr(0))
  4945  		if rc == SQLITE_OK && (*IdxScan)(unsafe.Pointer(pIter)).FpOrder != 0 {
  4946  			rc = idxCreateFromWhere(tls, p, pIter, (*IdxScan)(unsafe.Pointer(pIter)).FpOrder)
  4947  		}
  4948  	}
  4949  
  4950  	return rc
  4951  }
  4952  
  4953  func idxConstraintFree(tls *libc.TLS, pConstraint uintptr) {
  4954  	var pNext uintptr
  4955  	var p uintptr
  4956  
  4957  	for p = pConstraint; p != 0; p = pNext {
  4958  		pNext = (*IdxConstraint)(unsafe.Pointer(p)).FpNext
  4959  		sqlite3.Xsqlite3_free(tls, p)
  4960  	}
  4961  }
  4962  
  4963  func idxScanFree(tls *libc.TLS, pScan uintptr, pLast uintptr) {
  4964  	var p uintptr
  4965  	var pNext uintptr
  4966  	for p = pScan; p != pLast; p = pNext {
  4967  		pNext = (*IdxScan)(unsafe.Pointer(p)).FpNextScan
  4968  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpOrder)
  4969  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpEq)
  4970  		idxConstraintFree(tls, (*IdxScan)(unsafe.Pointer(p)).FpRange)
  4971  		sqlite3.Xsqlite3_free(tls, p)
  4972  	}
  4973  }
  4974  
  4975  func idxStatementFree(tls *libc.TLS, pStatement uintptr, pLast uintptr) {
  4976  	var p uintptr
  4977  	var pNext uintptr
  4978  	for p = pStatement; p != pLast; p = pNext {
  4979  		pNext = (*IdxStatement)(unsafe.Pointer(p)).FpNext
  4980  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzEQP)
  4981  		sqlite3.Xsqlite3_free(tls, (*IdxStatement)(unsafe.Pointer(p)).FzIdx)
  4982  		sqlite3.Xsqlite3_free(tls, p)
  4983  	}
  4984  }
  4985  
  4986  func idxTableFree(tls *libc.TLS, pTab uintptr) {
  4987  	var pIter uintptr
  4988  	var pNext uintptr
  4989  	for pIter = pTab; pIter != 0; pIter = pNext {
  4990  		pNext = (*IdxTable)(unsafe.Pointer(pIter)).FpNext
  4991  		sqlite3.Xsqlite3_free(tls, pIter)
  4992  	}
  4993  }
  4994  
  4995  func idxWriteFree(tls *libc.TLS, pTab uintptr) {
  4996  	var pIter uintptr
  4997  	var pNext uintptr
  4998  	for pIter = pTab; pIter != 0; pIter = pNext {
  4999  		pNext = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext
  5000  		sqlite3.Xsqlite3_free(tls, pIter)
  5001  	}
  5002  }
  5003  
  5004  func idxFindIndexes(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5005  	bp := tls.Alloc(8228)
  5006  	defer tls.Free(8228)
  5007  
  5008  	var pStmt uintptr
  5009  	var dbm uintptr
  5010  
  5011  	var zSql uintptr
  5012  	var nIdx int32
  5013  	var zIdx uintptr
  5014  
  5015  	var zDetail uintptr
  5016  	var nDetail int32
  5017  	var i int32
  5018  	var pEntry uintptr
  5019  
  5020  	dbm = (*sqlite3expert)(unsafe.Pointer(p)).Fdbm
  5021  	*(*int32)(unsafe.Pointer(bp + 8224)) = SQLITE_OK
  5022  	idxHashInit(tls, bp+24)
  5023  
  5024  	pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5025  __1:
  5026  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && pStmt != 0) {
  5027  		goto __3
  5028  	}
  5029  	*(*uintptr)(unsafe.Pointer(bp + 8216)) = uintptr(0)
  5030  	idxHashClear(tls, bp+24)
  5031  	*(*int32)(unsafe.Pointer(bp + 8224)) = idxPrintfPrepareStmt(tls, dbm, bp+8216, pzErr,
  5032  		ts+330, libc.VaList(bp, (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql))
  5033  __4:
  5034  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8216))) == SQLITE_ROW) {
  5035  		goto __5
  5036  	}
  5037  
  5038  	zDetail = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8216)), 3)
  5039  
  5040  	if !!(zDetail != 0) {
  5041  		goto __6
  5042  	}
  5043  	goto __4
  5044  __6:
  5045  	;
  5046  	nDetail = int32(libc.Xstrlen(tls, zDetail))
  5047  
  5048  	i = 0
  5049  __7:
  5050  	if !(i < nDetail) {
  5051  		goto __9
  5052  	}
  5053  	zIdx = uintptr(0)
  5054  	if !(i+13 < nDetail && libc.Xmemcmp(tls, zDetail+uintptr(i), ts+352, uint64(13)) == 0) {
  5055  		goto __10
  5056  	}
  5057  	zIdx = zDetail + uintptr(i+13)
  5058  	goto __11
  5059  __10:
  5060  	if !(i+22 < nDetail &&
  5061  		libc.Xmemcmp(tls, zDetail+uintptr(i), ts+366, uint64(22)) == 0) {
  5062  		goto __12
  5063  	}
  5064  	zIdx = zDetail + uintptr(i+22)
  5065  __12:
  5066  	;
  5067  __11:
  5068  	;
  5069  	if !(zIdx != 0) {
  5070  		goto __13
  5071  	}
  5072  	nIdx = 0
  5073  __14:
  5074  	if !(int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != 0 && (int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx)))) != ' ' || int32(*(*int8)(unsafe.Pointer(zIdx + uintptr(nIdx+1)))) != '(')) {
  5075  		goto __15
  5076  	}
  5077  	nIdx++
  5078  	goto __14
  5079  __15:
  5080  	;
  5081  	zSql = idxHashSearch(tls, p+88, zIdx, nIdx)
  5082  	if !(zSql != 0) {
  5083  		goto __16
  5084  	}
  5085  	idxHashAdd(tls, bp+8224, bp+24, zSql, uintptr(0))
  5086  	if !(*(*int32)(unsafe.Pointer(bp + 8224)) != 0) {
  5087  		goto __17
  5088  	}
  5089  	goto find_indexes_out
  5090  __17:
  5091  	;
  5092  __16:
  5093  	;
  5094  	goto __9
  5095  __13:
  5096  	;
  5097  	goto __8
  5098  __8:
  5099  	i++
  5100  	goto __7
  5101  	goto __9
  5102  __9:
  5103  	;
  5104  	if !(int32(*(*int8)(unsafe.Pointer(zDetail))) != '-') {
  5105  		goto __18
  5106  	}
  5107  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP, ts+389, libc.VaList(bp+8, zDetail))
  5108  __18:
  5109  	;
  5110  	goto __4
  5111  __5:
  5112  	;
  5113  	pEntry = (*IdxHash)(unsafe.Pointer(bp + 24)).FpFirst
  5114  __19:
  5115  	if !(pEntry != 0) {
  5116  		goto __21
  5117  	}
  5118  	(*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx = idxAppendText(tls, bp+8224, (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx, ts+393, libc.VaList(bp+16, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzKey))
  5119  	goto __20
  5120  __20:
  5121  	pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext
  5122  	goto __19
  5123  	goto __21
  5124  __21:
  5125  	;
  5126  	idxFinalize(tls, bp+8224, *(*uintptr)(unsafe.Pointer(bp + 8216)))
  5127  	goto __2
  5128  __2:
  5129  	pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext
  5130  	goto __1
  5131  	goto __3
  5132  __3:
  5133  	;
  5134  find_indexes_out:
  5135  	idxHashClear(tls, bp+24)
  5136  	return *(*int32)(unsafe.Pointer(bp + 8224))
  5137  }
  5138  
  5139  func idxAuthCallback(tls *libc.TLS, pCtx uintptr, eOp int32, z3 uintptr, z4 uintptr, zDb uintptr, zTrigger uintptr) int32 {
  5140  	bp := tls.Alloc(4)
  5141  	defer tls.Free(4)
  5142  
  5143  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
  5144  	_ = z4
  5145  	_ = zTrigger
  5146  	if eOp == SQLITE_INSERT || eOp == SQLITE_UPDATE || eOp == SQLITE_DELETE {
  5147  		if sqlite3.Xsqlite3_stricmp(tls, zDb, ts+85) == 0 {
  5148  			var p uintptr = pCtx
  5149  			var pTab uintptr
  5150  			for pTab = (*sqlite3expert)(unsafe.Pointer(p)).FpTable; pTab != 0; pTab = (*IdxTable)(unsafe.Pointer(pTab)).FpNext {
  5151  				if 0 == sqlite3.Xsqlite3_stricmp(tls, z3, (*IdxTable)(unsafe.Pointer(pTab)).FzName) {
  5152  					break
  5153  				}
  5154  			}
  5155  			if pTab != 0 {
  5156  				var pWrite uintptr
  5157  				for pWrite = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite; pWrite != 0; pWrite = (*IdxWrite)(unsafe.Pointer(pWrite)).FpNext {
  5158  					if (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab == pTab && (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp == eOp {
  5159  						break
  5160  					}
  5161  				}
  5162  				if pWrite == uintptr(0) {
  5163  					pWrite = idxMalloc(tls, bp, int32(unsafe.Sizeof(IdxWrite{})))
  5164  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
  5165  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpTab = pTab
  5166  						(*IdxWrite)(unsafe.Pointer(pWrite)).FeOp = eOp
  5167  						(*IdxWrite)(unsafe.Pointer(pWrite)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5168  						(*sqlite3expert)(unsafe.Pointer(p)).FpWrite = pWrite
  5169  					}
  5170  				}
  5171  			}
  5172  		}
  5173  	}
  5174  	return *(*int32)(unsafe.Pointer(bp))
  5175  }
  5176  
  5177  func idxProcessOneTrigger(tls *libc.TLS, p uintptr, pWrite uintptr, pzErr uintptr) int32 {
  5178  	bp := tls.Alloc(104)
  5179  	defer tls.Free(104)
  5180  
  5181  	var pTab uintptr = (*IdxWrite)(unsafe.Pointer(pWrite)).FpTab
  5182  	var zTab uintptr = (*IdxTable)(unsafe.Pointer(pTab)).FzName
  5183  	var zSql uintptr = ts + 398
  5184  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
  5185  	*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_OK
  5186  	var zWrite uintptr = uintptr(0)
  5187  
  5188  	*(*int32)(unsafe.Pointer(bp + 88)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+80, pzErr, zSql, libc.VaList(bp, zTab, zTab))
  5189  	for *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80))) {
  5190  		var zCreate uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
  5191  		if zCreate == uintptr(0) {
  5192  			continue
  5193  		}
  5194  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zCreate, uintptr(0), uintptr(0), pzErr)
  5195  	}
  5196  	idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 80)))
  5197  
  5198  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5199  		var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+524, libc.VaList(bp+16, zTab, zInt))
  5200  		if z == uintptr(0) {
  5201  			*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5202  		} else {
  5203  			*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, z, uintptr(0), uintptr(0), pzErr)
  5204  			sqlite3.Xsqlite3_free(tls, z)
  5205  		}
  5206  	}
  5207  
  5208  	switch (*IdxWrite)(unsafe.Pointer(pWrite)).FeOp {
  5209  	case SQLITE_INSERT:
  5210  		{
  5211  			var i int32
  5212  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+557, libc.VaList(bp+32, zInt))
  5213  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5214  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+580, libc.VaList(bp+40, func() uintptr {
  5215  					if i == 0 {
  5216  						return ts + 584
  5217  					}
  5218  					return ts + 97
  5219  				}()))
  5220  			}
  5221  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+585, 0)
  5222  			break
  5223  
  5224  		}
  5225  	case SQLITE_UPDATE:
  5226  		{
  5227  			var i int32
  5228  			zWrite = idxAppendText(tls, bp+88, zWrite, ts+587, libc.VaList(bp+48, zInt))
  5229  			for i = 0; i < (*IdxTable)(unsafe.Pointer(pTab)).FnCol; i++ {
  5230  				zWrite = idxAppendText(tls, bp+88, zWrite, ts+602, libc.VaList(bp+56, func() uintptr {
  5231  					if i == 0 {
  5232  						return ts + 584
  5233  					}
  5234  					return ts + 97
  5235  				}(),
  5236  					(*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(pTab)).FaCol+uintptr(i)*24)).FzName))
  5237  			}
  5238  			break
  5239  
  5240  		}
  5241  	default:
  5242  		{
  5243  			if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5244  				zWrite = sqlite3.Xsqlite3_mprintf(tls, ts+609, libc.VaList(bp+72, zInt))
  5245  				if zWrite == uintptr(0) {
  5246  					*(*int32)(unsafe.Pointer(bp + 88)) = SQLITE_NOMEM
  5247  				}
  5248  			}
  5249  
  5250  		}
  5251  	}
  5252  
  5253  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5254  		*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  5255  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zWrite, -1, bp+96, uintptr(0))
  5256  		idxFinalize(tls, bp+88, *(*uintptr)(unsafe.Pointer(bp + 96)))
  5257  		if *(*int32)(unsafe.Pointer(bp + 88)) != SQLITE_OK {
  5258  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5259  		}
  5260  	}
  5261  	sqlite3.Xsqlite3_free(tls, zWrite)
  5262  
  5263  	if *(*int32)(unsafe.Pointer(bp + 88)) == SQLITE_OK {
  5264  		*(*int32)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zDrop, uintptr(0), uintptr(0), pzErr)
  5265  	}
  5266  
  5267  	return *(*int32)(unsafe.Pointer(bp + 88))
  5268  }
  5269  
  5270  var zInt uintptr = ts + 624
  5271  var zDrop uintptr = ts + 662
  5272  
  5273  func idxProcessTriggers(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5274  	var rc int32 = SQLITE_OK
  5275  	var pEnd uintptr = uintptr(0)
  5276  	var pFirst uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5277  
  5278  	for rc == SQLITE_OK && pFirst != pEnd {
  5279  		var pIter uintptr
  5280  		for pIter = pFirst; rc == SQLITE_OK && pIter != pEnd; pIter = (*IdxWrite)(unsafe.Pointer(pIter)).FpNext {
  5281  			rc = idxProcessOneTrigger(tls, p, pIter, pzErr)
  5282  		}
  5283  		pEnd = pFirst
  5284  		pFirst = (*sqlite3expert)(unsafe.Pointer(p)).FpWrite
  5285  	}
  5286  
  5287  	return rc
  5288  }
  5289  
  5290  func idxCreateVtabSchema(tls *libc.TLS, p uintptr, pzErrmsg uintptr) int32 {
  5291  	bp := tls.Alloc(60)
  5292  	defer tls.Free(60)
  5293  
  5294  	*(*int32)(unsafe.Pointer(bp + 56)) = idxRegisterVtab(tls, p)
  5295  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5296  
  5297  	*(*int32)(unsafe.Pointer(bp + 56)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, bp+40, pzErrmsg,
  5298  		ts+711)
  5299  	for *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5300  		var zType uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5301  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5302  		var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5303  
  5304  		if zType == uintptr(0) || zName == uintptr(0) {
  5305  			continue
  5306  		}
  5307  		if int32(*(*int8)(unsafe.Pointer(zType))) == 'v' || int32(*(*int8)(unsafe.Pointer(zType + 1))) == 'r' {
  5308  			if zSql != 0 {
  5309  				*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5310  			}
  5311  		} else {
  5312  			*(*int32)(unsafe.Pointer(bp + 56)) = idxGetTableInfo(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, zName, bp+48, pzErrmsg)
  5313  			if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5314  				var i int32
  5315  				var zInner uintptr = uintptr(0)
  5316  				var zOuter uintptr = uintptr(0)
  5317  				(*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpTable
  5318  				(*sqlite3expert)(unsafe.Pointer(p)).FpTable = *(*uintptr)(unsafe.Pointer(bp + 48))
  5319  
  5320  				zInner = idxAppendText(tls, bp+56, uintptr(0), ts+979, 0)
  5321  				for i = 0; i < (*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FnCol; i++ {
  5322  					zInner = idxAppendText(tls, bp+56, zInner, ts+995,
  5323  						libc.VaList(bp, func() uintptr {
  5324  							if i == 0 {
  5325  								return ts + 584
  5326  							}
  5327  							return ts + 97
  5328  						}(), (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FaCol+uintptr(i)*24)).FzName, (*IdxColumn)(unsafe.Pointer((*IdxTable)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FaCol+uintptr(i)*24)).FzColl))
  5329  				}
  5330  				zInner = idxAppendText(tls, bp+56, zInner, ts+585, 0)
  5331  
  5332  				zOuter = idxAppendText(tls, bp+56, uintptr(0),
  5333  					ts+1011, libc.VaList(bp+24, zName, zInner))
  5334  				if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK {
  5335  					*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zOuter, uintptr(0), uintptr(0), pzErrmsg)
  5336  				}
  5337  				sqlite3.Xsqlite3_free(tls, zInner)
  5338  				sqlite3.Xsqlite3_free(tls, zOuter)
  5339  			}
  5340  		}
  5341  	}
  5342  	idxFinalize(tls, bp+56, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5343  	return *(*int32)(unsafe.Pointer(bp + 56))
  5344  }
  5345  
  5346  type IdxSampleCtx = struct {
  5347  	FiTarget     int32
  5348  	F__ccgo_pad1 [4]byte
  5349  	Ftarget      float64
  5350  	FnRow        float64
  5351  	FnRet        float64
  5352  }
  5353  
  5354  func idxSampleFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5355  	bp := tls.Alloc(2)
  5356  	defer tls.Free(2)
  5357  
  5358  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5359  	var bRet int32
  5360  
  5361  	_ = argv
  5362  
  5363  	if (*IdxSampleCtx)(unsafe.Pointer(p)).FnRow == 0.0 {
  5364  		bRet = 1
  5365  	} else {
  5366  		bRet = libc.Bool32((*IdxSampleCtx)(unsafe.Pointer(p)).FnRet/(*IdxSampleCtx)(unsafe.Pointer(p)).FnRow <= (*IdxSampleCtx)(unsafe.Pointer(p)).Ftarget)
  5367  		if bRet == 0 {
  5368  			sqlite3.Xsqlite3_randomness(tls, 2, bp)
  5369  			bRet = libc.Bool32(int32(*(*uint16)(unsafe.Pointer(bp)))%100 <= (*IdxSampleCtx)(unsafe.Pointer(p)).FiTarget)
  5370  		}
  5371  	}
  5372  
  5373  	sqlite3.Xsqlite3_result_int(tls, pCtx, bRet)
  5374  	*(*float64)(unsafe.Pointer(p + 16)) += 1.0
  5375  	*(*float64)(unsafe.Pointer(p + 24)) += float64(bRet)
  5376  }
  5377  
  5378  type IdxRemCtx = struct {
  5379  	FnSlot       int32
  5380  	F__ccgo_pad1 [4]byte
  5381  	FaSlot       [1]struct {
  5382  		FeType       int32
  5383  		F__ccgo_pad1 [4]byte
  5384  		FiVal        i64
  5385  		FrVal        float64
  5386  		FnByte       int32
  5387  		Fn           int32
  5388  		Fz           uintptr
  5389  	}
  5390  }
  5391  
  5392  type IdxRemSlot = struct {
  5393  	FeType       int32
  5394  	F__ccgo_pad1 [4]byte
  5395  	FiVal        i64
  5396  	FrVal        float64
  5397  	FnByte       int32
  5398  	Fn           int32
  5399  	Fz           uintptr
  5400  }
  5401  
  5402  func idxRemFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
  5403  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
  5404  	var pSlot uintptr
  5405  	var iSlot int32
  5406  
  5407  	iSlot = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
  5408  
  5409  	pSlot = p + 8 + uintptr(iSlot)*40
  5410  
  5411  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5412  	case SQLITE_NULL:
  5413  		break
  5414  
  5415  	case SQLITE_INTEGER:
  5416  		sqlite3.Xsqlite3_result_int64(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal)
  5417  		break
  5418  
  5419  	case SQLITE_FLOAT:
  5420  		sqlite3.Xsqlite3_result_double(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal)
  5421  		break
  5422  
  5423  	case SQLITE_BLOB:
  5424  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5425  		break
  5426  
  5427  	case SQLITE_TEXT:
  5428  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn, libc.UintptrFromInt32(-1))
  5429  		break
  5430  	}
  5431  
  5432  	(*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5433  	switch (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType {
  5434  	case SQLITE_NULL:
  5435  		break
  5436  
  5437  	case SQLITE_INTEGER:
  5438  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FiVal = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5439  		break
  5440  
  5441  	case SQLITE_FLOAT:
  5442  		(*IdxRemSlot)(unsafe.Pointer(pSlot)).FrVal = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5443  		break
  5444  
  5445  	case SQLITE_BLOB:
  5446  		fallthrough
  5447  	case SQLITE_TEXT:
  5448  		{
  5449  			var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5450  			var pData uintptr = uintptr(0)
  5451  			if nByte > (*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte {
  5452  				var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, nByte*2)
  5453  				if zNew == uintptr(0) {
  5454  					sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  5455  					return
  5456  				}
  5457  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).FnByte = nByte * 2
  5458  				(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz = zNew
  5459  			}
  5460  			(*IdxRemSlot)(unsafe.Pointer(pSlot)).Fn = nByte
  5461  			if (*IdxRemSlot)(unsafe.Pointer(pSlot)).FeType == SQLITE_BLOB {
  5462  				pData = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5463  				if pData != 0 {
  5464  					libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5465  				}
  5466  			} else {
  5467  				pData = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
  5468  				libc.Xmemcpy(tls, (*IdxRemSlot)(unsafe.Pointer(pSlot)).Fz, pData, uint64(nByte))
  5469  			}
  5470  			break
  5471  
  5472  		}
  5473  	}
  5474  }
  5475  
  5476  func idxLargestIndex(tls *libc.TLS, db uintptr, pnMax uintptr, pzErr uintptr) int32 {
  5477  	bp := tls.Alloc(12)
  5478  	defer tls.Free(12)
  5479  
  5480  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OK
  5481  	var zMax uintptr = ts + 1052
  5482  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5483  
  5484  	*(*int32)(unsafe.Pointer(pnMax)) = 0
  5485  	*(*int32)(unsafe.Pointer(bp + 8)) = idxPrepareStmt(tls, db, bp, pzErr, zMax)
  5486  	if *(*int32)(unsafe.Pointer(bp + 8)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
  5487  		*(*int32)(unsafe.Pointer(pnMax)) = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp)), 0) + 1
  5488  	}
  5489  	idxFinalize(tls, bp+8, *(*uintptr)(unsafe.Pointer(bp)))
  5490  
  5491  	return *(*int32)(unsafe.Pointer(bp + 8))
  5492  }
  5493  
  5494  func idxPopulateOneStat1(tls *libc.TLS, p uintptr, pIndexXInfo uintptr, pWriteStat uintptr, zTab uintptr, zIdx uintptr, pzErr uintptr) int32 {
  5495  	bp := tls.Alloc(128)
  5496  	defer tls.Free(128)
  5497  
  5498  	var zCols uintptr = uintptr(0)
  5499  	var zOrder uintptr = uintptr(0)
  5500  	var zQuery uintptr = uintptr(0)
  5501  	var nCol int32 = 0
  5502  	var i int32
  5503  	*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
  5504  	var aStat uintptr = uintptr(0)
  5505  	*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_OK
  5506  
  5507  	sqlite3.Xsqlite3_bind_text(tls, pIndexXInfo, 1, zIdx, -1, uintptr(0))
  5508  	for SQLITE_OK == *(*int32)(unsafe.Pointer(bp + 112)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pIndexXInfo) {
  5509  		var zComma uintptr
  5510  		if zCols == uintptr(0) {
  5511  			zComma = ts + 584
  5512  		} else {
  5513  			zComma = ts + 97
  5514  		}
  5515  		var zName uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 0)
  5516  		var zColl uintptr = sqlite3.Xsqlite3_column_text(tls, pIndexXInfo, 1)
  5517  		zCols = idxAppendText(tls, bp+112, zCols,
  5518  			ts+1189, libc.VaList(bp, zComma, zName, nCol, zName, zColl))
  5519  		zOrder = idxAppendText(tls, bp+112, zOrder, ts+1224, libc.VaList(bp+40, zComma, libc.PreIncInt32(&nCol, 1)))
  5520  	}
  5521  	sqlite3.Xsqlite3_reset(tls, pIndexXInfo)
  5522  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5523  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5524  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5525  				ts+1229, libc.VaList(bp+56, zCols, zTab, zOrder))
  5526  		} else {
  5527  			zQuery = sqlite3.Xsqlite3_mprintf(tls,
  5528  				ts+1261, libc.VaList(bp+80, zCols, zOrder))
  5529  		}
  5530  	}
  5531  	sqlite3.Xsqlite3_free(tls, zCols)
  5532  	sqlite3.Xsqlite3_free(tls, zOrder)
  5533  
  5534  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5535  		var dbrem uintptr = func() uintptr {
  5536  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5537  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5538  			}
  5539  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5540  		}()
  5541  		*(*int32)(unsafe.Pointer(bp + 112)) = idxPrepareStmt(tls, dbrem, bp+120, pzErr, zQuery)
  5542  	}
  5543  	sqlite3.Xsqlite3_free(tls, zQuery)
  5544  
  5545  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5546  		aStat = idxMalloc(tls, bp+112, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nCol+1)))
  5547  	}
  5548  	if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5549  		var pEntry uintptr
  5550  		var zStat uintptr = uintptr(0)
  5551  		for i = 0; i <= nCol; i++ {
  5552  			*(*int32)(unsafe.Pointer(aStat + uintptr(i)*4)) = 1
  5553  		}
  5554  		for *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 120))) {
  5555  			*(*int32)(unsafe.Pointer(aStat))++
  5556  			for i = 0; i < nCol; i++ {
  5557  				if sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 120)), i) == 0 {
  5558  					break
  5559  				}
  5560  			}
  5561  			for ; i < nCol; i++ {
  5562  				*(*int32)(unsafe.Pointer(aStat + uintptr(i+1)*4))++
  5563  			}
  5564  		}
  5565  
  5566  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5567  			var s0 int32 = *(*int32)(unsafe.Pointer(aStat))
  5568  			zStat = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+96, s0))
  5569  			if zStat == uintptr(0) {
  5570  				*(*int32)(unsafe.Pointer(bp + 112)) = SQLITE_NOMEM
  5571  			}
  5572  			for i = 1; *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK && i <= nCol; i++ {
  5573  				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))))
  5574  			}
  5575  		}
  5576  
  5577  		if *(*int32)(unsafe.Pointer(bp + 112)) == SQLITE_OK {
  5578  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 1, zTab, -1, uintptr(0))
  5579  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 2, zIdx, -1, uintptr(0))
  5580  			sqlite3.Xsqlite3_bind_text(tls, pWriteStat, 3, zStat, -1, uintptr(0))
  5581  			sqlite3.Xsqlite3_step(tls, pWriteStat)
  5582  			*(*int32)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_reset(tls, pWriteStat)
  5583  		}
  5584  
  5585  		pEntry = idxHashFind(tls, p+88, zIdx, int32(libc.Xstrlen(tls, zIdx)))
  5586  		if pEntry != 0 {
  5587  			(*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 = zStat
  5588  		} else {
  5589  			sqlite3.Xsqlite3_free(tls, zStat)
  5590  		}
  5591  	}
  5592  	sqlite3.Xsqlite3_free(tls, aStat)
  5593  	idxFinalize(tls, bp+112, *(*uintptr)(unsafe.Pointer(bp + 120)))
  5594  
  5595  	return *(*int32)(unsafe.Pointer(bp + 112))
  5596  }
  5597  
  5598  func idxBuildSampleTable(tls *libc.TLS, p uintptr, zTab uintptr) int32 {
  5599  	bp := tls.Alloc(8)
  5600  	defer tls.Free(8)
  5601  
  5602  	var rc int32
  5603  	var zSql uintptr
  5604  
  5605  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5606  	if rc != SQLITE_OK {
  5607  		return rc
  5608  	}
  5609  
  5610  	zSql = sqlite3.Xsqlite3_mprintf(tls,
  5611  		ts+1404, libc.VaList(bp, zTab))
  5612  	if zSql == uintptr(0) {
  5613  		return SQLITE_NOMEM
  5614  	}
  5615  	rc = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, zSql, uintptr(0), uintptr(0), uintptr(0))
  5616  	sqlite3.Xsqlite3_free(tls, zSql)
  5617  
  5618  	return rc
  5619  }
  5620  
  5621  func idxPopulateStat1(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5622  	bp := tls.Alloc(64)
  5623  	defer tls.Free(64)
  5624  
  5625  	*(*int32)(unsafe.Pointer(bp + 4)) = SQLITE_OK
  5626  	*(*int32)(unsafe.Pointer(bp)) = 0
  5627  	var pCtx uintptr = uintptr(0)
  5628  
  5629  	var i int32
  5630  	var iPrev i64 = int64(-100000)
  5631  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
  5632  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  5633  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  5634  
  5635  	var zAllIndex uintptr = ts + 1480
  5636  	var zIndexXInfo uintptr = ts + 1594
  5637  	var zWrite uintptr = ts + 1649
  5638  
  5639  	if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 0 {
  5640  		return SQLITE_OK
  5641  	}
  5642  
  5643  	*(*int32)(unsafe.Pointer(bp + 4)) = idxLargestIndex(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp, pzErr)
  5644  	if *(*int32)(unsafe.Pointer(bp)) <= 0 || *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5645  		return *(*int32)(unsafe.Pointer(bp + 4))
  5646  	}
  5647  
  5648  	*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1690, uintptr(0), uintptr(0), uintptr(0))
  5649  
  5650  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5651  		var nByte int32 = int32(uint64(unsafe.Sizeof(IdxRemCtx{})) + uint64(unsafe.Sizeof(IdxRemSlot{}))*uint64(*(*int32)(unsafe.Pointer(bp))))
  5652  		pCtx = idxMalloc(tls, bp+4, nByte)
  5653  	}
  5654  
  5655  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5656  		var dbrem uintptr = func() uintptr {
  5657  			if (*sqlite3expert)(unsafe.Pointer(p)).FiSample == 100 {
  5658  				return (*sqlite3expert)(unsafe.Pointer(p)).Fdb
  5659  			}
  5660  			return (*sqlite3expert)(unsafe.Pointer(p)).Fdbv
  5661  		}()
  5662  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5663  			dbrem, ts+1724, 2, SQLITE_UTF8, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  5664  				f func(*libc.TLS, uintptr, int32, uintptr)
  5665  			}{idxRemFunc})), uintptr(0), uintptr(0))
  5666  	}
  5667  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5668  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_create_function(tls,
  5669  			(*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1728, 0, SQLITE_UTF8, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  5670  				f func(*libc.TLS, uintptr, int32, uintptr)
  5671  			}{idxSampleFunc})), uintptr(0), uintptr(0))
  5672  	}
  5673  
  5674  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5675  		(*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot = *(*int32)(unsafe.Pointer(bp)) + 1
  5676  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+40, pzErr, zAllIndex)
  5677  	}
  5678  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5679  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+48, pzErr, zIndexXInfo)
  5680  	}
  5681  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5682  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, bp+56, pzErr, zWrite)
  5683  	}
  5684  
  5685  	for *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
  5686  		var iRowid i64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
  5687  		var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
  5688  		var zIdx uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
  5689  		if zTab == uintptr(0) || zIdx == uintptr(0) {
  5690  			continue
  5691  		}
  5692  		if (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 && iPrev != iRowid {
  5693  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).Ftarget = float64((*sqlite3expert)(unsafe.Pointer(p)).FiSample) / 100.0
  5694  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FiTarget = (*sqlite3expert)(unsafe.Pointer(p)).FiSample
  5695  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRow = 0.0
  5696  			(*IdxSampleCtx)(unsafe.Pointer(bp + 8)).FnRet = 0.0
  5697  			*(*int32)(unsafe.Pointer(bp + 4)) = idxBuildSampleTable(tls, p, zTab)
  5698  			if *(*int32)(unsafe.Pointer(bp + 4)) != SQLITE_OK {
  5699  				break
  5700  			}
  5701  		}
  5702  		*(*int32)(unsafe.Pointer(bp + 4)) = idxPopulateOneStat1(tls, p, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)), zTab, zIdx, pzErr)
  5703  		iPrev = iRowid
  5704  	}
  5705  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK && (*sqlite3expert)(unsafe.Pointer(p)).FiSample < 100 {
  5706  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv,
  5707  			ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5708  	}
  5709  
  5710  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 40)))
  5711  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 48)))
  5712  	idxFinalize(tls, bp+4, *(*uintptr)(unsafe.Pointer(bp + 56)))
  5713  
  5714  	if pCtx != 0 {
  5715  		for i = 0; i < (*IdxRemCtx)(unsafe.Pointer(pCtx)).FnSlot; i++ {
  5716  			sqlite3.Xsqlite3_free(tls, (*IdxRemSlot)(unsafe.Pointer(pCtx+8+uintptr(i)*40)).Fz)
  5717  		}
  5718  		sqlite3.Xsqlite3_free(tls, pCtx)
  5719  	}
  5720  
  5721  	if *(*int32)(unsafe.Pointer(bp + 4)) == SQLITE_OK {
  5722  		*(*int32)(unsafe.Pointer(bp + 4)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm, ts+1735, uintptr(0), uintptr(0), uintptr(0))
  5723  	}
  5724  
  5725  	sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdb, ts+1340, uintptr(0), uintptr(0), uintptr(0))
  5726  	return *(*int32)(unsafe.Pointer(bp + 4))
  5727  }
  5728  
  5729  func sqlite3_expert_new(tls *libc.TLS, db uintptr, pzErrmsg uintptr) uintptr {
  5730  	bp := tls.Alloc(32)
  5731  	defer tls.Free(32)
  5732  
  5733  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5734  	var pNew uintptr
  5735  
  5736  	pNew = idxMalloc(tls, bp+16, int32(unsafe.Sizeof(sqlite3expert{})))
  5737  
  5738  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5739  		(*sqlite3expert)(unsafe.Pointer(pNew)).Fdb = db
  5740  		(*sqlite3expert)(unsafe.Pointer(pNew)).FiSample = 100
  5741  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+24)
  5742  	}
  5743  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5744  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_open(tls, ts+1757, pNew+16)
  5745  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5746  			sqlite3.Xsqlite3_db_config(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, SQLITE_DBCONFIG_TRIGGER_EQP, libc.VaList(bp, 1, uintptr(0)))
  5747  		}
  5748  	}
  5749  
  5750  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5751  		*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  5752  		*(*int32)(unsafe.Pointer(bp + 16)) = idxPrintfPrepareStmt(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdb, bp+24, pzErrmsg,
  5753  			ts+1766, 0)
  5754  		for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) {
  5755  			var zSql uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 0)
  5756  			if zSql != 0 {
  5757  				*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_exec(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbm, zSql, uintptr(0), uintptr(0), pzErrmsg)
  5758  			}
  5759  		}
  5760  		idxFinalize(tls, bp+16, *(*uintptr)(unsafe.Pointer(bp + 24)))
  5761  	}
  5762  
  5763  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5764  		*(*int32)(unsafe.Pointer(bp + 16)) = idxCreateVtabSchema(tls, pNew, pzErrmsg)
  5765  	}
  5766  
  5767  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5768  		sqlite3.Xsqlite3_set_authorizer(tls, (*sqlite3expert)(unsafe.Pointer(pNew)).Fdbv, *(*uintptr)(unsafe.Pointer(&struct {
  5769  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
  5770  		}{idxAuthCallback})), pNew)
  5771  	}
  5772  
  5773  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5774  		sqlite3_expert_destroy(tls, pNew)
  5775  		pNew = uintptr(0)
  5776  	}
  5777  	return pNew
  5778  }
  5779  
  5780  func sqlite3_expert_config(tls *libc.TLS, p uintptr, op int32, va uintptr) int32 {
  5781  	var rc int32 = SQLITE_OK
  5782  	var ap va_list
  5783  	_ = ap
  5784  	ap = va
  5785  	switch op {
  5786  	case EXPERT_CONFIG_SAMPLE:
  5787  		{
  5788  			var iVal int32 = libc.VaInt32(&ap)
  5789  			if iVal < 0 {
  5790  				iVal = 0
  5791  			}
  5792  			if iVal > 100 {
  5793  				iVal = 100
  5794  			}
  5795  			(*sqlite3expert)(unsafe.Pointer(p)).FiSample = iVal
  5796  			break
  5797  
  5798  		}
  5799  	default:
  5800  		rc = SQLITE_NOTFOUND
  5801  		break
  5802  	}
  5803  
  5804  	_ = ap
  5805  	return rc
  5806  }
  5807  
  5808  func sqlite3_expert_sql(tls *libc.TLS, p uintptr, zSql uintptr, pzErr uintptr) int32 {
  5809  	bp := tls.Alloc(20)
  5810  	defer tls.Free(20)
  5811  
  5812  	var pScanOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpScan
  5813  	var pStmtOrig uintptr = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5814  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
  5815  	*(*uintptr)(unsafe.Pointer(bp + 8)) = zSql
  5816  
  5817  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun != 0 {
  5818  		return SQLITE_MISUSE
  5819  	}
  5820  
  5821  	for *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)))) != 0 {
  5822  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  5823  		*(*int32)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_prepare_v2(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, *(*uintptr)(unsafe.Pointer(bp + 8)), -1, bp, bp+8)
  5824  		if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5825  			if *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  5826  				var pNew uintptr
  5827  				var z uintptr = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5828  				var n int32 = int32(libc.Xstrlen(tls, z))
  5829  				pNew = idxMalloc(tls, bp+16, int32(uint64(unsafe.Sizeof(IdxStatement{}))+uint64(n)+uint64(1)))
  5830  				if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
  5831  					(*IdxStatement)(unsafe.Pointer(pNew)).FzSql = pNew + 1*40
  5832  					libc.Xmemcpy(tls, (*IdxStatement)(unsafe.Pointer(pNew)).FzSql, z, uint64(n+1))
  5833  					(*IdxStatement)(unsafe.Pointer(pNew)).FpNext = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement
  5834  					if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5835  						(*IdxStatement)(unsafe.Pointer(pNew)).FiId = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5836  					}
  5837  					(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pNew
  5838  				}
  5839  				sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  5840  			}
  5841  		} else {
  5842  			idxDatabaseError(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv, pzErr)
  5843  		}
  5844  	}
  5845  
  5846  	if *(*int32)(unsafe.Pointer(bp + 16)) != SQLITE_OK {
  5847  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, pScanOrig)
  5848  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, pStmtOrig)
  5849  		(*sqlite3expert)(unsafe.Pointer(p)).FpScan = pScanOrig
  5850  		(*sqlite3expert)(unsafe.Pointer(p)).FpStatement = pStmtOrig
  5851  	}
  5852  
  5853  	return *(*int32)(unsafe.Pointer(bp + 16))
  5854  }
  5855  
  5856  func sqlite3_expert_analyze(tls *libc.TLS, p uintptr, pzErr uintptr) int32 {
  5857  	bp := tls.Alloc(28)
  5858  	defer tls.Free(28)
  5859  
  5860  	var pEntry uintptr
  5861  
  5862  	*(*int32)(unsafe.Pointer(bp + 24)) = idxProcessTriggers(tls, p, pzErr)
  5863  
  5864  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5865  		*(*int32)(unsafe.Pointer(bp + 24)) = idxCreateCandidates(tls, p)
  5866  	} else if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_BUSY|int32(3)<<8 {
  5867  		if pzErr != 0 {
  5868  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+1865, 0)
  5869  		}
  5870  		return *(*int32)(unsafe.Pointer(bp + 24))
  5871  	}
  5872  
  5873  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5874  		*(*int32)(unsafe.Pointer(bp + 24)) = idxPopulateStat1(tls, p, pzErr)
  5875  	}
  5876  
  5877  	for pEntry = (*sqlite3expert)(unsafe.Pointer(p)).FhIdx.FpFirst; pEntry != 0; pEntry = (*IdxHashEntry)(unsafe.Pointer(pEntry)).FpNext {
  5878  		(*sqlite3expert)(unsafe.Pointer(p)).FzCandidates = idxAppendText(tls, bp+24, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates,
  5879  			ts+1909, libc.VaList(bp, (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal,
  5880  				func() uintptr {
  5881  					if (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2 != 0 {
  5882  						return ts + 1918
  5883  					}
  5884  					return ts + 584
  5885  				}(), (*IdxHashEntry)(unsafe.Pointer(pEntry)).FzVal2))
  5886  	}
  5887  
  5888  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5889  		*(*int32)(unsafe.Pointer(bp + 24)) = idxFindIndexes(tls, p, pzErr)
  5890  	}
  5891  
  5892  	if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
  5893  		(*sqlite3expert)(unsafe.Pointer(p)).FbRun = 1
  5894  	}
  5895  	return *(*int32)(unsafe.Pointer(bp + 24))
  5896  }
  5897  
  5898  func sqlite3_expert_count(tls *libc.TLS, p uintptr) int32 {
  5899  	var nRet int32 = 0
  5900  	if (*sqlite3expert)(unsafe.Pointer(p)).FpStatement != 0 {
  5901  		nRet = (*IdxStatement)(unsafe.Pointer((*sqlite3expert)(unsafe.Pointer(p)).FpStatement)).FiId + 1
  5902  	}
  5903  	return nRet
  5904  }
  5905  
  5906  func sqlite3_expert_report(tls *libc.TLS, p uintptr, iStmt int32, eReport int32) uintptr {
  5907  	var zRet uintptr = uintptr(0)
  5908  	var pStmt uintptr
  5909  
  5910  	if (*sqlite3expert)(unsafe.Pointer(p)).FbRun == 0 {
  5911  		return uintptr(0)
  5912  	}
  5913  	for pStmt = (*sqlite3expert)(unsafe.Pointer(p)).FpStatement; pStmt != 0 && (*IdxStatement)(unsafe.Pointer(pStmt)).FiId != iStmt; pStmt = (*IdxStatement)(unsafe.Pointer(pStmt)).FpNext {
  5914  	}
  5915  	switch eReport {
  5916  	case EXPERT_REPORT_SQL:
  5917  		if pStmt != 0 {
  5918  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzSql
  5919  		}
  5920  		break
  5921  	case EXPERT_REPORT_INDEXES:
  5922  		if pStmt != 0 {
  5923  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzIdx
  5924  		}
  5925  		break
  5926  	case EXPERT_REPORT_PLAN:
  5927  		if pStmt != 0 {
  5928  			zRet = (*IdxStatement)(unsafe.Pointer(pStmt)).FzEQP
  5929  		}
  5930  		break
  5931  	case EXPERT_REPORT_CANDIDATES:
  5932  		zRet = (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates
  5933  		break
  5934  	}
  5935  	return zRet
  5936  }
  5937  
  5938  func sqlite3_expert_destroy(tls *libc.TLS, p uintptr) {
  5939  	if p != 0 {
  5940  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbm)
  5941  		sqlite3.Xsqlite3_close(tls, (*sqlite3expert)(unsafe.Pointer(p)).Fdbv)
  5942  		idxScanFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpScan, uintptr(0))
  5943  		idxStatementFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpStatement, uintptr(0))
  5944  		idxTableFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpTable)
  5945  		idxWriteFree(tls, (*sqlite3expert)(unsafe.Pointer(p)).FpWrite)
  5946  		idxHashClear(tls, p+88)
  5947  		sqlite3.Xsqlite3_free(tls, (*sqlite3expert)(unsafe.Pointer(p)).FzCandidates)
  5948  		sqlite3.Xsqlite3_free(tls, p)
  5949  	}
  5950  }
  5951  
  5952  type ClientData = uintptr
  5953  
  5954  type Tcl_WideInt = int64
  5955  type Tcl_WideUInt = uint64
  5956  
  5957  type stat = struct {
  5958  	Fst_mode  mode_t
  5959  	Fst_dev   dev_t
  5960  	Fst_ino   ino_t
  5961  	Fst_nlink nlink_t
  5962  	Fst_uid   uid_t
  5963  	Fst_gid   gid_t
  5964  	Fst_rdev  dev_t
  5965  	Fst_atim  struct {
  5966  		Ftv_sec  time_t
  5967  		Ftv_nsec int64
  5968  	}
  5969  	Fst_mtim struct {
  5970  		Ftv_sec  time_t
  5971  		Ftv_nsec int64
  5972  	}
  5973  	Fst_ctim struct {
  5974  		Ftv_sec  time_t
  5975  		Ftv_nsec int64
  5976  	}
  5977  	Fst_size       off_t
  5978  	Fst_blocks     blkcnt_t
  5979  	Fst_blksize    blksize_t
  5980  	Fst_flags      u_int32_t
  5981  	Fst_gen        u_int32_t
  5982  	F__ccgo_pad1   [4]byte
  5983  	F__st_birthtim struct {
  5984  		Ftv_sec  time_t
  5985  		Ftv_nsec int64
  5986  	}
  5987  }
  5988  
  5989  type Tcl_Interp1 = struct {
  5990  	FresultDontUse    uintptr
  5991  	FfreeProcDontUse  uintptr
  5992  	FerrorLineDontUse int32
  5993  	F__ccgo_pad1      [4]byte
  5994  }
  5995  
  5996  type Tcl_Interp = Tcl_Interp1
  5997  
  5998  type Tcl_AsyncHandler = uintptr
  5999  type Tcl_Channel = uintptr
  6000  type Tcl_ChannelTypeVersion = uintptr
  6001  type Tcl_Command = uintptr
  6002  type Tcl_Condition = uintptr
  6003  type Tcl_Dict = uintptr
  6004  type Tcl_EncodingState = uintptr
  6005  type Tcl_Encoding = uintptr
  6006  type Tcl_Event1 = struct {
  6007  	Fproc    uintptr
  6008  	FnextPtr uintptr
  6009  }
  6010  
  6011  type Tcl_Event = Tcl_Event1
  6012  type Tcl_InterpState = uintptr
  6013  type Tcl_LoadHandle = uintptr
  6014  type Tcl_Mutex = uintptr
  6015  type Tcl_Pid = uintptr
  6016  type Tcl_RegExp = uintptr
  6017  type Tcl_ThreadDataKey = uintptr
  6018  type Tcl_ThreadId = uintptr
  6019  type Tcl_TimerToken = uintptr
  6020  type Tcl_Trace = uintptr
  6021  type Tcl_Var = uintptr
  6022  type Tcl_ZlibStream = uintptr
  6023  
  6024  type Tcl_RegExpIndices1 = struct {
  6025  	Fstart int64
  6026  	Fend   int64
  6027  }
  6028  
  6029  type Tcl_RegExpIndices = Tcl_RegExpIndices1
  6030  
  6031  type Tcl_RegExpInfo1 = struct {
  6032  	Fnsubs       int32
  6033  	F__ccgo_pad1 [4]byte
  6034  	Fmatches     uintptr
  6035  	FextendStart int64
  6036  	Freserved    int64
  6037  }
  6038  
  6039  type Tcl_RegExpInfo = Tcl_RegExpInfo1
  6040  
  6041  type Tcl_Stat_ = uintptr
  6042  type Tcl_OldStat_ = uintptr
  6043  
  6044  type Tcl_ValueType = uint32
  6045  
  6046  type Tcl_Value1 = struct {
  6047  	Ftype        Tcl_ValueType
  6048  	F__ccgo_pad1 [4]byte
  6049  	FintValue    int64
  6050  	FdoubleValue float64
  6051  	FwideValue   Tcl_WideInt
  6052  }
  6053  
  6054  type Tcl_Value = Tcl_Value1
  6055  
  6056  type Tcl_Obj1 = struct {
  6057  	FrefCount    int32
  6058  	F__ccgo_pad1 [4]byte
  6059  	Fbytes       uintptr
  6060  	Flength      int32
  6061  	F__ccgo_pad2 [4]byte
  6062  	FtypePtr     uintptr
  6063  	FinternalRep struct {
  6064  		FlongValue   int64
  6065  		F__ccgo_pad1 [8]byte
  6066  	}
  6067  }
  6068  
  6069  type Tcl_ObjType1 = struct {
  6070  	Fname             uintptr
  6071  	FfreeIntRepProc   uintptr
  6072  	FdupIntRepProc    uintptr
  6073  	FupdateStringProc uintptr
  6074  	FsetFromAnyProc   uintptr
  6075  }
  6076  
  6077  type Tcl_ObjType = Tcl_ObjType1
  6078  
  6079  type Tcl_Obj = Tcl_Obj1
  6080  
  6081  type Tcl_SavedResult1 = struct {
  6082  	Fresult       uintptr
  6083  	FfreeProc     uintptr
  6084  	FobjResultPtr uintptr
  6085  	FappendResult uintptr
  6086  	FappendAvl    int32
  6087  	FappendUsed   int32
  6088  	FresultSpace  [201]int8
  6089  	F__ccgo_pad1  [7]byte
  6090  }
  6091  
  6092  type Tcl_SavedResult = Tcl_SavedResult1
  6093  
  6094  type Tcl_Namespace1 = struct {
  6095  	Fname       uintptr
  6096  	FfullName   uintptr
  6097  	FclientData ClientData
  6098  	FdeleteProc uintptr
  6099  	FparentPtr  uintptr
  6100  }
  6101  
  6102  type Tcl_Namespace = Tcl_Namespace1
  6103  
  6104  type Tcl_CallFrame1 = struct {
  6105  	FnsPtr       uintptr
  6106  	Fdummy1      int32
  6107  	Fdummy2      int32
  6108  	Fdummy3      uintptr
  6109  	Fdummy4      uintptr
  6110  	Fdummy5      uintptr
  6111  	Fdummy6      int32
  6112  	F__ccgo_pad1 [4]byte
  6113  	Fdummy7      uintptr
  6114  	Fdummy8      uintptr
  6115  	Fdummy9      int32
  6116  	F__ccgo_pad2 [4]byte
  6117  	Fdummy10     uintptr
  6118  	Fdummy11     uintptr
  6119  	Fdummy12     uintptr
  6120  	Fdummy13     uintptr
  6121  }
  6122  
  6123  type Tcl_CallFrame = Tcl_CallFrame1
  6124  
  6125  type Tcl_CmdInfo1 = struct {
  6126  	FisNativeObjectProc int32
  6127  	F__ccgo_pad1        [4]byte
  6128  	FobjProc            uintptr
  6129  	FobjClientData      ClientData
  6130  	Fproc               uintptr
  6131  	FclientData         ClientData
  6132  	FdeleteProc         uintptr
  6133  	FdeleteData         ClientData
  6134  	FnamespacePtr       uintptr
  6135  }
  6136  
  6137  type Tcl_CmdInfo = Tcl_CmdInfo1
  6138  
  6139  type Tcl_DString1 = struct {
  6140  	Fstring      uintptr
  6141  	Flength      int32
  6142  	FspaceAvl    int32
  6143  	FstaticSpace [200]int8
  6144  }
  6145  
  6146  type Tcl_DString = Tcl_DString1
  6147  
  6148  type Tcl_HashKeyType1 = struct {
  6149  	Fversion         int32
  6150  	Fflags           int32
  6151  	FhashKeyProc     uintptr
  6152  	FcompareKeysProc uintptr
  6153  	FallocEntryProc  uintptr
  6154  	FfreeEntryProc   uintptr
  6155  }
  6156  
  6157  type Tcl_HashKeyType = Tcl_HashKeyType1
  6158  type Tcl_HashTable1 = struct {
  6159  	Fbuckets       uintptr
  6160  	FstaticBuckets [4]uintptr
  6161  	FnumBuckets    int32
  6162  	FnumEntries    int32
  6163  	FrebuildSize   int32
  6164  	FdownShift     int32
  6165  	Fmask          int32
  6166  	FkeyType       int32
  6167  	FfindProc      uintptr
  6168  	FcreateProc    uintptr
  6169  	FtypePtr       uintptr
  6170  }
  6171  
  6172  type Tcl_HashTable = Tcl_HashTable1
  6173  type Tcl_HashEntry1 = struct {
  6174  	FnextPtr    uintptr
  6175  	FtablePtr   uintptr
  6176  	Fhash       uintptr
  6177  	FclientData ClientData
  6178  	Fkey        struct{ FoneWordValue uintptr }
  6179  }
  6180  
  6181  type Tcl_HashEntry = Tcl_HashEntry1
  6182  
  6183  type Tcl_HashSearch1 = struct {
  6184  	FtablePtr     uintptr
  6185  	FnextIndex    int32
  6186  	F__ccgo_pad1  [4]byte
  6187  	FnextEntryPtr uintptr
  6188  }
  6189  
  6190  type Tcl_HashSearch = Tcl_HashSearch1
  6191  
  6192  type Tcl_DictSearch = struct {
  6193  	Fnext          uintptr
  6194  	Fepoch         int32
  6195  	F__ccgo_pad1   [4]byte
  6196  	FdictionaryPtr Tcl_Dict
  6197  }
  6198  
  6199  type Tcl_QueuePosition = uint32
  6200  
  6201  type Tcl_Time1 = struct {
  6202  	Fsec  int64
  6203  	Fusec int64
  6204  }
  6205  
  6206  type Tcl_Time = Tcl_Time1
  6207  
  6208  type Tcl_ChannelType1 = struct {
  6209  	FtypeName         uintptr
  6210  	Fversion          Tcl_ChannelTypeVersion
  6211  	FcloseProc        uintptr
  6212  	FinputProc        uintptr
  6213  	FoutputProc       uintptr
  6214  	FseekProc         uintptr
  6215  	FsetOptionProc    uintptr
  6216  	FgetOptionProc    uintptr
  6217  	FwatchProc        uintptr
  6218  	FgetHandleProc    uintptr
  6219  	Fclose2Proc       uintptr
  6220  	FblockModeProc    uintptr
  6221  	FflushProc        uintptr
  6222  	FhandlerProc      uintptr
  6223  	FwideSeekProc     uintptr
  6224  	FthreadActionProc uintptr
  6225  	FtruncateProc     uintptr
  6226  }
  6227  
  6228  type Tcl_ChannelType = Tcl_ChannelType1
  6229  
  6230  type Tcl_PathType = uint32
  6231  
  6232  type Tcl_GlobTypeData1 = struct {
  6233  	Ftype       int32
  6234  	Fperm       int32
  6235  	FmacType    uintptr
  6236  	FmacCreator uintptr
  6237  }
  6238  
  6239  type Tcl_GlobTypeData = Tcl_GlobTypeData1
  6240  
  6241  type utimbuf = struct {
  6242  	Factime  time_t
  6243  	Fmodtime time_t
  6244  }
  6245  
  6246  type Tcl_FSVersion = uintptr
  6247  
  6248  type Tcl_Filesystem1 = struct {
  6249  	FtypeName                 uintptr
  6250  	FstructureLength          int32
  6251  	F__ccgo_pad1              [4]byte
  6252  	Fversion                  Tcl_FSVersion
  6253  	FpathInFilesystemProc     uintptr
  6254  	FdupInternalRepProc       uintptr
  6255  	FfreeInternalRepProc      uintptr
  6256  	FinternalToNormalizedProc uintptr
  6257  	FcreateInternalRepProc    uintptr
  6258  	FnormalizePathProc        uintptr
  6259  	FfilesystemPathTypeProc   uintptr
  6260  	FfilesystemSeparatorProc  uintptr
  6261  	FstatProc                 uintptr
  6262  	FaccessProc               uintptr
  6263  	FopenFileChannelProc      uintptr
  6264  	FmatchInDirectoryProc     uintptr
  6265  	FutimeProc                uintptr
  6266  	FlinkProc                 uintptr
  6267  	FlistVolumesProc          uintptr
  6268  	FfileAttrStringsProc      uintptr
  6269  	FfileAttrsGetProc         uintptr
  6270  	FfileAttrsSetProc         uintptr
  6271  	FcreateDirectoryProc      uintptr
  6272  	FremoveDirectoryProc      uintptr
  6273  	FdeleteFileProc           uintptr
  6274  	FcopyFileProc             uintptr
  6275  	FrenameFileProc           uintptr
  6276  	FcopyDirectoryProc        uintptr
  6277  	FlstatProc                uintptr
  6278  	FloadFileProc             uintptr
  6279  	FgetCwdProc               uintptr
  6280  	FchdirProc                uintptr
  6281  }
  6282  
  6283  type Tcl_Filesystem = Tcl_Filesystem1
  6284  
  6285  type Tcl_NotifierProcs1 = struct {
  6286  	FsetTimerProc          uintptr
  6287  	FwaitForEventProc      uintptr
  6288  	FcreateFileHandlerProc uintptr
  6289  	FdeleteFileHandlerProc uintptr
  6290  	FinitNotifierProc      uintptr
  6291  	FfinalizeNotifierProc  uintptr
  6292  	FalertNotifierProc     uintptr
  6293  	FserviceModeHookProc   uintptr
  6294  }
  6295  
  6296  type Tcl_NotifierProcs = Tcl_NotifierProcs1
  6297  
  6298  type Tcl_Token1 = struct {
  6299  	Ftype          int32
  6300  	F__ccgo_pad1   [4]byte
  6301  	Fstart         uintptr
  6302  	Fsize          int32
  6303  	FnumComponents int32
  6304  }
  6305  
  6306  type Tcl_Token = Tcl_Token1
  6307  
  6308  type Tcl_Parse1 = struct {
  6309  	FcommentStart    uintptr
  6310  	FcommentSize     int32
  6311  	F__ccgo_pad1     [4]byte
  6312  	FcommandStart    uintptr
  6313  	FcommandSize     int32
  6314  	FnumWords        int32
  6315  	FtokenPtr        uintptr
  6316  	FnumTokens       int32
  6317  	FtokensAvailable int32
  6318  	FerrorType       int32
  6319  	F__ccgo_pad2     [4]byte
  6320  	Fstring          uintptr
  6321  	Fend             uintptr
  6322  	Finterp          uintptr
  6323  	Fterm            uintptr
  6324  	Fincomplete      int32
  6325  	F__ccgo_pad3     [4]byte
  6326  	FstaticTokens    [20]Tcl_Token
  6327  }
  6328  
  6329  type Tcl_Parse = Tcl_Parse1
  6330  
  6331  type Tcl_EncodingType1 = struct {
  6332  	FencodingName uintptr
  6333  	FtoUtfProc    uintptr
  6334  	FfromUtfProc  uintptr
  6335  	FfreeProc     uintptr
  6336  	FclientData   ClientData
  6337  	FnullSize     int32
  6338  	F__ccgo_pad1  [4]byte
  6339  }
  6340  
  6341  type Tcl_EncodingType = Tcl_EncodingType1
  6342  
  6343  type Tcl_UniChar = uint16
  6344  
  6345  type Tcl_Config1 = struct {
  6346  	Fkey   uintptr
  6347  	Fvalue uintptr
  6348  }
  6349  
  6350  type Tcl_Config = Tcl_Config1
  6351  type mp_digit = uint32
  6352  
  6353  type Tcl_ArgvInfo = struct {
  6354  	Ftype        int32
  6355  	F__ccgo_pad1 [4]byte
  6356  	FkeyStr      uintptr
  6357  	FsrcPtr      uintptr
  6358  	FdstPtr      uintptr
  6359  	FhelpStr     uintptr
  6360  	FclientData  ClientData
  6361  }
  6362  
  6363  type TclPlatStubs1 = struct {
  6364  	Fmagic       int32
  6365  	F__ccgo_pad1 [4]byte
  6366  	Fhooks       uintptr
  6367  }
  6368  
  6369  type TclStubHooks = struct {
  6370  	FtclPlatStubs    uintptr
  6371  	FtclIntStubs     uintptr
  6372  	FtclIntPlatStubs uintptr
  6373  }
  6374  
  6375  type TclStubs1 = struct {
  6376  	Fmagic                                  int32
  6377  	F__ccgo_pad1                            [4]byte
  6378  	Fhooks                                  uintptr
  6379  	Ftcl_PkgProvideEx                       uintptr
  6380  	Ftcl_PkgRequireEx                       uintptr
  6381  	Ftcl_Panic                              uintptr
  6382  	Ftcl_Alloc                              uintptr
  6383  	Ftcl_Free                               uintptr
  6384  	Ftcl_Realloc                            uintptr
  6385  	Ftcl_DbCkalloc                          uintptr
  6386  	Ftcl_DbCkfree                           uintptr
  6387  	Ftcl_DbCkrealloc                        uintptr
  6388  	Ftcl_CreateFileHandler                  uintptr
  6389  	Ftcl_DeleteFileHandler                  uintptr
  6390  	Ftcl_SetTimer                           uintptr
  6391  	Ftcl_Sleep                              uintptr
  6392  	Ftcl_WaitForEvent                       uintptr
  6393  	Ftcl_AppendAllObjTypes                  uintptr
  6394  	Ftcl_AppendStringsToObj                 uintptr
  6395  	Ftcl_AppendToObj                        uintptr
  6396  	Ftcl_ConcatObj                          uintptr
  6397  	Ftcl_ConvertToType                      uintptr
  6398  	Ftcl_DbDecrRefCount                     uintptr
  6399  	Ftcl_DbIncrRefCount                     uintptr
  6400  	Ftcl_DbIsShared                         uintptr
  6401  	Ftcl_DbNewBooleanObj                    uintptr
  6402  	Ftcl_DbNewByteArrayObj                  uintptr
  6403  	Ftcl_DbNewDoubleObj                     uintptr
  6404  	Ftcl_DbNewListObj                       uintptr
  6405  	Ftcl_DbNewLongObj                       uintptr
  6406  	Ftcl_DbNewObj                           uintptr
  6407  	Ftcl_DbNewStringObj                     uintptr
  6408  	Ftcl_DuplicateObj                       uintptr
  6409  	FtclFreeObj                             uintptr
  6410  	Ftcl_GetBoolean                         uintptr
  6411  	Ftcl_GetBooleanFromObj                  uintptr
  6412  	Ftcl_GetByteArrayFromObj                uintptr
  6413  	Ftcl_GetDouble                          uintptr
  6414  	Ftcl_GetDoubleFromObj                   uintptr
  6415  	Ftcl_GetIndexFromObj                    uintptr
  6416  	Ftcl_GetInt                             uintptr
  6417  	Ftcl_GetIntFromObj                      uintptr
  6418  	Ftcl_GetLongFromObj                     uintptr
  6419  	Ftcl_GetObjType                         uintptr
  6420  	Ftcl_GetStringFromObj                   uintptr
  6421  	Ftcl_InvalidateStringRep                uintptr
  6422  	Ftcl_ListObjAppendList                  uintptr
  6423  	Ftcl_ListObjAppendElement               uintptr
  6424  	Ftcl_ListObjGetElements                 uintptr
  6425  	Ftcl_ListObjIndex                       uintptr
  6426  	Ftcl_ListObjLength                      uintptr
  6427  	Ftcl_ListObjReplace                     uintptr
  6428  	Ftcl_NewBooleanObj                      uintptr
  6429  	Ftcl_NewByteArrayObj                    uintptr
  6430  	Ftcl_NewDoubleObj                       uintptr
  6431  	Ftcl_NewIntObj                          uintptr
  6432  	Ftcl_NewListObj                         uintptr
  6433  	Ftcl_NewLongObj                         uintptr
  6434  	Ftcl_NewObj                             uintptr
  6435  	Ftcl_NewStringObj                       uintptr
  6436  	Ftcl_SetBooleanObj                      uintptr
  6437  	Ftcl_SetByteArrayLength                 uintptr
  6438  	Ftcl_SetByteArrayObj                    uintptr
  6439  	Ftcl_SetDoubleObj                       uintptr
  6440  	Ftcl_SetIntObj                          uintptr
  6441  	Ftcl_SetListObj                         uintptr
  6442  	Ftcl_SetLongObj                         uintptr
  6443  	Ftcl_SetObjLength                       uintptr
  6444  	Ftcl_SetStringObj                       uintptr
  6445  	Ftcl_AddErrorInfo                       uintptr
  6446  	Ftcl_AddObjErrorInfo                    uintptr
  6447  	Ftcl_AllowExceptions                    uintptr
  6448  	Ftcl_AppendElement                      uintptr
  6449  	Ftcl_AppendResult                       uintptr
  6450  	Ftcl_AsyncCreate                        uintptr
  6451  	Ftcl_AsyncDelete                        uintptr
  6452  	Ftcl_AsyncInvoke                        uintptr
  6453  	Ftcl_AsyncMark                          uintptr
  6454  	Ftcl_AsyncReady                         uintptr
  6455  	Ftcl_BackgroundError                    uintptr
  6456  	Ftcl_Backslash                          uintptr
  6457  	Ftcl_BadChannelOption                   uintptr
  6458  	Ftcl_CallWhenDeleted                    uintptr
  6459  	Ftcl_CancelIdleCall                     uintptr
  6460  	Ftcl_Close                              uintptr
  6461  	Ftcl_CommandComplete                    uintptr
  6462  	Ftcl_Concat                             uintptr
  6463  	Ftcl_ConvertElement                     uintptr
  6464  	Ftcl_ConvertCountedElement              uintptr
  6465  	Ftcl_CreateAlias                        uintptr
  6466  	Ftcl_CreateAliasObj                     uintptr
  6467  	Ftcl_CreateChannel                      uintptr
  6468  	Ftcl_CreateChannelHandler               uintptr
  6469  	Ftcl_CreateCloseHandler                 uintptr
  6470  	Ftcl_CreateCommand                      uintptr
  6471  	Ftcl_CreateEventSource                  uintptr
  6472  	Ftcl_CreateExitHandler                  uintptr
  6473  	Ftcl_CreateInterp                       uintptr
  6474  	Ftcl_CreateMathFunc                     uintptr
  6475  	Ftcl_CreateObjCommand                   uintptr
  6476  	Ftcl_CreateSlave                        uintptr
  6477  	Ftcl_CreateTimerHandler                 uintptr
  6478  	Ftcl_CreateTrace                        uintptr
  6479  	Ftcl_DeleteAssocData                    uintptr
  6480  	Ftcl_DeleteChannelHandler               uintptr
  6481  	Ftcl_DeleteCloseHandler                 uintptr
  6482  	Ftcl_DeleteCommand                      uintptr
  6483  	Ftcl_DeleteCommandFromToken             uintptr
  6484  	Ftcl_DeleteEvents                       uintptr
  6485  	Ftcl_DeleteEventSource                  uintptr
  6486  	Ftcl_DeleteExitHandler                  uintptr
  6487  	Ftcl_DeleteHashEntry                    uintptr
  6488  	Ftcl_DeleteHashTable                    uintptr
  6489  	Ftcl_DeleteInterp                       uintptr
  6490  	Ftcl_DetachPids                         uintptr
  6491  	Ftcl_DeleteTimerHandler                 uintptr
  6492  	Ftcl_DeleteTrace                        uintptr
  6493  	Ftcl_DontCallWhenDeleted                uintptr
  6494  	Ftcl_DoOneEvent                         uintptr
  6495  	Ftcl_DoWhenIdle                         uintptr
  6496  	Ftcl_DStringAppend                      uintptr
  6497  	Ftcl_DStringAppendElement               uintptr
  6498  	Ftcl_DStringEndSublist                  uintptr
  6499  	Ftcl_DStringFree                        uintptr
  6500  	Ftcl_DStringGetResult                   uintptr
  6501  	Ftcl_DStringInit                        uintptr
  6502  	Ftcl_DStringResult                      uintptr
  6503  	Ftcl_DStringSetLength                   uintptr
  6504  	Ftcl_DStringStartSublist                uintptr
  6505  	Ftcl_Eof                                uintptr
  6506  	Ftcl_ErrnoId                            uintptr
  6507  	Ftcl_ErrnoMsg                           uintptr
  6508  	Ftcl_Eval                               uintptr
  6509  	Ftcl_EvalFile                           uintptr
  6510  	Ftcl_EvalObj                            uintptr
  6511  	Ftcl_EventuallyFree                     uintptr
  6512  	Ftcl_Exit                               uintptr
  6513  	Ftcl_ExposeCommand                      uintptr
  6514  	Ftcl_ExprBoolean                        uintptr
  6515  	Ftcl_ExprBooleanObj                     uintptr
  6516  	Ftcl_ExprDouble                         uintptr
  6517  	Ftcl_ExprDoubleObj                      uintptr
  6518  	Ftcl_ExprLong                           uintptr
  6519  	Ftcl_ExprLongObj                        uintptr
  6520  	Ftcl_ExprObj                            uintptr
  6521  	Ftcl_ExprString                         uintptr
  6522  	Ftcl_Finalize                           uintptr
  6523  	Ftcl_FindExecutable                     uintptr
  6524  	Ftcl_FirstHashEntry                     uintptr
  6525  	Ftcl_Flush                              uintptr
  6526  	Ftcl_FreeResult                         uintptr
  6527  	Ftcl_GetAlias                           uintptr
  6528  	Ftcl_GetAliasObj                        uintptr
  6529  	Ftcl_GetAssocData                       uintptr
  6530  	Ftcl_GetChannel                         uintptr
  6531  	Ftcl_GetChannelBufferSize               uintptr
  6532  	Ftcl_GetChannelHandle                   uintptr
  6533  	Ftcl_GetChannelInstanceData             uintptr
  6534  	Ftcl_GetChannelMode                     uintptr
  6535  	Ftcl_GetChannelName                     uintptr
  6536  	Ftcl_GetChannelOption                   uintptr
  6537  	Ftcl_GetChannelType                     uintptr
  6538  	Ftcl_GetCommandInfo                     uintptr
  6539  	Ftcl_GetCommandName                     uintptr
  6540  	Ftcl_GetErrno                           uintptr
  6541  	Ftcl_GetHostName                        uintptr
  6542  	Ftcl_GetInterpPath                      uintptr
  6543  	Ftcl_GetMaster                          uintptr
  6544  	Ftcl_GetNameOfExecutable                uintptr
  6545  	Ftcl_GetObjResult                       uintptr
  6546  	Ftcl_GetOpenFile                        uintptr
  6547  	Ftcl_GetPathType                        uintptr
  6548  	Ftcl_Gets                               uintptr
  6549  	Ftcl_GetsObj                            uintptr
  6550  	Ftcl_GetServiceMode                     uintptr
  6551  	Ftcl_GetSlave                           uintptr
  6552  	Ftcl_GetStdChannel                      uintptr
  6553  	Ftcl_GetStringResult                    uintptr
  6554  	Ftcl_GetVar                             uintptr
  6555  	Ftcl_GetVar2                            uintptr
  6556  	Ftcl_GlobalEval                         uintptr
  6557  	Ftcl_GlobalEvalObj                      uintptr
  6558  	Ftcl_HideCommand                        uintptr
  6559  	Ftcl_Init                               uintptr
  6560  	Ftcl_InitHashTable                      uintptr
  6561  	Ftcl_InputBlocked                       uintptr
  6562  	Ftcl_InputBuffered                      uintptr
  6563  	Ftcl_InterpDeleted                      uintptr
  6564  	Ftcl_IsSafe                             uintptr
  6565  	Ftcl_JoinPath                           uintptr
  6566  	Ftcl_LinkVar                            uintptr
  6567  	Freserved188                            uintptr
  6568  	Ftcl_MakeFileChannel                    uintptr
  6569  	Ftcl_MakeSafe                           uintptr
  6570  	Ftcl_MakeTcpClientChannel               uintptr
  6571  	Ftcl_Merge                              uintptr
  6572  	Ftcl_NextHashEntry                      uintptr
  6573  	Ftcl_NotifyChannel                      uintptr
  6574  	Ftcl_ObjGetVar2                         uintptr
  6575  	Ftcl_ObjSetVar2                         uintptr
  6576  	Ftcl_OpenCommandChannel                 uintptr
  6577  	Ftcl_OpenFileChannel                    uintptr
  6578  	Ftcl_OpenTcpClient                      uintptr
  6579  	Ftcl_OpenTcpServer                      uintptr
  6580  	Ftcl_Preserve                           uintptr
  6581  	Ftcl_PrintDouble                        uintptr
  6582  	Ftcl_PutEnv                             uintptr
  6583  	Ftcl_PosixError                         uintptr
  6584  	Ftcl_QueueEvent                         uintptr
  6585  	Ftcl_Read                               uintptr
  6586  	Ftcl_ReapDetachedProcs                  uintptr
  6587  	Ftcl_RecordAndEval                      uintptr
  6588  	Ftcl_RecordAndEvalObj                   uintptr
  6589  	Ftcl_RegisterChannel                    uintptr
  6590  	Ftcl_RegisterObjType                    uintptr
  6591  	Ftcl_RegExpCompile                      uintptr
  6592  	Ftcl_RegExpExec                         uintptr
  6593  	Ftcl_RegExpMatch                        uintptr
  6594  	Ftcl_RegExpRange                        uintptr
  6595  	Ftcl_Release                            uintptr
  6596  	Ftcl_ResetResult                        uintptr
  6597  	Ftcl_ScanElement                        uintptr
  6598  	Ftcl_ScanCountedElement                 uintptr
  6599  	Ftcl_SeekOld                            uintptr
  6600  	Ftcl_ServiceAll                         uintptr
  6601  	Ftcl_ServiceEvent                       uintptr
  6602  	Ftcl_SetAssocData                       uintptr
  6603  	Ftcl_SetChannelBufferSize               uintptr
  6604  	Ftcl_SetChannelOption                   uintptr
  6605  	Ftcl_SetCommandInfo                     uintptr
  6606  	Ftcl_SetErrno                           uintptr
  6607  	Ftcl_SetErrorCode                       uintptr
  6608  	Ftcl_SetMaxBlockTime                    uintptr
  6609  	Ftcl_SetPanicProc                       uintptr
  6610  	Ftcl_SetRecursionLimit                  uintptr
  6611  	Ftcl_SetResult                          uintptr
  6612  	Ftcl_SetServiceMode                     uintptr
  6613  	Ftcl_SetObjErrorCode                    uintptr
  6614  	Ftcl_SetObjResult                       uintptr
  6615  	Ftcl_SetStdChannel                      uintptr
  6616  	Ftcl_SetVar                             uintptr
  6617  	Ftcl_SetVar2                            uintptr
  6618  	Ftcl_SignalId                           uintptr
  6619  	Ftcl_SignalMsg                          uintptr
  6620  	Ftcl_SourceRCFile                       uintptr
  6621  	Ftcl_SplitList                          uintptr
  6622  	Ftcl_SplitPath                          uintptr
  6623  	Ftcl_StaticPackage                      uintptr
  6624  	Ftcl_StringMatch                        uintptr
  6625  	Ftcl_TellOld                            uintptr
  6626  	Ftcl_TraceVar                           uintptr
  6627  	Ftcl_TraceVar2                          uintptr
  6628  	Ftcl_TranslateFileName                  uintptr
  6629  	Ftcl_Ungets                             uintptr
  6630  	Ftcl_UnlinkVar                          uintptr
  6631  	Ftcl_UnregisterChannel                  uintptr
  6632  	Ftcl_UnsetVar                           uintptr
  6633  	Ftcl_UnsetVar2                          uintptr
  6634  	Ftcl_UntraceVar                         uintptr
  6635  	Ftcl_UntraceVar2                        uintptr
  6636  	Ftcl_UpdateLinkedVar                    uintptr
  6637  	Ftcl_UpVar                              uintptr
  6638  	Ftcl_UpVar2                             uintptr
  6639  	Ftcl_VarEval                            uintptr
  6640  	Ftcl_VarTraceInfo                       uintptr
  6641  	Ftcl_VarTraceInfo2                      uintptr
  6642  	Ftcl_Write                              uintptr
  6643  	Ftcl_WrongNumArgs                       uintptr
  6644  	Ftcl_DumpActiveMemory                   uintptr
  6645  	Ftcl_ValidateAllMemory                  uintptr
  6646  	Ftcl_AppendResultVA                     uintptr
  6647  	Ftcl_AppendStringsToObjVA               uintptr
  6648  	Ftcl_HashStats                          uintptr
  6649  	Ftcl_ParseVar                           uintptr
  6650  	Ftcl_PkgPresent                         uintptr
  6651  	Ftcl_PkgPresentEx                       uintptr
  6652  	Ftcl_PkgProvide                         uintptr
  6653  	Ftcl_PkgRequire                         uintptr
  6654  	Ftcl_SetErrorCodeVA                     uintptr
  6655  	Ftcl_VarEvalVA                          uintptr
  6656  	Ftcl_WaitPid                            uintptr
  6657  	Ftcl_PanicVA                            uintptr
  6658  	Ftcl_GetVersion                         uintptr
  6659  	Ftcl_InitMemory                         uintptr
  6660  	Ftcl_StackChannel                       uintptr
  6661  	Ftcl_UnstackChannel                     uintptr
  6662  	Ftcl_GetStackedChannel                  uintptr
  6663  	Ftcl_SetMainLoop                        uintptr
  6664  	Freserved285                            uintptr
  6665  	Ftcl_AppendObjToObj                     uintptr
  6666  	Ftcl_CreateEncoding                     uintptr
  6667  	Ftcl_CreateThreadExitHandler            uintptr
  6668  	Ftcl_DeleteThreadExitHandler            uintptr
  6669  	Ftcl_DiscardResult                      uintptr
  6670  	Ftcl_EvalEx                             uintptr
  6671  	Ftcl_EvalObjv                           uintptr
  6672  	Ftcl_EvalObjEx                          uintptr
  6673  	Ftcl_ExitThread                         uintptr
  6674  	Ftcl_ExternalToUtf                      uintptr
  6675  	Ftcl_ExternalToUtfDString               uintptr
  6676  	Ftcl_FinalizeThread                     uintptr
  6677  	Ftcl_FinalizeNotifier                   uintptr
  6678  	Ftcl_FreeEncoding                       uintptr
  6679  	Ftcl_GetCurrentThread                   uintptr
  6680  	Ftcl_GetEncoding                        uintptr
  6681  	Ftcl_GetEncodingName                    uintptr
  6682  	Ftcl_GetEncodingNames                   uintptr
  6683  	Ftcl_GetIndexFromObjStruct              uintptr
  6684  	Ftcl_GetThreadData                      uintptr
  6685  	Ftcl_GetVar2Ex                          uintptr
  6686  	Ftcl_InitNotifier                       uintptr
  6687  	Ftcl_MutexLock                          uintptr
  6688  	Ftcl_MutexUnlock                        uintptr
  6689  	Ftcl_ConditionNotify                    uintptr
  6690  	Ftcl_ConditionWait                      uintptr
  6691  	Ftcl_NumUtfChars                        uintptr
  6692  	Ftcl_ReadChars                          uintptr
  6693  	Ftcl_RestoreResult                      uintptr
  6694  	Ftcl_SaveResult                         uintptr
  6695  	Ftcl_SetSystemEncoding                  uintptr
  6696  	Ftcl_SetVar2Ex                          uintptr
  6697  	Ftcl_ThreadAlert                        uintptr
  6698  	Ftcl_ThreadQueueEvent                   uintptr
  6699  	Ftcl_UniCharAtIndex                     uintptr
  6700  	Ftcl_UniCharToLower                     uintptr
  6701  	Ftcl_UniCharToTitle                     uintptr
  6702  	Ftcl_UniCharToUpper                     uintptr
  6703  	Ftcl_UniCharToUtf                       uintptr
  6704  	Ftcl_UtfAtIndex                         uintptr
  6705  	Ftcl_UtfCharComplete                    uintptr
  6706  	Ftcl_UtfBackslash                       uintptr
  6707  	Ftcl_UtfFindFirst                       uintptr
  6708  	Ftcl_UtfFindLast                        uintptr
  6709  	Ftcl_UtfNext                            uintptr
  6710  	Ftcl_UtfPrev                            uintptr
  6711  	Ftcl_UtfToExternal                      uintptr
  6712  	Ftcl_UtfToExternalDString               uintptr
  6713  	Ftcl_UtfToLower                         uintptr
  6714  	Ftcl_UtfToTitle                         uintptr
  6715  	Ftcl_UtfToUniChar                       uintptr
  6716  	Ftcl_UtfToUpper                         uintptr
  6717  	Ftcl_WriteChars                         uintptr
  6718  	Ftcl_WriteObj                           uintptr
  6719  	Ftcl_GetString                          uintptr
  6720  	Ftcl_GetDefaultEncodingDir              uintptr
  6721  	Ftcl_SetDefaultEncodingDir              uintptr
  6722  	Ftcl_AlertNotifier                      uintptr
  6723  	Ftcl_ServiceModeHook                    uintptr
  6724  	Ftcl_UniCharIsAlnum                     uintptr
  6725  	Ftcl_UniCharIsAlpha                     uintptr
  6726  	Ftcl_UniCharIsDigit                     uintptr
  6727  	Ftcl_UniCharIsLower                     uintptr
  6728  	Ftcl_UniCharIsSpace                     uintptr
  6729  	Ftcl_UniCharIsUpper                     uintptr
  6730  	Ftcl_UniCharIsWordChar                  uintptr
  6731  	Ftcl_UniCharLen                         uintptr
  6732  	Ftcl_UniCharNcmp                        uintptr
  6733  	Ftcl_UniCharToUtfDString                uintptr
  6734  	Ftcl_UtfToUniCharDString                uintptr
  6735  	Ftcl_GetRegExpFromObj                   uintptr
  6736  	Ftcl_EvalTokens                         uintptr
  6737  	Ftcl_FreeParse                          uintptr
  6738  	Ftcl_LogCommandInfo                     uintptr
  6739  	Ftcl_ParseBraces                        uintptr
  6740  	Ftcl_ParseCommand                       uintptr
  6741  	Ftcl_ParseExpr                          uintptr
  6742  	Ftcl_ParseQuotedString                  uintptr
  6743  	Ftcl_ParseVarName                       uintptr
  6744  	Ftcl_GetCwd                             uintptr
  6745  	Ftcl_Chdir                              uintptr
  6746  	Ftcl_Access                             uintptr
  6747  	Ftcl_Stat                               uintptr
  6748  	Ftcl_UtfNcmp                            uintptr
  6749  	Ftcl_UtfNcasecmp                        uintptr
  6750  	Ftcl_StringCaseMatch                    uintptr
  6751  	Ftcl_UniCharIsControl                   uintptr
  6752  	Ftcl_UniCharIsGraph                     uintptr
  6753  	Ftcl_UniCharIsPrint                     uintptr
  6754  	Ftcl_UniCharIsPunct                     uintptr
  6755  	Ftcl_RegExpExecObj                      uintptr
  6756  	Ftcl_RegExpGetInfo                      uintptr
  6757  	Ftcl_NewUnicodeObj                      uintptr
  6758  	Ftcl_SetUnicodeObj                      uintptr
  6759  	Ftcl_GetCharLength                      uintptr
  6760  	Ftcl_GetUniChar                         uintptr
  6761  	Ftcl_GetUnicode                         uintptr
  6762  	Ftcl_GetRange                           uintptr
  6763  	Ftcl_AppendUnicodeToObj                 uintptr
  6764  	Ftcl_RegExpMatchObj                     uintptr
  6765  	Ftcl_SetNotifier                        uintptr
  6766  	Ftcl_GetAllocMutex                      uintptr
  6767  	Ftcl_GetChannelNames                    uintptr
  6768  	Ftcl_GetChannelNamesEx                  uintptr
  6769  	Ftcl_ProcObjCmd                         uintptr
  6770  	Ftcl_ConditionFinalize                  uintptr
  6771  	Ftcl_MutexFinalize                      uintptr
  6772  	Ftcl_CreateThread                       uintptr
  6773  	Ftcl_ReadRaw                            uintptr
  6774  	Ftcl_WriteRaw                           uintptr
  6775  	Ftcl_GetTopChannel                      uintptr
  6776  	Ftcl_ChannelBuffered                    uintptr
  6777  	Ftcl_ChannelName                        uintptr
  6778  	Ftcl_ChannelVersion                     uintptr
  6779  	Ftcl_ChannelBlockModeProc               uintptr
  6780  	Ftcl_ChannelCloseProc                   uintptr
  6781  	Ftcl_ChannelClose2Proc                  uintptr
  6782  	Ftcl_ChannelInputProc                   uintptr
  6783  	Ftcl_ChannelOutputProc                  uintptr
  6784  	Ftcl_ChannelSeekProc                    uintptr
  6785  	Ftcl_ChannelSetOptionProc               uintptr
  6786  	Ftcl_ChannelGetOptionProc               uintptr
  6787  	Ftcl_ChannelWatchProc                   uintptr
  6788  	Ftcl_ChannelGetHandleProc               uintptr
  6789  	Ftcl_ChannelFlushProc                   uintptr
  6790  	Ftcl_ChannelHandlerProc                 uintptr
  6791  	Ftcl_JoinThread                         uintptr
  6792  	Ftcl_IsChannelShared                    uintptr
  6793  	Ftcl_IsChannelRegistered                uintptr
  6794  	Ftcl_CutChannel                         uintptr
  6795  	Ftcl_SpliceChannel                      uintptr
  6796  	Ftcl_ClearChannelHandlers               uintptr
  6797  	Ftcl_IsChannelExisting                  uintptr
  6798  	Ftcl_UniCharNcasecmp                    uintptr
  6799  	Ftcl_UniCharCaseMatch                   uintptr
  6800  	Ftcl_FindHashEntry                      uintptr
  6801  	Ftcl_CreateHashEntry                    uintptr
  6802  	Ftcl_InitCustomHashTable                uintptr
  6803  	Ftcl_InitObjHashTable                   uintptr
  6804  	Ftcl_CommandTraceInfo                   uintptr
  6805  	Ftcl_TraceCommand                       uintptr
  6806  	Ftcl_UntraceCommand                     uintptr
  6807  	Ftcl_AttemptAlloc                       uintptr
  6808  	Ftcl_AttemptDbCkalloc                   uintptr
  6809  	Ftcl_AttemptRealloc                     uintptr
  6810  	Ftcl_AttemptDbCkrealloc                 uintptr
  6811  	Ftcl_AttemptSetObjLength                uintptr
  6812  	Ftcl_GetChannelThread                   uintptr
  6813  	Ftcl_GetUnicodeFromObj                  uintptr
  6814  	Ftcl_GetMathFuncInfo                    uintptr
  6815  	Ftcl_ListMathFuncs                      uintptr
  6816  	Ftcl_SubstObj                           uintptr
  6817  	Ftcl_DetachChannel                      uintptr
  6818  	Ftcl_IsStandardChannel                  uintptr
  6819  	Ftcl_FSCopyFile                         uintptr
  6820  	Ftcl_FSCopyDirectory                    uintptr
  6821  	Ftcl_FSCreateDirectory                  uintptr
  6822  	Ftcl_FSDeleteFile                       uintptr
  6823  	Ftcl_FSLoadFile                         uintptr
  6824  	Ftcl_FSMatchInDirectory                 uintptr
  6825  	Ftcl_FSLink                             uintptr
  6826  	Ftcl_FSRemoveDirectory                  uintptr
  6827  	Ftcl_FSRenameFile                       uintptr
  6828  	Ftcl_FSLstat                            uintptr
  6829  	Ftcl_FSUtime                            uintptr
  6830  	Ftcl_FSFileAttrsGet                     uintptr
  6831  	Ftcl_FSFileAttrsSet                     uintptr
  6832  	Ftcl_FSFileAttrStrings                  uintptr
  6833  	Ftcl_FSStat                             uintptr
  6834  	Ftcl_FSAccess                           uintptr
  6835  	Ftcl_FSOpenFileChannel                  uintptr
  6836  	Ftcl_FSGetCwd                           uintptr
  6837  	Ftcl_FSChdir                            uintptr
  6838  	Ftcl_FSConvertToPathType                uintptr
  6839  	Ftcl_FSJoinPath                         uintptr
  6840  	Ftcl_FSSplitPath                        uintptr
  6841  	Ftcl_FSEqualPaths                       uintptr
  6842  	Ftcl_FSGetNormalizedPath                uintptr
  6843  	Ftcl_FSJoinToPath                       uintptr
  6844  	Ftcl_FSGetInternalRep                   uintptr
  6845  	Ftcl_FSGetTranslatedPath                uintptr
  6846  	Ftcl_FSEvalFile                         uintptr
  6847  	Ftcl_FSNewNativePath                    uintptr
  6848  	Ftcl_FSGetNativePath                    uintptr
  6849  	Ftcl_FSFileSystemInfo                   uintptr
  6850  	Ftcl_FSPathSeparator                    uintptr
  6851  	Ftcl_FSListVolumes                      uintptr
  6852  	Ftcl_FSRegister                         uintptr
  6853  	Ftcl_FSUnregister                       uintptr
  6854  	Ftcl_FSData                             uintptr
  6855  	Ftcl_FSGetTranslatedStringPath          uintptr
  6856  	Ftcl_FSGetFileSystemForPath             uintptr
  6857  	Ftcl_FSGetPathType                      uintptr
  6858  	Ftcl_OutputBuffered                     uintptr
  6859  	Ftcl_FSMountsChanged                    uintptr
  6860  	Ftcl_EvalTokensStandard                 uintptr
  6861  	Ftcl_GetTime                            uintptr
  6862  	Ftcl_CreateObjTrace                     uintptr
  6863  	Ftcl_GetCommandInfoFromToken            uintptr
  6864  	Ftcl_SetCommandInfoFromToken            uintptr
  6865  	Ftcl_DbNewWideIntObj                    uintptr
  6866  	Ftcl_GetWideIntFromObj                  uintptr
  6867  	Ftcl_NewWideIntObj                      uintptr
  6868  	Ftcl_SetWideIntObj                      uintptr
  6869  	Ftcl_AllocStatBuf                       uintptr
  6870  	Ftcl_Seek                               uintptr
  6871  	Ftcl_Tell                               uintptr
  6872  	Ftcl_ChannelWideSeekProc                uintptr
  6873  	Ftcl_DictObjPut                         uintptr
  6874  	Ftcl_DictObjGet                         uintptr
  6875  	Ftcl_DictObjRemove                      uintptr
  6876  	Ftcl_DictObjSize                        uintptr
  6877  	Ftcl_DictObjFirst                       uintptr
  6878  	Ftcl_DictObjNext                        uintptr
  6879  	Ftcl_DictObjDone                        uintptr
  6880  	Ftcl_DictObjPutKeyList                  uintptr
  6881  	Ftcl_DictObjRemoveKeyList               uintptr
  6882  	Ftcl_NewDictObj                         uintptr
  6883  	Ftcl_DbNewDictObj                       uintptr
  6884  	Ftcl_RegisterConfig                     uintptr
  6885  	Ftcl_CreateNamespace                    uintptr
  6886  	Ftcl_DeleteNamespace                    uintptr
  6887  	Ftcl_AppendExportList                   uintptr
  6888  	Ftcl_Export                             uintptr
  6889  	Ftcl_Import                             uintptr
  6890  	Ftcl_ForgetImport                       uintptr
  6891  	Ftcl_GetCurrentNamespace                uintptr
  6892  	Ftcl_GetGlobalNamespace                 uintptr
  6893  	Ftcl_FindNamespace                      uintptr
  6894  	Ftcl_FindCommand                        uintptr
  6895  	Ftcl_GetCommandFromObj                  uintptr
  6896  	Ftcl_GetCommandFullName                 uintptr
  6897  	Ftcl_FSEvalFileEx                       uintptr
  6898  	Ftcl_SetExitProc                        uintptr
  6899  	Ftcl_LimitAddHandler                    uintptr
  6900  	Ftcl_LimitRemoveHandler                 uintptr
  6901  	Ftcl_LimitReady                         uintptr
  6902  	Ftcl_LimitCheck                         uintptr
  6903  	Ftcl_LimitExceeded                      uintptr
  6904  	Ftcl_LimitSetCommands                   uintptr
  6905  	Ftcl_LimitSetTime                       uintptr
  6906  	Ftcl_LimitSetGranularity                uintptr
  6907  	Ftcl_LimitTypeEnabled                   uintptr
  6908  	Ftcl_LimitTypeExceeded                  uintptr
  6909  	Ftcl_LimitTypeSet                       uintptr
  6910  	Ftcl_LimitTypeReset                     uintptr
  6911  	Ftcl_LimitGetCommands                   uintptr
  6912  	Ftcl_LimitGetTime                       uintptr
  6913  	Ftcl_LimitGetGranularity                uintptr
  6914  	Ftcl_SaveInterpState                    uintptr
  6915  	Ftcl_RestoreInterpState                 uintptr
  6916  	Ftcl_DiscardInterpState                 uintptr
  6917  	Ftcl_SetReturnOptions                   uintptr
  6918  	Ftcl_GetReturnOptions                   uintptr
  6919  	Ftcl_IsEnsemble                         uintptr
  6920  	Ftcl_CreateEnsemble                     uintptr
  6921  	Ftcl_FindEnsemble                       uintptr
  6922  	Ftcl_SetEnsembleSubcommandList          uintptr
  6923  	Ftcl_SetEnsembleMappingDict             uintptr
  6924  	Ftcl_SetEnsembleUnknownHandler          uintptr
  6925  	Ftcl_SetEnsembleFlags                   uintptr
  6926  	Ftcl_GetEnsembleSubcommandList          uintptr
  6927  	Ftcl_GetEnsembleMappingDict             uintptr
  6928  	Ftcl_GetEnsembleUnknownHandler          uintptr
  6929  	Ftcl_GetEnsembleFlags                   uintptr
  6930  	Ftcl_GetEnsembleNamespace               uintptr
  6931  	Ftcl_SetTimeProc                        uintptr
  6932  	Ftcl_QueryTimeProc                      uintptr
  6933  	Ftcl_ChannelThreadActionProc            uintptr
  6934  	Ftcl_NewBignumObj                       uintptr
  6935  	Ftcl_DbNewBignumObj                     uintptr
  6936  	Ftcl_SetBignumObj                       uintptr
  6937  	Ftcl_GetBignumFromObj                   uintptr
  6938  	Ftcl_TakeBignumFromObj                  uintptr
  6939  	Ftcl_TruncateChannel                    uintptr
  6940  	Ftcl_ChannelTruncateProc                uintptr
  6941  	Ftcl_SetChannelErrorInterp              uintptr
  6942  	Ftcl_GetChannelErrorInterp              uintptr
  6943  	Ftcl_SetChannelError                    uintptr
  6944  	Ftcl_GetChannelError                    uintptr
  6945  	Ftcl_InitBignumFromDouble               uintptr
  6946  	Ftcl_GetNamespaceUnknownHandler         uintptr
  6947  	Ftcl_SetNamespaceUnknownHandler         uintptr
  6948  	Ftcl_GetEncodingFromObj                 uintptr
  6949  	Ftcl_GetEncodingSearchPath              uintptr
  6950  	Ftcl_SetEncodingSearchPath              uintptr
  6951  	Ftcl_GetEncodingNameFromEnvironment     uintptr
  6952  	Ftcl_PkgRequireProc                     uintptr
  6953  	Ftcl_AppendObjToErrorInfo               uintptr
  6954  	Ftcl_AppendLimitedToObj                 uintptr
  6955  	Ftcl_Format                             uintptr
  6956  	Ftcl_AppendFormatToObj                  uintptr
  6957  	Ftcl_ObjPrintf                          uintptr
  6958  	Ftcl_AppendPrintfToObj                  uintptr
  6959  	Ftcl_CancelEval                         uintptr
  6960  	Ftcl_Canceled                           uintptr
  6961  	Ftcl_CreatePipe                         uintptr
  6962  	Ftcl_NRCreateCommand                    uintptr
  6963  	Ftcl_NREvalObj                          uintptr
  6964  	Ftcl_NREvalObjv                         uintptr
  6965  	Ftcl_NRCmdSwap                          uintptr
  6966  	Ftcl_NRAddCallback                      uintptr
  6967  	Ftcl_NRCallObjProc                      uintptr
  6968  	Ftcl_GetFSDeviceFromStat                uintptr
  6969  	Ftcl_GetFSInodeFromStat                 uintptr
  6970  	Ftcl_GetModeFromStat                    uintptr
  6971  	Ftcl_GetLinkCountFromStat               uintptr
  6972  	Ftcl_GetUserIdFromStat                  uintptr
  6973  	Ftcl_GetGroupIdFromStat                 uintptr
  6974  	Ftcl_GetDeviceTypeFromStat              uintptr
  6975  	Ftcl_GetAccessTimeFromStat              uintptr
  6976  	Ftcl_GetModificationTimeFromStat        uintptr
  6977  	Ftcl_GetChangeTimeFromStat              uintptr
  6978  	Ftcl_GetSizeFromStat                    uintptr
  6979  	Ftcl_GetBlocksFromStat                  uintptr
  6980  	Ftcl_GetBlockSizeFromStat               uintptr
  6981  	Ftcl_SetEnsembleParameterList           uintptr
  6982  	Ftcl_GetEnsembleParameterList           uintptr
  6983  	Ftcl_ParseArgsObjv                      uintptr
  6984  	Ftcl_GetErrorLine                       uintptr
  6985  	Ftcl_SetErrorLine                       uintptr
  6986  	Ftcl_TransferResult                     uintptr
  6987  	Ftcl_InterpActive                       uintptr
  6988  	Ftcl_BackgroundException                uintptr
  6989  	Ftcl_ZlibDeflate                        uintptr
  6990  	Ftcl_ZlibInflate                        uintptr
  6991  	Ftcl_ZlibCRC32                          uintptr
  6992  	Ftcl_ZlibAdler32                        uintptr
  6993  	Ftcl_ZlibStreamInit                     uintptr
  6994  	Ftcl_ZlibStreamGetCommandName           uintptr
  6995  	Ftcl_ZlibStreamEof                      uintptr
  6996  	Ftcl_ZlibStreamChecksum                 uintptr
  6997  	Ftcl_ZlibStreamPut                      uintptr
  6998  	Ftcl_ZlibStreamGet                      uintptr
  6999  	Ftcl_ZlibStreamClose                    uintptr
  7000  	Ftcl_ZlibStreamReset                    uintptr
  7001  	Ftcl_SetStartupScript                   uintptr
  7002  	Ftcl_GetStartupScript                   uintptr
  7003  	Ftcl_CloseEx                            uintptr
  7004  	Ftcl_NRExprObj                          uintptr
  7005  	Ftcl_NRSubstObj                         uintptr
  7006  	Ftcl_LoadFile                           uintptr
  7007  	Ftcl_FindSymbol                         uintptr
  7008  	Ftcl_FSUnloadFile                       uintptr
  7009  	Ftcl_ZlibStreamSetCompressionDictionary uintptr
  7010  	Freserved631                            uintptr
  7011  	Freserved632                            uintptr
  7012  	Freserved633                            uintptr
  7013  	Freserved634                            uintptr
  7014  	Freserved635                            uintptr
  7015  	Freserved636                            uintptr
  7016  	Freserved637                            uintptr
  7017  	Freserved638                            uintptr
  7018  	Freserved639                            uintptr
  7019  	Freserved640                            uintptr
  7020  	Freserved641                            uintptr
  7021  	Freserved642                            uintptr
  7022  	Freserved643                            uintptr
  7023  	Freserved644                            uintptr
  7024  	Freserved645                            uintptr
  7025  	Freserved646                            uintptr
  7026  	Freserved647                            uintptr
  7027  	Freserved648                            uintptr
  7028  	Freserved649                            uintptr
  7029  	Freserved650                            uintptr
  7030  	Freserved651                            uintptr
  7031  	Freserved652                            uintptr
  7032  	Freserved653                            uintptr
  7033  	Freserved654                            uintptr
  7034  	Freserved655                            uintptr
  7035  	Freserved656                            uintptr
  7036  	Freserved657                            uintptr
  7037  	Freserved658                            uintptr
  7038  	Freserved659                            uintptr
  7039  	FtclUnusedStubEntry                     uintptr
  7040  }
  7041  
  7042  type TclStubs = TclStubs1
  7043  
  7044  type TclPlatStubs = TclPlatStubs1
  7045  
  7046  func dbHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
  7047  	bp := tls.Alloc(88)
  7048  	defer tls.Free(88)
  7049  
  7050  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
  7051  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
  7052  		return TCL_ERROR
  7053  	}
  7054  
  7055  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
  7056  	return TCL_OK
  7057  }
  7058  
  7059  func testExpertCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7060  	bp := tls.Alloc(212)
  7061  	defer tls.Free(212)
  7062  
  7063  	var pExpert uintptr = clientData
  7064  	*(*[6]Subcmd)(unsafe.Pointer(bp)) = [6]Subcmd{
  7065  		{FzSub: ts + 1947, FnArg: 1, FzMsg: ts + 1951},
  7066  		{FzSub: ts + 1957, FzMsg: ts + 584},
  7067  		{FzSub: ts + 1965, FzMsg: ts + 584},
  7068  		{FzSub: ts + 1971, FnArg: 2, FzMsg: ts + 1978},
  7069  		{FzSub: ts + 1991, FzMsg: ts + 584},
  7070  		{},
  7071  	}
  7072  
  7073  	var rc int32 = TCL_OK
  7074  	*(*uintptr)(unsafe.Pointer(bp + 152)) = uintptr(0)
  7075  
  7076  	if objc < 2 {
  7077  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
  7078  		return TCL_ERROR
  7079  	}
  7080  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
  7081  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(Subcmd{})), ts+2014, 0, bp+144)
  7082  	if rc != TCL_OK {
  7083  		return rc
  7084  	}
  7085  	if objc != 2+(*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FnArg {
  7086  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*Subcmd)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 144)))*24)).FzMsg)
  7087  		return TCL_ERROR
  7088  	}
  7089  
  7090  	switch *(*int32)(unsafe.Pointer(bp + 144)) {
  7091  	case 0:
  7092  		{
  7093  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7094  			rc = sqlite3_expert_sql(tls, pExpert, zArg, bp+152)
  7095  			break
  7096  
  7097  		}
  7098  
  7099  	case 1:
  7100  		{
  7101  			rc = sqlite3_expert_analyze(tls, pExpert, bp+152)
  7102  			break
  7103  
  7104  		}
  7105  
  7106  	case 2:
  7107  		{
  7108  			var n int32 = sqlite3_expert_count(tls, pExpert)
  7109  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, n))
  7110  			break
  7111  
  7112  		}
  7113  
  7114  	case 3:
  7115  		{
  7116  			*(*[5]uintptr)(unsafe.Pointer(bp + 168)) = [5]uintptr{
  7117  				ts + 1947, ts + 2026, ts + 2034, ts + 2039, uintptr(0),
  7118  			}
  7119  
  7120  			var zReport uintptr
  7121  
  7122  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+160) != 0 ||
  7123  				tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168, int32(unsafe.Sizeof(uintptr(0))), ts+1971, 0, bp+208) != 0 {
  7124  				return TCL_ERROR
  7125  			}
  7126  
  7127  			zReport = sqlite3_expert_report(tls, pExpert, *(*int32)(unsafe.Pointer(bp + 160)), 1+*(*int32)(unsafe.Pointer(bp + 208)))
  7128  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zReport, -1))
  7129  			break
  7130  
  7131  		}
  7132  
  7133  	default:
  7134  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
  7135  		break
  7136  	}
  7137  
  7138  	if rc != TCL_OK {
  7139  		if *(*uintptr)(unsafe.Pointer(bp + 152)) != 0 {
  7140  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 152)), -1))
  7141  		} else {
  7142  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
  7143  		}
  7144  	}
  7145  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 152)))
  7146  	return rc
  7147  }
  7148  
  7149  type Subcmd = struct {
  7150  	FzSub        uintptr
  7151  	FnArg        int32
  7152  	F__ccgo_pad1 [4]byte
  7153  	FzMsg        uintptr
  7154  }
  7155  
  7156  func testExpertDel(tls *libc.TLS, clientData uintptr) {
  7157  	var pExpert uintptr = clientData
  7158  	sqlite3_expert_destroy(tls, pExpert)
  7159  }
  7160  
  7161  func test_sqlite3_expert_new(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7162  	bp := tls.Alloc(56)
  7163  	defer tls.Free(56)
  7164  
  7165  	var zCmd uintptr = uintptr(0)
  7166  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7167  	var pExpert uintptr
  7168  	var rc int32 = TCL_OK
  7169  
  7170  	if objc != 2 {
  7171  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  7172  		return TCL_ERROR
  7173  	}
  7174  	if dbHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40) != 0 {
  7175  		return TCL_ERROR
  7176  	}
  7177  
  7178  	zCmd = sqlite3.Xsqlite3_mprintf(tls, ts+2053, libc.VaList(bp, libc.PreIncInt32(&iCmd, 1)))
  7179  	if zCmd == uintptr(0) {
  7180  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, ts+2069, uintptr(0)))
  7181  		return TCL_ERROR
  7182  	}
  7183  
  7184  	pExpert = sqlite3_expert_new(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48)
  7185  	if pExpert == uintptr(0) {
  7186  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 48)), uintptr(0)))
  7187  		rc = TCL_ERROR
  7188  	} else {
  7189  		var p uintptr = pExpert
  7190  		tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
  7191  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7192  		}{testExpertCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testExpertDel})))
  7193  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zCmd, -1))
  7194  	}
  7195  
  7196  	sqlite3.Xsqlite3_free(tls, zCmd)
  7197  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
  7198  	return rc
  7199  }
  7200  
  7201  var iCmd int32 = 0
  7202  
  7203  func TestExpert_Init(tls *libc.TLS, interp uintptr) int32 {
  7204  	bp := tls.Alloc(16)
  7205  	defer tls.Free(16)
  7206  
  7207  	*(*[1]struct {
  7208  		FzCmd  uintptr
  7209  		FxProc uintptr
  7210  	})(unsafe.Pointer(bp)) = [1]struct {
  7211  		FzCmd  uintptr
  7212  		FxProc uintptr
  7213  	}{
  7214  		{FzCmd: ts + 2083, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
  7215  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7216  		}{test_sqlite3_expert_new}))},
  7217  	}
  7218  	var i int32
  7219  
  7220  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]struct {
  7221  		FzCmd  uintptr
  7222  		FxProc uintptr
  7223  	}{}))/uint64(unsafe.Sizeof(struct {
  7224  		FzCmd  uintptr
  7225  		FxProc uintptr
  7226  	}{})); i++ {
  7227  		var p uintptr = bp + uintptr(i)*16
  7228  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  7229  			FzCmd  uintptr
  7230  			FxProc uintptr
  7231  		})(unsafe.Pointer(p)).FzCmd, (*struct {
  7232  			FzCmd  uintptr
  7233  			FxProc uintptr
  7234  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
  7235  	}
  7236  	return TCL_OK
  7237  }
  7238  
  7239  func f5tDbPointer(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr) int32 {
  7240  	bp := tls.Alloc(64)
  7241  	defer tls.Free(64)
  7242  
  7243  	var p uintptr
  7244  
  7245  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
  7246  	if tcl.XTcl_GetCommandInfo(tls, interp, z, bp) != 0 {
  7247  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
  7248  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
  7249  		return TCL_OK
  7250  	}
  7251  	return TCL_ERROR
  7252  }
  7253  
  7254  func f5tResultToErrorCode(tls *libc.TLS, zRes uintptr) int32 {
  7255  	bp := tls.Alloc(64)
  7256  	defer tls.Free(64)
  7257  
  7258  	*(*[4]ErrorCode)(unsafe.Pointer(bp)) = [4]ErrorCode{
  7259  		{Frc: SQLITE_DONE, FzError: ts + 2102},
  7260  		{Frc: SQLITE_ERROR, FzError: ts + 2114},
  7261  		{FzError: ts + 2127},
  7262  		{FzError: ts + 584},
  7263  	}
  7264  	var i int32
  7265  
  7266  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([4]ErrorCode{}))/uint64(unsafe.Sizeof(ErrorCode{})); i++ {
  7267  		if 0 == sqlite3.Xsqlite3_stricmp(tls, zRes, (*ErrorCode)(unsafe.Pointer(bp+uintptr(i)*16)).FzError) {
  7268  			return (*ErrorCode)(unsafe.Pointer(bp + uintptr(i)*16)).Frc
  7269  		}
  7270  	}
  7271  
  7272  	return SQLITE_ERROR
  7273  }
  7274  
  7275  type ErrorCode = struct {
  7276  	Frc          int32
  7277  	F__ccgo_pad1 [4]byte
  7278  	FzError      uintptr
  7279  }
  7280  
  7281  func f5tDbAndApi(tls *libc.TLS, interp uintptr, pObj uintptr, ppDb uintptr, ppApi uintptr) int32 {
  7282  	bp := tls.Alloc(72)
  7283  	defer tls.Free(72)
  7284  
  7285  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
  7286  	var rc int32 = f5tDbPointer(tls, interp, pObj, bp+48)
  7287  	if rc != TCL_OK {
  7288  		return TCL_ERROR
  7289  	} else {
  7290  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
  7291  		*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
  7292  
  7293  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+2137, -1, bp+56, uintptr(0))
  7294  		if rc != SQLITE_OK {
  7295  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7296  			return TCL_ERROR
  7297  		}
  7298  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), 1, bp+64, ts+2161, uintptr(0))
  7299  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
  7300  
  7301  		if sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != SQLITE_OK {
  7302  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 48))), 0))
  7303  			return TCL_ERROR
  7304  		}
  7305  
  7306  		*(*uintptr)(unsafe.Pointer(ppDb)) = *(*uintptr)(unsafe.Pointer(bp + 48))
  7307  		*(*uintptr)(unsafe.Pointer(ppApi)) = *(*uintptr)(unsafe.Pointer(bp + 64))
  7308  	}
  7309  
  7310  	return TCL_OK
  7311  }
  7312  
  7313  type F5tFunction1 = struct {
  7314  	Finterp  uintptr
  7315  	FpScript uintptr
  7316  }
  7317  
  7318  type F5tFunction = F5tFunction1
  7319  
  7320  type F5tApi1 = struct {
  7321  	FpApi uintptr
  7322  	FpFts uintptr
  7323  }
  7324  
  7325  type F5tApi = F5tApi1
  7326  
  7327  type F5tAuxData1 = struct{ FpObj uintptr }
  7328  
  7329  type F5tAuxData = F5tAuxData1
  7330  
  7331  func xTokenizeCb(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7332  	var p uintptr = pCtx
  7333  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7334  	var rc int32
  7335  
  7336  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7337  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7338  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iStart))
  7339  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, iEnd))
  7340  
  7341  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7342  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7343  		var _objPtr uintptr = pEval
  7344  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7345  			tcl.XTclFreeObj(tls, _objPtr)
  7346  		}
  7347  	}
  7348  	if rc == TCL_OK {
  7349  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7350  	}
  7351  
  7352  	return rc
  7353  }
  7354  
  7355  func xQueryPhraseCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr) int32 {
  7356  	bp := tls.Alloc(88)
  7357  	defer tls.Free(88)
  7358  
  7359  	var p uintptr = pCtx
  7360  	var pEval uintptr
  7361  	var rc int32
  7362  
  7363  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7364  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7365  	libc.Xsprintf(tls, bp+8, ts+2174, libc.VaList(bp, libc.PostIncInt64(&iCmd1, 1)))
  7366  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7367  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7368  	}{xF5tApi})), bp+72, uintptr(0))
  7369  
  7370  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7371  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7372  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7373  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, 0)
  7374  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7375  		var _objPtr uintptr = pEval
  7376  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7377  			tcl.XTclFreeObj(tls, _objPtr)
  7378  		}
  7379  	}
  7380  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7381  
  7382  	if rc == TCL_OK {
  7383  		rc = f5tResultToErrorCode(tls, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp))
  7384  	}
  7385  
  7386  	return rc
  7387  }
  7388  
  7389  var iCmd1 sqlite3_int64 = int64(0)
  7390  
  7391  func xSetAuxdataDestructor(tls *libc.TLS, p uintptr) {
  7392  	var pData uintptr = p
  7393  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7394  		var _objPtr uintptr = (*F5tAuxData)(unsafe.Pointer(pData)).FpObj
  7395  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7396  			tcl.XTclFreeObj(tls, _objPtr)
  7397  		}
  7398  	}
  7399  	sqlite3.Xsqlite3_free(tls, pData)
  7400  }
  7401  
  7402  func xF5tApi(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7403  	bp := tls.Alloc(684)
  7404  	defer tls.Free(684)
  7405  
  7406  	*(*[19]Sub)(unsafe.Pointer(bp + 32)) = [19]Sub{
  7407  		{FzName: ts + 2185, FzMsg: ts + 584},
  7408  		{FzName: ts + 2198, FzMsg: ts + 584},
  7409  		{FzName: ts + 2208, FnArg: 1, FzMsg: ts + 2225},
  7410  		{FzName: ts + 2229, FnArg: 2, FzMsg: ts + 2239},
  7411  		{FzName: ts + 2251, FzMsg: ts + 584},
  7412  		{FzName: ts + 2264, FnArg: 1, FzMsg: ts + 2276},
  7413  		{FzName: ts + 2283, FzMsg: ts + 584},
  7414  		{FzName: ts + 2294, FnArg: 1, FzMsg: ts + 2300},
  7415  		{FzName: ts + 2304, FzMsg: ts + 584},
  7416  		{FzName: ts + 2311, FnArg: 1, FzMsg: ts + 2225},
  7417  		{FzName: ts + 2323, FnArg: 1, FzMsg: ts + 2225},
  7418  		{FzName: ts + 2335, FnArg: 2, FzMsg: ts + 2348},
  7419  		{FzName: ts + 2362, FnArg: 1, FzMsg: ts + 2374},
  7420  		{FzName: ts + 2380, FnArg: 1, FzMsg: ts + 2392},
  7421  		{FzName: ts + 2398, FnArg: 1, FzMsg: ts + 2413},
  7422  		{FzName: ts + 2421, FnArg: 1, FzMsg: ts + 2392},
  7423  		{FzName: ts + 2436, FnArg: 4, FzMsg: ts + 2451},
  7424  		{FzName: ts + 2480, FnArg: 3, FzMsg: ts + 2501},
  7425  		{},
  7426  	}
  7427  	var rc int32
  7428  	*(*int32)(unsafe.Pointer(bp + 488)) = 0
  7429  	var p uintptr = clientData
  7430  
  7431  	if objc < 2 {
  7432  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
  7433  		return TCL_ERROR
  7434  	}
  7435  
  7436  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
  7437  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32, int32(unsafe.Sizeof(Sub{})), ts+2523, 0, bp+488)
  7438  	if rc != TCL_OK {
  7439  		return rc
  7440  	}
  7441  	if (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FnArg != objc-2 {
  7442  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*Sub)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 488)))*24)).FzMsg)
  7443  		return TCL_ERROR
  7444  	}
  7445  
  7446  	switch *(*int32)(unsafe.Pointer(bp + 488)) {
  7447  	case 0:
  7448  		{
  7449  			var nCol int32
  7450  			nCol = (*struct {
  7451  				f func(*libc.TLS, uintptr) int32
  7452  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7453  			if rc == SQLITE_OK {
  7454  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol))
  7455  			}
  7456  			break
  7457  
  7458  		}
  7459  	case 1:
  7460  		{
  7461  			rc = (*struct {
  7462  				f func(*libc.TLS, uintptr, uintptr) int32
  7463  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+496)
  7464  			if rc == SQLITE_OK {
  7465  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 496))))
  7466  			}
  7467  			break
  7468  
  7469  		}
  7470  	case 2:
  7471  		{
  7472  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+504) != 0 {
  7473  				return TCL_ERROR
  7474  			}
  7475  			rc = (*struct {
  7476  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7477  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnTotalSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 504)), bp+512)
  7478  			if rc == SQLITE_OK {
  7479  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 512))))
  7480  			}
  7481  			break
  7482  
  7483  		}
  7484  	case 3:
  7485  		{
  7486  			var zText uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+520)
  7487  
  7488  			(*F5tFunction)(unsafe.Pointer(bp + 528)).Finterp = interp
  7489  			(*F5tFunction)(unsafe.Pointer(bp + 528)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7490  			rc = (*struct {
  7491  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr) int32
  7492  			})(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 + 520)), bp+528, *(*uintptr)(unsafe.Pointer(&struct {
  7493  				f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  7494  			}{xTokenizeCb})))
  7495  			if rc == SQLITE_OK {
  7496  				tcl.XTcl_ResetResult(tls, interp)
  7497  			}
  7498  			return rc
  7499  
  7500  		}
  7501  	case 4:
  7502  		{
  7503  			var nPhrase int32
  7504  			nPhrase = (*struct {
  7505  				f func(*libc.TLS, uintptr) int32
  7506  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7507  			if rc == SQLITE_OK {
  7508  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPhrase))
  7509  			}
  7510  			break
  7511  
  7512  		}
  7513  	case 5:
  7514  		{
  7515  			var sz int32
  7516  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+544) != 0 {
  7517  				return TCL_ERROR
  7518  			}
  7519  			sz = (*struct {
  7520  				f func(*libc.TLS, uintptr, int32) int32
  7521  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 544)))
  7522  			if rc == SQLITE_OK {
  7523  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sz))
  7524  			}
  7525  			break
  7526  
  7527  		}
  7528  	case 6:
  7529  		{
  7530  			rc = (*struct {
  7531  				f func(*libc.TLS, uintptr, uintptr) int32
  7532  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInstCount})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+548)
  7533  			if rc == SQLITE_OK {
  7534  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 548))))
  7535  			}
  7536  			break
  7537  
  7538  		}
  7539  	case 7:
  7540  		{
  7541  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+552) != 0 {
  7542  				return TCL_ERROR
  7543  			}
  7544  			rc = (*struct {
  7545  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7546  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxInst})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 552)), bp+556, bp+560, bp+564)
  7547  			if rc == SQLITE_OK {
  7548  				var pList uintptr = tcl.XTcl_NewObj(tls)
  7549  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 556))))
  7550  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 560))))
  7551  				tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 564))))
  7552  				tcl.XTcl_SetObjResult(tls, interp, pList)
  7553  			}
  7554  			break
  7555  
  7556  		}
  7557  	case 8:
  7558  		{
  7559  			var iRowid sqlite3_int64 = (*struct {
  7560  				f func(*libc.TLS, uintptr) sqlite3_int64
  7561  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxRowid})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts)
  7562  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iRowid))
  7563  			break
  7564  
  7565  		}
  7566  	case 9:
  7567  		{
  7568  			*(*uintptr)(unsafe.Pointer(bp + 576)) = uintptr(0)
  7569  			*(*int32)(unsafe.Pointer(bp + 584)) = 0
  7570  
  7571  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+568) != 0 {
  7572  				return TCL_ERROR
  7573  			}
  7574  			rc = (*struct {
  7575  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7576  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnText})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 568)), bp+576, bp+584)
  7577  			if rc == SQLITE_OK {
  7578  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 576)), *(*int32)(unsafe.Pointer(bp + 584))))
  7579  			}
  7580  			break
  7581  
  7582  		}
  7583  	case 10:
  7584  		{
  7585  			*(*int32)(unsafe.Pointer(bp + 592)) = 0
  7586  
  7587  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+588) != 0 {
  7588  				return TCL_ERROR
  7589  			}
  7590  			rc = (*struct {
  7591  				f func(*libc.TLS, uintptr, int32, uintptr) int32
  7592  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxColumnSize})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 588)), bp+592)
  7593  			if rc == SQLITE_OK {
  7594  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 592))))
  7595  			}
  7596  			break
  7597  
  7598  		}
  7599  	case 11:
  7600  		{
  7601  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+596) != 0 {
  7602  				return TCL_ERROR
  7603  			}
  7604  			(*F5tFunction)(unsafe.Pointer(bp + 600)).Finterp = interp
  7605  			(*F5tFunction)(unsafe.Pointer(bp + 600)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7606  			rc = (*struct {
  7607  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7608  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxQueryPhrase})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 596)), bp+600, *(*uintptr)(unsafe.Pointer(&struct {
  7609  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7610  			}{xQueryPhraseCb})))
  7611  			if rc == SQLITE_OK {
  7612  				tcl.XTcl_ResetResult(tls, interp)
  7613  			}
  7614  			break
  7615  
  7616  		}
  7617  	case 12:
  7618  		{
  7619  			var pData uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(F5tAuxData{})))
  7620  			if pData == uintptr(0) {
  7621  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, 0))
  7622  				return TCL_ERROR
  7623  			}
  7624  			(*F5tAuxData)(unsafe.Pointer(pData)).FpObj = *(*uintptr)(unsafe.Pointer(objv + 2*8))
  7625  			(*Tcl_Obj)(unsafe.Pointer((*F5tAuxData)(unsafe.Pointer(pData)).FpObj)).FrefCount++
  7626  			rc = (*struct {
  7627  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7628  			})(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})))
  7629  			break
  7630  
  7631  		}
  7632  	case 13:
  7633  		{
  7634  			var pData uintptr
  7635  
  7636  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+616) != 0 {
  7637  				return TCL_ERROR
  7638  			}
  7639  			pData = (*struct {
  7640  				f func(*libc.TLS, uintptr, int32) uintptr
  7641  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxGetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 616)))
  7642  			if pData == uintptr(0) {
  7643  				tcl.XTcl_ResetResult(tls, interp)
  7644  			} else {
  7645  				tcl.XTcl_SetObjResult(tls, interp, (*F5tAuxData)(unsafe.Pointer(pData)).FpObj)
  7646  				if *(*int32)(unsafe.Pointer(bp + 616)) != 0 {
  7647  					xSetAuxdataDestructor(tls, pData)
  7648  				}
  7649  			}
  7650  			break
  7651  
  7652  		}
  7653  
  7654  	case 14:
  7655  		{
  7656  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+620) != 0 {
  7657  				return TCL_ERROR
  7658  			}
  7659  			rc = (*struct {
  7660  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  7661  			})(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 + 620))), uintptr(0))
  7662  			break
  7663  
  7664  		}
  7665  	case 15:
  7666  		{
  7667  			var iVal int32
  7668  
  7669  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+624) != 0 {
  7670  				return TCL_ERROR
  7671  			}
  7672  			iVal = int32((int64((*struct {
  7673  				f func(*libc.TLS, uintptr, int32) uintptr
  7674  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxGetAuxdata})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 624)))) - int64(uintptr(0))) / 1)
  7675  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iVal))
  7676  			break
  7677  
  7678  		}
  7679  
  7680  	case 16:
  7681  		{
  7682  			var zColvar uintptr
  7683  			var zOffvar uintptr
  7684  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 5*8))
  7685  
  7686  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+628) != 0 {
  7687  				return TCL_ERROR
  7688  			}
  7689  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7690  			zOffvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
  7691  
  7692  			rc = (*struct {
  7693  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  7694  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseFirst})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 628)), bp+632, bp+648, bp+652)
  7695  			if rc != SQLITE_OK {
  7696  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), 0))
  7697  				return TCL_ERROR
  7698  			}
  7699  			for ; *(*int32)(unsafe.Pointer(bp + 648)) >= 0; (*struct {
  7700  				f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  7701  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNext})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+632, bp+648, bp+652) {
  7702  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 648))), 0)
  7703  				tcl.XTcl_SetVar2Ex(tls, interp, zOffvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 652))), 0)
  7704  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7705  				if rc == TCL_CONTINUE {
  7706  					rc = TCL_OK
  7707  				}
  7708  				if rc != TCL_OK {
  7709  					if rc == TCL_BREAK {
  7710  						rc = TCL_OK
  7711  					}
  7712  					break
  7713  				}
  7714  			}
  7715  
  7716  			break
  7717  
  7718  		}
  7719  
  7720  	case 17:
  7721  		{
  7722  			var zColvar uintptr
  7723  			var pScript uintptr = *(*uintptr)(unsafe.Pointer(objv + 4*8))
  7724  
  7725  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+656) != 0 {
  7726  				return TCL_ERROR
  7727  			}
  7728  			zColvar = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
  7729  
  7730  			rc = (*struct {
  7731  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  7732  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseFirstColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, *(*int32)(unsafe.Pointer(bp + 656)), bp+664, bp+680)
  7733  			if rc != SQLITE_OK {
  7734  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7735  				return TCL_ERROR
  7736  			}
  7737  			for ; *(*int32)(unsafe.Pointer(bp + 680)) >= 0; (*struct {
  7738  				f func(*libc.TLS, uintptr, uintptr, uintptr)
  7739  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer((*F5tApi)(unsafe.Pointer(p)).FpApi)).FxPhraseNextColumn})).f(tls, (*F5tApi)(unsafe.Pointer(p)).FpFts, bp+664, bp+680) {
  7740  				tcl.XTcl_SetVar2Ex(tls, interp, zColvar, uintptr(0), tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 680))), 0)
  7741  				rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
  7742  				if rc == TCL_CONTINUE {
  7743  					rc = TCL_OK
  7744  				}
  7745  				if rc != TCL_OK {
  7746  					if rc == TCL_BREAK {
  7747  						rc = TCL_OK
  7748  					}
  7749  					break
  7750  				}
  7751  			}
  7752  
  7753  			break
  7754  
  7755  		}
  7756  
  7757  	default:
  7758  		break
  7759  	}
  7760  
  7761  	if rc != SQLITE_OK {
  7762  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  7763  		return TCL_ERROR
  7764  	}
  7765  
  7766  	return TCL_OK
  7767  }
  7768  
  7769  type Sub = struct {
  7770  	FzName       uintptr
  7771  	FnArg        int32
  7772  	F__ccgo_pad1 [4]byte
  7773  	FzMsg        uintptr
  7774  }
  7775  
  7776  func xF5tFunction(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  7777  	bp := tls.Alloc(112)
  7778  	defer tls.Free(112)
  7779  
  7780  	var p uintptr = (*struct {
  7781  		f func(*libc.TLS, uintptr) uintptr
  7782  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxUserData})).f(tls, pFts)
  7783  	var pEval uintptr
  7784  	var i int32
  7785  	var rc int32
  7786  
  7787  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpApi = pApi
  7788  	(*F5tApi)(unsafe.Pointer(bp + 72)).FpFts = pFts
  7789  
  7790  	libc.Xsprintf(tls, bp+8, ts+2535, libc.VaList(bp, libc.PostIncInt64(&iCmd2, 1)))
  7791  	tcl.XTcl_CreateObjCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8, *(*uintptr)(unsafe.Pointer(&struct {
  7792  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7793  	}{xF5tApi})), bp+72, uintptr(0))
  7794  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tFunction)(unsafe.Pointer(p)).FpScript)
  7795  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  7796  	tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, bp+8, -1))
  7797  
  7798  	for i = 0; i < nVal; i++ {
  7799  		var pObj uintptr = uintptr(0)
  7800  		switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))) {
  7801  		case SQLITE_TEXT:
  7802  			pObj = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), -1)
  7803  			break
  7804  		case SQLITE_BLOB:
  7805  			pObj = tcl.XTcl_NewByteArrayObj(tls,
  7806  				sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))), sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7807  			break
  7808  		case SQLITE_INTEGER:
  7809  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7810  			break
  7811  		case SQLITE_FLOAT:
  7812  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))))
  7813  			break
  7814  		default:
  7815  			pObj = tcl.XTcl_NewObj(tls)
  7816  			break
  7817  		}
  7818  		tcl.XTcl_ListObjAppendElement(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, pObj)
  7819  	}
  7820  
  7821  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, pEval, TCL_GLOBAL_ONLY)
  7822  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7823  		var _objPtr uintptr = pEval
  7824  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7825  			tcl.XTclFreeObj(tls, _objPtr)
  7826  		}
  7827  	}
  7828  	tcl.XTcl_DeleteCommand(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp, bp+8)
  7829  
  7830  	if rc != TCL_OK {
  7831  		sqlite3.Xsqlite3_result_error(tls, pCtx, tcl.XTcl_GetStringResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp), -1)
  7832  	} else {
  7833  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*F5tFunction)(unsafe.Pointer(p)).Finterp)
  7834  
  7835  		var zType uintptr = func() uintptr {
  7836  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
  7837  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
  7838  			}
  7839  			return ts + 584
  7840  		}()
  7841  		var c int8 = *(*int8)(unsafe.Pointer(zType))
  7842  		if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
  7843  			var data uintptr = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+88)
  7844  			sqlite3.Xsqlite3_result_blob(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7845  		} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
  7846  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pVar, bp+88)
  7847  			sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(bp + 88)))
  7848  		} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
  7849  			tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+96)
  7850  			sqlite3.Xsqlite3_result_double(tls, pCtx, *(*float64)(unsafe.Pointer(bp + 96)))
  7851  		} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
  7852  			tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+104)
  7853  			sqlite3.Xsqlite3_result_int64(tls, pCtx, *(*Tcl_WideInt)(unsafe.Pointer(bp + 104)))
  7854  		} else {
  7855  			var data uintptr = tcl.XTcl_GetStringFromObj(tls, pVar, bp+88)
  7856  			sqlite3.Xsqlite3_result_text(tls, pCtx, data, *(*int32)(unsafe.Pointer(bp + 88)), libc.UintptrFromInt32(-1))
  7857  		}
  7858  	}
  7859  }
  7860  
  7861  var iCmd2 sqlite3_int64 = int64(0)
  7862  
  7863  func xF5tDestroy(tls *libc.TLS, pCtx uintptr) {
  7864  	var p uintptr = pCtx
  7865  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  7866  		var _objPtr uintptr = (*F5tFunction)(unsafe.Pointer(p)).FpScript
  7867  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  7868  			tcl.XTclFreeObj(tls, _objPtr)
  7869  		}
  7870  	}
  7871  	tcl.XTcl_Free(tls, p)
  7872  }
  7873  
  7874  func f5tCreateFunction(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7875  	bp := tls.Alloc(40)
  7876  	defer tls.Free(40)
  7877  
  7878  	var zName uintptr
  7879  	var pScript uintptr
  7880  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
  7881  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
  7882  	var pCtx uintptr = uintptr(0)
  7883  	var rc int32
  7884  
  7885  	if objc != 4 {
  7886  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  7887  		return TCL_ERROR
  7888  	}
  7889  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, bp+32) != 0 {
  7890  		return TCL_ERROR
  7891  	}
  7892  
  7893  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  7894  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  7895  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tFunction{})))
  7896  	(*F5tFunction)(unsafe.Pointer(pCtx)).Finterp = interp
  7897  	(*F5tFunction)(unsafe.Pointer(pCtx)).FpScript = pScript
  7898  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  7899  
  7900  	rc = (*struct {
  7901  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  7902  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FxCreateFunction})).f(tls,
  7903  		*(*uintptr)(unsafe.Pointer(bp + 32)), zName, pCtx, *(*uintptr)(unsafe.Pointer(&struct {
  7904  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  7905  		}{xF5tFunction})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{xF5tDestroy})))
  7906  	if rc != SQLITE_OK {
  7907  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2153, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 24))), 0))
  7908  		return TCL_ERROR
  7909  	}
  7910  
  7911  	return TCL_OK
  7912  }
  7913  
  7914  type F5tTokenizeCtx1 = struct {
  7915  	FpRet        uintptr
  7916  	FbSubst      int32
  7917  	F__ccgo_pad1 [4]byte
  7918  	FzInput      uintptr
  7919  }
  7920  
  7921  type F5tTokenizeCtx = F5tTokenizeCtx1
  7922  
  7923  func xTokenizeCb2(tls *libc.TLS, pCtx uintptr, tflags int32, zToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  7924  	var p uintptr = pCtx
  7925  	if (*F5tTokenizeCtx)(unsafe.Pointer(p)).FbSubst != 0 {
  7926  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7927  		tcl.XTcl_ListObjAppendElement(tls,
  7928  			uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, (*F5tTokenizeCtx)(unsafe.Pointer(p)).FzInput+uintptr(iStart), iEnd-iStart))
  7929  	} else {
  7930  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewStringObj(tls, zToken, nToken))
  7931  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iStart))
  7932  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), (*F5tTokenizeCtx)(unsafe.Pointer(p)).FpRet, tcl.XTcl_NewIntObj(tls, iEnd))
  7933  	}
  7934  	return SQLITE_OK
  7935  }
  7936  
  7937  func f5tTokenize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  7938  	bp := tls.Alloc(200)
  7939  	defer tls.Free(200)
  7940  
  7941  	var zText uintptr
  7942  
  7943  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
  7944  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
  7945  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
  7946  
  7947  	var pRet uintptr = uintptr(0)
  7948  
  7949  	var rc int32
  7950  
  7951  	if objc != 4 && objc != 5 {
  7952  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2596)
  7953  		return TCL_ERROR
  7954  	}
  7955  	if objc == 5 {
  7956  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
  7957  		if libc.Xstrcmp(tls, ts+2618, zOpt) != 0 {
  7958  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2625, zOpt, 0))
  7959  			return TCL_ERROR
  7960  		}
  7961  	}
  7962  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+96, bp+104) != 0 {
  7963  		return TCL_ERROR
  7964  	}
  7965  	if tcl.XTcl_SplitList(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))), bp+112, bp+120) != 0 {
  7966  		return TCL_ERROR
  7967  	}
  7968  	if *(*int32)(unsafe.Pointer(bp + 112)) == 0 {
  7969  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+2647, 0))
  7970  		tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  7971  		return TCL_ERROR
  7972  	}
  7973  	zText = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+128)
  7974  
  7975  	rc = (*struct {
  7976  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  7977  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 104)))).FxFindTokenizer})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 104)), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), bp+136, bp+144)
  7978  	if rc != SQLITE_OK {
  7979  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2647, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 120)))), 0))
  7980  		return TCL_ERROR
  7981  	}
  7982  
  7983  	rc = (*struct {
  7984  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  7985  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 136)), *(*uintptr)(unsafe.Pointer(bp + 120))+1*8, *(*int32)(unsafe.Pointer(bp + 112))-1, bp+168)
  7986  	if rc != SQLITE_OK {
  7987  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+2667, 0))
  7988  		return TCL_ERROR
  7989  	}
  7990  
  7991  	pRet = tcl.XTcl_NewObj(tls)
  7992  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
  7993  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FbSubst = libc.Bool32(objc == 5)
  7994  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FpRet = pRet
  7995  	(*F5tTokenizeCtx)(unsafe.Pointer(bp + 176)).FzInput = zText
  7996  	rc = (*struct {
  7997  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  7998  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxTokenize})).f(tls,
  7999  		*(*uintptr)(unsafe.Pointer(bp + 168)), bp+176, FTS5_TOKENIZE_DOCUMENT, zText, *(*int32)(unsafe.Pointer(bp + 128)), *(*uintptr)(unsafe.Pointer(&struct {
  8000  			f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8001  		}{xTokenizeCb2})))
  8002  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*fts5_tokenizer)(unsafe.Pointer(bp + 144)).FxDelete})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
  8003  	if rc != SQLITE_OK {
  8004  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+80, ts+2696, 0))
  8005  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8006  			var _objPtr uintptr = pRet
  8007  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8008  				tcl.XTclFreeObj(tls, _objPtr)
  8009  			}
  8010  		}
  8011  		return TCL_ERROR
  8012  	}
  8013  
  8014  	tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(bp + 120)))
  8015  	tcl.XTcl_SetObjResult(tls, interp, pRet)
  8016  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
  8017  		var _objPtr uintptr = pRet
  8018  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8019  			tcl.XTclFreeObj(tls, _objPtr)
  8020  		}
  8021  	}
  8022  	return TCL_OK
  8023  }
  8024  
  8025  type F5tTokenizerContext1 = struct {
  8026  	FpCtx   uintptr
  8027  	FxToken uintptr
  8028  }
  8029  
  8030  type F5tTokenizerContext = F5tTokenizerContext1
  8031  type F5tTokenizerModule1 = struct {
  8032  	Finterp   uintptr
  8033  	FpScript  uintptr
  8034  	FpContext uintptr
  8035  }
  8036  
  8037  type F5tTokenizerModule = F5tTokenizerModule1
  8038  type F5tTokenizerInstance1 = struct {
  8039  	Finterp   uintptr
  8040  	FpScript  uintptr
  8041  	FpContext uintptr
  8042  }
  8043  
  8044  type F5tTokenizerInstance = F5tTokenizerInstance1
  8045  
  8046  func f5tTokenizerCreate(tls *libc.TLS, pCtx uintptr, azArg uintptr, nArg int32, ppOut uintptr) int32 {
  8047  	var pMod uintptr = pCtx
  8048  	var pEval uintptr
  8049  	var rc int32 = TCL_OK
  8050  	var i int32
  8051  
  8052  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript)
  8053  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8054  	for i = 0; rc == TCL_OK && i < nArg; i++ {
  8055  		var pObj uintptr = tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)), -1)
  8056  		rc = tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, pObj)
  8057  	}
  8058  
  8059  	if rc == TCL_OK {
  8060  		rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8061  	}
  8062  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8063  		var _objPtr uintptr = pEval
  8064  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8065  			tcl.XTclFreeObj(tls, _objPtr)
  8066  		}
  8067  	}
  8068  
  8069  	if rc == TCL_OK {
  8070  		var pInst uintptr
  8071  		pInst = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerInstance{})))
  8072  		libc.Xmemset(tls, pInst, 0, uint64(unsafe.Sizeof(F5tTokenizerInstance{})))
  8073  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp
  8074  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript = tcl.XTcl_GetObjResult(tls, (*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp)
  8075  		(*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext
  8076  		(*Tcl_Obj)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)).FrefCount++
  8077  		*(*uintptr)(unsafe.Pointer(ppOut)) = pInst
  8078  	}
  8079  
  8080  	return rc
  8081  }
  8082  
  8083  func f5tTokenizerDelete(tls *libc.TLS, p uintptr) {
  8084  	var pInst uintptr = p
  8085  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8086  		var _objPtr uintptr = (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript
  8087  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8088  			tcl.XTclFreeObj(tls, _objPtr)
  8089  		}
  8090  	}
  8091  	tcl.XTcl_Free(tls, pInst)
  8092  }
  8093  
  8094  func f5tTokenizerTokenize(tls *libc.TLS, p uintptr, pCtx uintptr, flags int32, pText uintptr, nText int32, xToken uintptr) int32 {
  8095  	var pInst uintptr = p
  8096  	var pOldCtx uintptr
  8097  	var xOldToken uintptr
  8098  	var pEval uintptr
  8099  	var rc int32
  8100  	var zFlags uintptr
  8101  
  8102  	pOldCtx = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx
  8103  	xOldToken = (*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken
  8104  
  8105  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pCtx
  8106  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xToken
  8107  
  8108  	pEval = tcl.XTcl_DuplicateObj(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpScript)
  8109  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
  8110  	switch flags {
  8111  	case FTS5_TOKENIZE_DOCUMENT:
  8112  		zFlags = ts + 2727
  8113  		break
  8114  	case FTS5_TOKENIZE_AUX:
  8115  		zFlags = ts + 2736
  8116  		break
  8117  	case FTS5_TOKENIZE_QUERY:
  8118  		zFlags = ts + 2740
  8119  		break
  8120  	case FTS5_TOKENIZE_PREFIX | FTS5_TOKENIZE_QUERY:
  8121  		zFlags = ts + 2746
  8122  		break
  8123  	default:
  8124  		zFlags = ts + 2758
  8125  		break
  8126  	}
  8127  
  8128  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zFlags, -1))
  8129  	tcl.XTcl_ListObjAppendElement(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, pText, nText))
  8130  	rc = tcl.XTcl_EvalObjEx(tls, (*F5tTokenizerInstance)(unsafe.Pointer(pInst)).Finterp, pEval, TCL_GLOBAL_ONLY)
  8131  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8132  		var _objPtr uintptr = pEval
  8133  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8134  			tcl.XTclFreeObj(tls, _objPtr)
  8135  		}
  8136  	}
  8137  
  8138  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FpCtx = pOldCtx
  8139  	(*F5tTokenizerContext)(unsafe.Pointer((*F5tTokenizerInstance)(unsafe.Pointer(pInst)).FpContext)).FxToken = xOldToken
  8140  	return rc
  8141  }
  8142  
  8143  func f5tTokenizerReturn(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8144  	bp := tls.Alloc(32)
  8145  	defer tls.Free(32)
  8146  
  8147  	var p uintptr
  8148  
  8149  	var tflags int32
  8150  	var zToken uintptr
  8151  	var rc int32
  8152  
  8153  	var zArg uintptr
  8154  	p = clientData
  8155  	tflags = 0
  8156  
  8157  	if !(objc == 5) {
  8158  		goto __1
  8159  	}
  8160  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
  8161  	if !(*(*int32)(unsafe.Pointer(bp + 16)) <= 10 && *(*int32)(unsafe.Pointer(bp + 16)) >= 2 && libc.Xmemcmp(tls, ts+2766, zArg, uint64(*(*int32)(unsafe.Pointer(bp + 16)))) == 0) {
  8162  		goto __3
  8163  	}
  8164  	tflags = tflags | FTS5_TOKEN_COLOCATED
  8165  	goto __4
  8166  __3:
  8167  	goto usage
  8168  __4:
  8169  	;
  8170  	goto __2
  8171  __1:
  8172  	if !(objc != 4) {
  8173  		goto __5
  8174  	}
  8175  	goto usage
  8176  __5:
  8177  	;
  8178  __2:
  8179  	;
  8180  	zToken = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)), bp+20)
  8181  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+24) != 0 ||
  8182  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+28) != 0) {
  8183  		goto __6
  8184  	}
  8185  	return TCL_ERROR
  8186  __6:
  8187  	;
  8188  	if !((*F5tTokenizerContext)(unsafe.Pointer(p)).FxToken == uintptr(0)) {
  8189  		goto __7
  8190  	}
  8191  	tcl.XTcl_AppendResult(tls, interp,
  8192  		libc.VaList(bp, ts+2777, 0))
  8193  	return TCL_ERROR
  8194  __7:
  8195  	;
  8196  	rc = (*struct {
  8197  		f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  8198  	})(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)))
  8199  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8200  	if rc == SQLITE_OK {
  8201  		return TCL_OK
  8202  	}
  8203  	return TCL_ERROR
  8204  
  8205  usage:
  8206  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2835)
  8207  	return TCL_ERROR
  8208  }
  8209  
  8210  func f5tDelTokenizer(tls *libc.TLS, pCtx uintptr) {
  8211  	var pMod uintptr = pCtx
  8212  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
  8213  		var _objPtr uintptr = (*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript
  8214  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
  8215  			tcl.XTclFreeObj(tls, _objPtr)
  8216  		}
  8217  	}
  8218  	tcl.XTcl_Free(tls, pMod)
  8219  }
  8220  
  8221  func f5tCreateTokenizer(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
  8222  	bp := tls.Alloc(56)
  8223  	defer tls.Free(56)
  8224  
  8225  	var pContext uintptr = clientData
  8226  
  8227  	var zName uintptr
  8228  	var pScript uintptr
  8229  
  8230  	var pMod uintptr
  8231  	var rc int32
  8232  
  8233  	if objc != 4 {
  8234  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2581)
  8235  		return TCL_ERROR
  8236  	}
  8237  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, bp+24) != 0 {
  8238  		return TCL_ERROR
  8239  	}
  8240  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
  8241  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
  8242  
  8243  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxCreate = *(*uintptr)(unsafe.Pointer(&struct {
  8244  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8245  	}{f5tTokenizerCreate}))
  8246  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxTokenize = *(*uintptr)(unsafe.Pointer(&struct {
  8247  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  8248  	}{f5tTokenizerTokenize}))
  8249  	(*fts5_tokenizer)(unsafe.Pointer(bp + 32)).FxDelete = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tTokenizerDelete}))
  8250  
  8251  	pMod = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerModule{})))
  8252  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).Finterp = interp
  8253  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpScript = pScript
  8254  	(*F5tTokenizerModule)(unsafe.Pointer(pMod)).FpContext = pContext
  8255  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
  8256  	rc = (*struct {
  8257  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr, uintptr) int32
  8258  	})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)))).FxCreateTokenizer})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), zName, pMod, bp+32, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{f5tDelTokenizer})))
  8259  	if rc != SQLITE_OK {
  8260  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2863, 0))
  8261  		return TCL_ERROR
  8262  	}
  8263  
  8264  	return TCL_OK
  8265  }
  8266  
  8267  func xF5tFree(tls *libc.TLS, clientData ClientData) {
  8268  	tcl.XTcl_Free(tls, clientData)
  8269  }
  8270  
  8271  func f5tMayBeCorrupt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8272  	return TCL_OK
  8273  }
  8274  
  8275  func f5t_fts5HashKey(tls *libc.TLS, nSlot int32, p uintptr, n int32) uint32 {
  8276  	var i int32
  8277  	var h uint32 = uint32(13)
  8278  	for i = n - 1; i >= 0; i-- {
  8279  		h = h<<3 ^ h ^ uint32(*(*int8)(unsafe.Pointer(p + uintptr(i))))
  8280  	}
  8281  	return h % uint32(nSlot)
  8282  }
  8283  
  8284  func f5tTokenHash(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8285  	bp := tls.Alloc(8)
  8286  	defer tls.Free(8)
  8287  
  8288  	var z uintptr
  8289  
  8290  	var iVal uint32
  8291  
  8292  	if objc != 3 {
  8293  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2900)
  8294  		return TCL_ERROR
  8295  	}
  8296  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8297  		return TCL_ERROR
  8298  	}
  8299  	z = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
  8300  
  8301  	iVal = f5t_fts5HashKey(tls, *(*int32)(unsafe.Pointer(bp)), z, *(*int32)(unsafe.Pointer(bp + 4)))
  8302  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(iVal)))
  8303  	return TCL_OK
  8304  }
  8305  
  8306  func f5tRegisterMatchinfo(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8307  	bp := tls.Alloc(8)
  8308  	defer tls.Free(8)
  8309  
  8310  	var rc int32
  8311  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8312  
  8313  	if objc != 2 {
  8314  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8315  		return TCL_ERROR
  8316  	}
  8317  	if f5tDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
  8318  		return TCL_ERROR
  8319  	}
  8320  
  8321  	rc = sqlite3Fts5TestRegisterMatchinfo(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8322  	if rc != SQLITE_OK {
  8323  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8324  		return TCL_ERROR
  8325  	}
  8326  	return TCL_OK
  8327  }
  8328  
  8329  func f5tRegisterTok(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
  8330  	bp := tls.Alloc(16)
  8331  	defer tls.Free(16)
  8332  
  8333  	var rc int32
  8334  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8335  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8336  
  8337  	if objc != 2 {
  8338  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
  8339  		return TCL_ERROR
  8340  	}
  8341  	if f5tDbAndApi(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
  8342  		return TCL_ERROR
  8343  	}
  8344  
  8345  	rc = sqlite3Fts5TestRegisterTok(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
  8346  	if rc != SQLITE_OK {
  8347  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
  8348  		return TCL_ERROR
  8349  	}
  8350  	return TCL_OK
  8351  }
  8352  
  8353  func Fts5tcl_Init(tls *libc.TLS, interp uintptr) int32 {
  8354  	var i int32
  8355  	var pContext uintptr
  8356  
  8357  	pContext = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(F5tTokenizerContext{})))
  8358  	libc.Xmemset(tls, pContext, 0, uint64(unsafe.Sizeof(F5tTokenizerContext{})))
  8359  
  8360  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd))/uint64(unsafe.Sizeof(struct {
  8361  		FzName        uintptr
  8362  		FxProc        uintptr
  8363  		FbTokenizeCtx int32
  8364  		F__ccgo_pad1  [4]byte
  8365  	}{})); i++ {
  8366  		var p uintptr = uintptr(unsafe.Pointer(&aCmd)) + uintptr(i)*24
  8367  		var pCtx uintptr = uintptr(0)
  8368  		if (*struct {
  8369  			FzName        uintptr
  8370  			FxProc        uintptr
  8371  			FbTokenizeCtx int32
  8372  			F__ccgo_pad1  [4]byte
  8373  		})(unsafe.Pointer(p)).FbTokenizeCtx != 0 {
  8374  			pCtx = pContext
  8375  		}
  8376  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
  8377  			FzName        uintptr
  8378  			FxProc        uintptr
  8379  			FbTokenizeCtx int32
  8380  			F__ccgo_pad1  [4]byte
  8381  		})(unsafe.Pointer(p)).FzName, (*struct {
  8382  			FzName        uintptr
  8383  			FxProc        uintptr
  8384  			FbTokenizeCtx int32
  8385  			F__ccgo_pad1  [4]byte
  8386  		})(unsafe.Pointer(p)).FxProc, pCtx, func() uintptr {
  8387  			if i != 0 {
  8388  				return uintptr(0)
  8389  			}
  8390  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{xF5tFree}))
  8391  		}())
  8392  	}
  8393  
  8394  	return TCL_OK
  8395  }
  8396  
  8397  var aCmd = [8]struct {
  8398  	FzName        uintptr
  8399  	FxProc        uintptr
  8400  	FbTokenizeCtx int32
  8401  	F__ccgo_pad1  [4]byte
  8402  }{
  8403  	{FzName: ts + 2912, FxProc: 0, FbTokenizeCtx: 1},
  8404  	{FzName: ts + 2942, FxProc: 0, FbTokenizeCtx: 1},
  8405  	{FzName: ts + 2961, FxProc: 0},
  8406  	{FzName: ts + 2983, FxProc: 0},
  8407  	{FzName: ts + 3012, FxProc: 0},
  8408  	{FzName: ts + 3040, FxProc: 0},
  8409  	{FzName: ts + 3064, FxProc: 0},
  8410  	{FzName: ts + 3096, FxProc: 0},
  8411  }
  8412  
  8413  type Fts5MatchinfoCtx1 = struct {
  8414  	FnCol        int32
  8415  	FnPhrase     int32
  8416  	FzArg        uintptr
  8417  	FnRet        int32
  8418  	F__ccgo_pad1 [4]byte
  8419  	FaRet        uintptr
  8420  }
  8421  
  8422  type Fts5MatchinfoCtx = Fts5MatchinfoCtx1
  8423  
  8424  type u32 = uint32
  8425  
  8426  func fts5_api_from_db(tls *libc.TLS, db uintptr, ppApi uintptr) int32 {
  8427  	bp := tls.Alloc(8)
  8428  	defer tls.Free(8)
  8429  
  8430  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8431  	var rc int32
  8432  
  8433  	*(*uintptr)(unsafe.Pointer(ppApi)) = uintptr(0)
  8434  	rc = sqlite3.Xsqlite3_prepare(tls, db, ts+2137, -1, bp, uintptr(0))
  8435  	if rc == SQLITE_OK {
  8436  		sqlite3.Xsqlite3_bind_pointer(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, ppApi, ts+2161, uintptr(0))
  8437  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8438  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8439  	}
  8440  
  8441  	return rc
  8442  }
  8443  
  8444  func fts5MatchinfoFlagsize(tls *libc.TLS, nCol int32, nPhrase int32, f int8) int32 {
  8445  	var ret int32 = -1
  8446  	switch int32(f) {
  8447  	case 'p':
  8448  		ret = 1
  8449  		break
  8450  	case 'c':
  8451  		ret = 1
  8452  		break
  8453  	case 'x':
  8454  		ret = 3 * nCol * nPhrase
  8455  		break
  8456  	case 'y':
  8457  		ret = nCol * nPhrase
  8458  		break
  8459  	case 'b':
  8460  		ret = (nCol + 31) / 32 * nPhrase
  8461  		break
  8462  	case 'n':
  8463  		ret = 1
  8464  		break
  8465  	case 'a':
  8466  		ret = nCol
  8467  		break
  8468  	case 'l':
  8469  		ret = nCol
  8470  		break
  8471  	case 's':
  8472  		ret = nCol
  8473  		break
  8474  	}
  8475  	return ret
  8476  }
  8477  
  8478  func fts5MatchinfoIter(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, x uintptr) int32 {
  8479  	var i int32
  8480  	var n int32 = 0
  8481  	var rc int32 = SQLITE_OK
  8482  	var f int8
  8483  	for i = 0; libc.AssignInt8(&f, *(*int8)(unsafe.Pointer((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg + uintptr(i)))) != 0; i++ {
  8484  		rc = (*struct {
  8485  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8486  		})(unsafe.Pointer(&struct{ uintptr }{x})).f(tls, pApi, pFts, p, f, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet+uintptr(n)*4)
  8487  		if rc != SQLITE_OK {
  8488  			break
  8489  		}
  8490  		n = n + fts5MatchinfoFlagsize(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase, f)
  8491  	}
  8492  	return rc
  8493  }
  8494  
  8495  func fts5MatchinfoXCb(tls *libc.TLS, pApi uintptr, pFts uintptr, pUserData uintptr) int32 {
  8496  	bp := tls.Alloc(24)
  8497  	defer tls.Free(24)
  8498  
  8499  	var aOut uintptr = pUserData
  8500  	var iPrev int32 = -1
  8501  
  8502  	for (*struct {
  8503  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8504  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirst})).f(tls, pFts, 0, bp, bp+16, bp+20); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  8505  		f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8506  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp, bp+16, bp+20) {
  8507  		*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+1)*4))++
  8508  		if *(*int32)(unsafe.Pointer(bp + 16)) != iPrev {
  8509  			*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 16))*3+2)*4))++
  8510  		}
  8511  		iPrev = *(*int32)(unsafe.Pointer(bp + 16))
  8512  	}
  8513  
  8514  	return SQLITE_OK
  8515  }
  8516  
  8517  func fts5MatchinfoGlobalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8518  	bp := tls.Alloc(24)
  8519  	defer tls.Free(24)
  8520  
  8521  	var rc int32 = SQLITE_OK
  8522  	switch int32(f) {
  8523  	case 'p':
  8524  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase)
  8525  		break
  8526  
  8527  	case 'c':
  8528  		*(*u32)(unsafe.Pointer(aOut)) = u32((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol)
  8529  		break
  8530  
  8531  	case 'x':
  8532  		{
  8533  			var i int32
  8534  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase && rc == SQLITE_OK; i++ {
  8535  				var pPtr uintptr = aOut + uintptr(i*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*3)*4
  8536  				rc = (*struct {
  8537  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8538  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxQueryPhrase})).f(tls, pFts, i, pPtr, *(*uintptr)(unsafe.Pointer(&struct {
  8539  					f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8540  				}{fts5MatchinfoXCb})))
  8541  			}
  8542  			break
  8543  
  8544  		}
  8545  
  8546  	case 'n':
  8547  		{
  8548  			rc = (*struct {
  8549  				f func(*libc.TLS, uintptr, uintptr) int32
  8550  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp)
  8551  			*(*u32)(unsafe.Pointer(aOut)) = u32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
  8552  			break
  8553  
  8554  		}
  8555  
  8556  	case 'a':
  8557  		{
  8558  			*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = int64(0)
  8559  			rc = (*struct {
  8560  				f func(*libc.TLS, uintptr, uintptr) int32
  8561  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxRowCount})).f(tls, pFts, bp+8)
  8562  			if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
  8563  				libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8564  			} else {
  8565  				var i int32
  8566  				for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8567  					rc = (*struct {
  8568  						f func(*libc.TLS, uintptr, int32, uintptr) int32
  8569  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnTotalSize})).f(tls, pFts, i, bp+16)
  8570  					if rc == SQLITE_OK {
  8571  						*(*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))))
  8572  					}
  8573  				}
  8574  			}
  8575  			break
  8576  
  8577  		}
  8578  
  8579  	}
  8580  	return rc
  8581  }
  8582  
  8583  func fts5MatchinfoLocalCb(tls *libc.TLS, pApi uintptr, pFts uintptr, p uintptr, f int8, aOut uintptr) int32 {
  8584  	bp := tls.Alloc(80)
  8585  	defer tls.Free(80)
  8586  
  8587  	var i int32
  8588  	var rc int32 = SQLITE_OK
  8589  
  8590  	switch int32(f) {
  8591  	case 'b':
  8592  		{
  8593  			var iPhrase int32
  8594  			var nInt int32 = ((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol + 31) / 32 * (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase
  8595  			for i = 0; i < nInt; i++ {
  8596  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(0)
  8597  			}
  8598  
  8599  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8600  				for (*struct {
  8601  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
  8602  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirstColumn})).f(tls, pFts, iPhrase, bp, bp+16); *(*int32)(unsafe.Pointer(bp + 16)) >= 0; (*struct {
  8603  					f func(*libc.TLS, uintptr, uintptr, uintptr)
  8604  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNextColumn})).f(tls, pFts, bp, bp+16) {
  8605  					*(*u32)(unsafe.Pointer(aOut + uintptr(iPhrase*(((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol+31)/32)+*(*int32)(unsafe.Pointer(bp + 16))/32)*4)) |= u32(1) << (*(*int32)(unsafe.Pointer(bp + 16)) % 32)
  8606  				}
  8607  			}
  8608  
  8609  			break
  8610  
  8611  		}
  8612  
  8613  	case 'x':
  8614  		fallthrough
  8615  	case 'y':
  8616  		{
  8617  			var nMul int32 = func() int32 {
  8618  				if int32(f) == 'x' {
  8619  					return 3
  8620  				}
  8621  				return 1
  8622  			}()
  8623  			var iPhrase int32
  8624  
  8625  			for i = 0; i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; i++ {
  8626  				*(*u32)(unsafe.Pointer(aOut + uintptr(i*nMul)*4)) = u32(0)
  8627  			}
  8628  
  8629  			for iPhrase = 0; iPhrase < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase; iPhrase++ {
  8630  				for (*struct {
  8631  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8632  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseFirst})).f(tls, pFts, iPhrase, bp+24, bp+40, bp+44); *(*int32)(unsafe.Pointer(bp + 44)) >= 0; (*struct {
  8633  					f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr)
  8634  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseNext})).f(tls, pFts, bp+24, bp+40, bp+44) {
  8635  					*(*u32)(unsafe.Pointer(aOut + uintptr(nMul*(*(*int32)(unsafe.Pointer(bp + 40))+iPhrase*(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))*4))++
  8636  				}
  8637  			}
  8638  
  8639  			break
  8640  
  8641  		}
  8642  
  8643  	case 'l':
  8644  		{
  8645  			for i = 0; rc == SQLITE_OK && i < (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol; i++ {
  8646  				rc = (*struct {
  8647  					f func(*libc.TLS, uintptr, int32, uintptr) int32
  8648  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnSize})).f(tls, pFts, i, bp+48)
  8649  				*(*u32)(unsafe.Pointer(aOut + uintptr(i)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 48)))
  8650  			}
  8651  			break
  8652  
  8653  		}
  8654  
  8655  	case 's':
  8656  		{
  8657  			libc.Xmemset(tls, aOut, 0, uint64(unsafe.Sizeof(u32(0)))*uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol))
  8658  
  8659  			rc = (*struct {
  8660  				f func(*libc.TLS, uintptr, uintptr) int32
  8661  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInstCount})).f(tls, pFts, bp+52)
  8662  			for i = 0; rc == SQLITE_OK && i < *(*int32)(unsafe.Pointer(bp + 52)); i++ {
  8663  				*(*int32)(unsafe.Pointer(bp + 60)) = 0
  8664  				var iNextPhrase int32
  8665  				var iNextOff int32
  8666  				var nSeq u32 = u32(1)
  8667  				var j int32
  8668  
  8669  				rc = (*struct {
  8670  					f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8671  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, i, bp+56, bp+60, bp+64)
  8672  				iNextPhrase = *(*int32)(unsafe.Pointer(bp + 56)) + 1
  8673  				iNextOff = *(*int32)(unsafe.Pointer(bp + 64)) + (*struct {
  8674  					f func(*libc.TLS, uintptr, int32) int32
  8675  				})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, 0)
  8676  				for j = i + 1; rc == SQLITE_OK && j < *(*int32)(unsafe.Pointer(bp + 52)); j++ {
  8677  					rc = (*struct {
  8678  						f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32
  8679  					})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxInst})).f(tls, pFts, j, bp+68, bp+72, bp+76)
  8680  					if *(*int32)(unsafe.Pointer(bp + 72)) != *(*int32)(unsafe.Pointer(bp + 60)) || *(*int32)(unsafe.Pointer(bp + 76)) > iNextOff {
  8681  						break
  8682  					}
  8683  					if *(*int32)(unsafe.Pointer(bp + 68)) == iNextPhrase && *(*int32)(unsafe.Pointer(bp + 76)) == iNextOff {
  8684  						nSeq++
  8685  						iNextPhrase = *(*int32)(unsafe.Pointer(bp + 68)) + 1
  8686  						iNextOff = *(*int32)(unsafe.Pointer(bp + 76)) + (*struct {
  8687  							f func(*libc.TLS, uintptr, int32) int32
  8688  						})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseSize})).f(tls, pFts, *(*int32)(unsafe.Pointer(bp + 68)))
  8689  					}
  8690  				}
  8691  
  8692  				if nSeq > *(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) {
  8693  					*(*u32)(unsafe.Pointer(aOut + uintptr(*(*int32)(unsafe.Pointer(bp + 60)))*4)) = nSeq
  8694  				}
  8695  			}
  8696  
  8697  			break
  8698  
  8699  		}
  8700  	}
  8701  	return rc
  8702  }
  8703  
  8704  func fts5MatchinfoNew(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, zArg uintptr) uintptr {
  8705  	bp := tls.Alloc(8)
  8706  	defer tls.Free(8)
  8707  
  8708  	var p uintptr
  8709  	var nCol int32
  8710  	var nPhrase int32
  8711  	var i int32
  8712  	var nInt int32
  8713  	var nByte sqlite3_int64
  8714  	var rc int32
  8715  
  8716  	nCol = (*struct {
  8717  		f func(*libc.TLS, uintptr) int32
  8718  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxColumnCount})).f(tls, pFts)
  8719  	nPhrase = (*struct {
  8720  		f func(*libc.TLS, uintptr) int32
  8721  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxPhraseCount})).f(tls, pFts)
  8722  
  8723  	nInt = 0
  8724  	for i = 0; *(*int8)(unsafe.Pointer(zArg + uintptr(i))) != 0; i++ {
  8725  		var n int32 = fts5MatchinfoFlagsize(tls, nCol, nPhrase, *(*int8)(unsafe.Pointer(zArg + uintptr(i))))
  8726  		if n < 0 {
  8727  			var zErr uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+3131, libc.VaList(bp, int32(*(*int8)(unsafe.Pointer(zArg + uintptr(i))))))
  8728  			sqlite3.Xsqlite3_result_error(tls, pCtx, zErr, -1)
  8729  			sqlite3.Xsqlite3_free(tls, zErr)
  8730  			return uintptr(0)
  8731  		}
  8732  		nInt = nInt + n
  8733  	}
  8734  
  8735  	nByte = sqlite3_int64(uint64(unsafe.Sizeof(Fts5MatchinfoCtx{})) +
  8736  		uint64(unsafe.Sizeof(u32(0)))*uint64(nInt) +
  8737  		uint64(i+1))
  8738  	p = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
  8739  	if p == uintptr(0) {
  8740  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
  8741  		return uintptr(0)
  8742  	}
  8743  	libc.Xmemset(tls, p, 0, uint64(nByte))
  8744  
  8745  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnCol = nCol
  8746  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnPhrase = nPhrase
  8747  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet = p + 1*32
  8748  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet = nInt
  8749  	(*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg = (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet + uintptr(nInt)*4
  8750  	libc.Xmemcpy(tls, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg, zArg, uint64(i))
  8751  
  8752  	rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8753  		f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8754  	}{fts5MatchinfoGlobalCb})))
  8755  	if rc != SQLITE_OK {
  8756  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8757  		sqlite3.Xsqlite3_free(tls, p)
  8758  		p = uintptr(0)
  8759  	}
  8760  
  8761  	return p
  8762  }
  8763  
  8764  func fts5MatchinfoFunc(tls *libc.TLS, pApi uintptr, pFts uintptr, pCtx uintptr, nVal int32, apVal uintptr) {
  8765  	var zArg uintptr
  8766  	var p uintptr
  8767  	var rc int32 = SQLITE_OK
  8768  
  8769  	if nVal > 0 {
  8770  		zArg = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  8771  	} else {
  8772  		zArg = ts + 3163
  8773  	}
  8774  
  8775  	p = (*struct {
  8776  		f func(*libc.TLS, uintptr, int32) uintptr
  8777  	})(unsafe.Pointer(&struct{ uintptr }{(*Fts5ExtensionApi)(unsafe.Pointer(pApi)).FxGetAuxdata})).f(tls, pFts, 0)
  8778  	if p == uintptr(0) || sqlite3.Xsqlite3_stricmp(tls, zArg, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FzArg) != 0 {
  8779  		p = fts5MatchinfoNew(tls, pApi, pFts, pCtx, zArg)
  8780  		if p == uintptr(0) {
  8781  			rc = SQLITE_NOMEM
  8782  		} else {
  8783  			rc = (*struct {
  8784  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
  8785  			})(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})))
  8786  		}
  8787  	}
  8788  
  8789  	if rc == SQLITE_OK {
  8790  		rc = fts5MatchinfoIter(tls, pApi, pFts, p, *(*uintptr)(unsafe.Pointer(&struct {
  8791  			f func(*libc.TLS, uintptr, uintptr, uintptr, int8, uintptr) int32
  8792  		}{fts5MatchinfoLocalCb})))
  8793  	}
  8794  	if rc != SQLITE_OK {
  8795  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
  8796  	} else {
  8797  		var nByte int32 = int32(uint64((*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FnRet) * uint64(unsafe.Sizeof(u32(0))))
  8798  		sqlite3.Xsqlite3_result_blob(tls, pCtx, (*Fts5MatchinfoCtx)(unsafe.Pointer(p)).FaRet, nByte, libc.UintptrFromInt32(-1))
  8799  	}
  8800  }
  8801  
  8802  func sqlite3Fts5TestRegisterMatchinfo(tls *libc.TLS, db uintptr) int32 {
  8803  	bp := tls.Alloc(8)
  8804  	defer tls.Free(8)
  8805  
  8806  	var rc int32
  8807  
  8808  	rc = fts5_api_from_db(tls, db, bp)
  8809  	if rc != SQLITE_OK {
  8810  		return rc
  8811  	}
  8812  
  8813  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) || (*fts5_api)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FiVersion < 2 {
  8814  		return SQLITE_ERROR
  8815  	}
  8816  
  8817  	rc = (*struct {
  8818  		f func(*libc.TLS, uintptr, uintptr, uintptr, fts5_extension_function, uintptr) int32
  8819  	})(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 {
  8820  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr)
  8821  	}{fts5MatchinfoFunc})), uintptr(0))
  8822  
  8823  	return rc
  8824  }
  8825  
  8826  type Fts5tokTable1 = struct {
  8827  	Fbase sqlite3_vtab
  8828  	Ftok  fts5_tokenizer
  8829  	FpTok uintptr
  8830  }
  8831  
  8832  type Fts5tokTable = Fts5tokTable1
  8833  type Fts5tokCursor1 = struct {
  8834  	Fbase        sqlite3_vtab_cursor
  8835  	FiRowid      int32
  8836  	F__ccgo_pad1 [4]byte
  8837  	FzInput      uintptr
  8838  	FnRow        int32
  8839  	F__ccgo_pad2 [4]byte
  8840  	FaRow        uintptr
  8841  }
  8842  
  8843  type Fts5tokCursor = Fts5tokCursor1
  8844  type Fts5tokRow1 = struct {
  8845  	FzToken      uintptr
  8846  	FiStart      int32
  8847  	FiEnd        int32
  8848  	FiPos        int32
  8849  	F__ccgo_pad1 [4]byte
  8850  }
  8851  
  8852  type Fts5tokRow = Fts5tokRow1
  8853  
  8854  func fts5tokDequote(tls *libc.TLS, z uintptr) {
  8855  	var q int8 = *(*int8)(unsafe.Pointer(z))
  8856  
  8857  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
  8858  		var iIn int32 = 1
  8859  		var iOut int32 = 0
  8860  		if int32(q) == '[' {
  8861  			q = int8(']')
  8862  		}
  8863  
  8864  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
  8865  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
  8866  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
  8867  					iIn++
  8868  					break
  8869  				} else {
  8870  					iIn = iIn + 2
  8871  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
  8872  				}
  8873  			} else {
  8874  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
  8875  			}
  8876  		}
  8877  
  8878  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
  8879  	}
  8880  }
  8881  
  8882  func fts5tokDequoteArray(tls *libc.TLS, argc int32, argv uintptr, pazDequote uintptr) int32 {
  8883  	var rc int32 = SQLITE_OK
  8884  	if argc == 0 {
  8885  		*(*uintptr)(unsafe.Pointer(pazDequote)) = uintptr(0)
  8886  	} else {
  8887  		var i int32
  8888  		var nByte int32 = 0
  8889  		var azDequote uintptr
  8890  
  8891  		for i = 0; i < argc; i++ {
  8892  			nByte = nByte + int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))+uint64(1))
  8893  		}
  8894  
  8895  		*(*uintptr)(unsafe.Pointer(pazDequote)) = libc.AssignUintptr(&azDequote, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(argc)+uint64(nByte)))
  8896  		if azDequote == uintptr(0) {
  8897  			rc = SQLITE_NOMEM
  8898  		} else {
  8899  			var pSpace uintptr = azDequote + uintptr(argc)*8
  8900  			for i = 0; i < argc; i++ {
  8901  				var n int32 = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
  8902  				*(*uintptr)(unsafe.Pointer(azDequote + uintptr(i)*8)) = pSpace
  8903  				libc.Xmemcpy(tls, pSpace, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), uint64(n+1))
  8904  				fts5tokDequote(tls, pSpace)
  8905  				pSpace += uintptr(n + 1)
  8906  			}
  8907  		}
  8908  	}
  8909  
  8910  	return rc
  8911  }
  8912  
  8913  func fts5tokConnectMethod(tls *libc.TLS, db uintptr, pCtx uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
  8914  	bp := tls.Alloc(16)
  8915  	defer tls.Free(16)
  8916  
  8917  	var pApi uintptr = pCtx
  8918  	var pTab uintptr = uintptr(0)
  8919  	var rc int32
  8920  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
  8921  	var nDequote int32 = 0
  8922  
  8923  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
  8924  		ts+3177)
  8925  
  8926  	if rc == SQLITE_OK {
  8927  		nDequote = argc - 3
  8928  		rc = fts5tokDequoteArray(tls, nDequote, argv+3*8, bp)
  8929  	}
  8930  
  8931  	if rc == SQLITE_OK {
  8932  		pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokTable{})))
  8933  		if pTab == uintptr(0) {
  8934  			rc = SQLITE_NOMEM
  8935  		} else {
  8936  			libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(Fts5tokTable{})))
  8937  		}
  8938  	}
  8939  
  8940  	if rc == SQLITE_OK {
  8941  		*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
  8942  		var zModule uintptr = uintptr(0)
  8943  		if nDequote > 0 {
  8944  			zModule = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp))))
  8945  		}
  8946  
  8947  		rc = (*struct {
  8948  			f func(*libc.TLS, uintptr, uintptr, uintptr, uintptr) int32
  8949  		})(unsafe.Pointer(&struct{ uintptr }{(*fts5_api)(unsafe.Pointer(pApi)).FxFindTokenizer})).f(tls, pApi, zModule, bp+8, pTab+24)
  8950  		if rc == SQLITE_OK {
  8951  			var azArg uintptr = func() uintptr {
  8952  				if nDequote > 1 {
  8953  					return *(*uintptr)(unsafe.Pointer(bp)) + 1*8
  8954  				}
  8955  				return uintptr(0)
  8956  			}()
  8957  			var nArg int32
  8958  			if nDequote > 0 {
  8959  				nArg = nDequote - 1
  8960  			} else {
  8961  				nArg = 0
  8962  			}
  8963  			rc = (*struct {
  8964  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  8965  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxCreate})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), azArg, nArg, pTab+48)
  8966  		}
  8967  	}
  8968  
  8969  	if rc != SQLITE_OK {
  8970  		sqlite3.Xsqlite3_free(tls, pTab)
  8971  		pTab = uintptr(0)
  8972  	}
  8973  
  8974  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
  8975  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
  8976  	return rc
  8977  }
  8978  
  8979  func fts5tokDisconnectMethod(tls *libc.TLS, pVtab uintptr) int32 {
  8980  	var pTab uintptr = pVtab
  8981  	if (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok != 0 {
  8982  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxDelete})).f(tls, (*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok)
  8983  	}
  8984  	sqlite3.Xsqlite3_free(tls, pTab)
  8985  	return SQLITE_OK
  8986  }
  8987  
  8988  func fts5tokBestIndexMethod(tls *libc.TLS, pVTab uintptr, pInfo uintptr) int32 {
  8989  	var i int32
  8990  
  8991  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pInfo)).FnConstraint; i++ {
  8992  		if (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 &&
  8993  			(*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).FiColumn == 0 &&
  8994  			int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraint+uintptr(i)*12)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
  8995  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 1
  8996  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
  8997  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
  8998  			(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FestimatedCost = float64(1)
  8999  			return SQLITE_OK
  9000  		}
  9001  	}
  9002  
  9003  	(*sqlite3_index_info)(unsafe.Pointer(pInfo)).FidxNum = 0
  9004  
  9005  	return SQLITE_OK
  9006  }
  9007  
  9008  func fts5tokOpenMethod(tls *libc.TLS, pVTab uintptr, ppCsr uintptr) int32 {
  9009  	var pCsr uintptr
  9010  
  9011  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Fts5tokCursor{})))
  9012  	if pCsr == uintptr(0) {
  9013  		return SQLITE_NOMEM
  9014  	}
  9015  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(Fts5tokCursor{})))
  9016  
  9017  	*(*uintptr)(unsafe.Pointer(ppCsr)) = pCsr
  9018  	return SQLITE_OK
  9019  }
  9020  
  9021  func fts5tokResetCursor(tls *libc.TLS, pCsr uintptr) {
  9022  	var i int32
  9023  	for i = 0; i < (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow; i++ {
  9024  		sqlite3.Xsqlite3_free(tls, (*Fts5tokRow)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow+uintptr(i)*24)).FzToken)
  9025  	}
  9026  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput)
  9027  	sqlite3.Xsqlite3_free(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow)
  9028  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = uintptr(0)
  9029  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = uintptr(0)
  9030  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow = 0
  9031  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid = 0
  9032  }
  9033  
  9034  func fts5tokCloseMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9035  	var pCsr uintptr = pCursor
  9036  	fts5tokResetCursor(tls, pCsr)
  9037  	sqlite3.Xsqlite3_free(tls, pCsr)
  9038  	return SQLITE_OK
  9039  }
  9040  
  9041  func fts5tokNextMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9042  	var pCsr uintptr = pCursor
  9043  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid++
  9044  	return SQLITE_OK
  9045  }
  9046  
  9047  func fts5tokCb(tls *libc.TLS, pCtx uintptr, tflags int32, pToken uintptr, nToken int32, iStart int32, iEnd int32) int32 {
  9048  	var pCsr uintptr = pCtx
  9049  	var pRow uintptr
  9050  
  9051  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow&((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow-1) == 0 {
  9052  		var nNew int32
  9053  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9054  			nNew = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow * 2
  9055  		} else {
  9056  			nNew = 32
  9057  		}
  9058  		var aNew uintptr
  9059  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow, uint64(nNew)*uint64(unsafe.Sizeof(Fts5tokRow{})))
  9060  		if aNew == uintptr(0) {
  9061  			return SQLITE_NOMEM
  9062  		}
  9063  		libc.Xmemset(tls, aNew+uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24, 0, uint64(unsafe.Sizeof(Fts5tokRow{}))*uint64(nNew-(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow))
  9064  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow = aNew
  9065  	}
  9066  
  9067  	pRow = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)*24
  9068  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart = iStart
  9069  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd = iEnd
  9070  	if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow != 0 {
  9071  		(*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos = (*Fts5tokRow)(unsafe.Pointer(pRow+libc.UintptrFromInt32(-1)*24)).FiPos + func() int32 {
  9072  			if tflags&FTS5_TOKEN_COLOCATED != 0 {
  9073  				return 0
  9074  			}
  9075  			return 1
  9076  		}()
  9077  	}
  9078  	(*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken = sqlite3.Xsqlite3_malloc(tls, nToken+1)
  9079  	if (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken == uintptr(0) {
  9080  		return SQLITE_NOMEM
  9081  	}
  9082  	libc.Xmemcpy(tls, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, pToken, uint64(nToken))
  9083  	*(*int8)(unsafe.Pointer((*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken + uintptr(nToken))) = int8(0)
  9084  	(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow++
  9085  
  9086  	return SQLITE_OK
  9087  }
  9088  
  9089  func fts5tokFilterMethod(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, nVal int32, apVal uintptr) int32 {
  9090  	var rc int32 = SQLITE_ERROR
  9091  	var pCsr uintptr = pCursor
  9092  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
  9093  
  9094  	fts5tokResetCursor(tls, pCsr)
  9095  	if idxNum == 1 {
  9096  		var zByte uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9097  		var nByte int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
  9098  		(*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput = sqlite3.Xsqlite3_malloc(tls, nByte+1)
  9099  		if (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput == uintptr(0) {
  9100  			rc = SQLITE_NOMEM
  9101  		} else {
  9102  			if nByte > 0 {
  9103  				libc.Xmemcpy(tls, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, zByte, uint64(nByte))
  9104  			}
  9105  			*(*int8)(unsafe.Pointer((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput + uintptr(nByte))) = int8(0)
  9106  			rc = (*struct {
  9107  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, int32, uintptr) int32
  9108  			})(unsafe.Pointer(&struct{ uintptr }{(*Fts5tokTable)(unsafe.Pointer(pTab)).Ftok.FxTokenize})).f(tls,
  9109  				(*Fts5tokTable)(unsafe.Pointer(pTab)).FpTok, pCsr, 0, zByte, nByte, *(*uintptr)(unsafe.Pointer(&struct {
  9110  					f func(*libc.TLS, uintptr, int32, uintptr, int32, int32, int32) int32
  9111  				}{fts5tokCb})))
  9112  		}
  9113  	}
  9114  
  9115  	if rc != SQLITE_OK {
  9116  		return rc
  9117  	}
  9118  	return fts5tokNextMethod(tls, pCursor)
  9119  }
  9120  
  9121  func fts5tokEofMethod(tls *libc.TLS, pCursor uintptr) int32 {
  9122  	var pCsr uintptr = pCursor
  9123  	return libc.Bool32((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid > (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FnRow)
  9124  }
  9125  
  9126  func fts5tokColumnMethod(tls *libc.TLS, pCursor uintptr, pCtx uintptr, iCol int32) int32 {
  9127  	var pCsr uintptr = pCursor
  9128  	var pRow uintptr = (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FaRow + uintptr((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid-1)*24
  9129  
  9130  	switch iCol {
  9131  	case 0:
  9132  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokCursor)(unsafe.Pointer(pCsr)).FzInput, -1, libc.UintptrFromInt32(-1))
  9133  		break
  9134  	case 1:
  9135  		sqlite3.Xsqlite3_result_text(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FzToken, -1, libc.UintptrFromInt32(-1))
  9136  		break
  9137  	case 2:
  9138  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiStart)
  9139  		break
  9140  	case 3:
  9141  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiEnd)
  9142  		break
  9143  	default:
  9144  		sqlite3.Xsqlite3_result_int(tls, pCtx, (*Fts5tokRow)(unsafe.Pointer(pRow)).FiPos)
  9145  		break
  9146  	}
  9147  	return SQLITE_OK
  9148  }
  9149  
  9150  func fts5tokRowidMethod(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
  9151  	var pCsr uintptr = pCursor
  9152  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3_int64((*Fts5tokCursor)(unsafe.Pointer(pCsr)).FiRowid)
  9153  	return SQLITE_OK
  9154  }
  9155  
  9156  func sqlite3Fts5TestRegisterTok(tls *libc.TLS, db uintptr, pApi uintptr) int32 {
  9157  	var rc int32
  9158  
  9159  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3235, uintptr(unsafe.Pointer(&fts5tok_module)), pApi)
  9160  	return rc
  9161  }
  9162  
  9163  var fts5tok_module = sqlite3_module{
  9164  	FxCreate:     0,
  9165  	FxConnect:    0,
  9166  	FxBestIndex:  0,
  9167  	FxDisconnect: 0,
  9168  	FxDestroy:    0,
  9169  	FxOpen:       0,
  9170  	FxClose:      0,
  9171  	FxFilter:     0,
  9172  	FxNext:       0,
  9173  	FxEof:        0,
  9174  	FxColumn:     0,
  9175  	FxRowid:      0,
  9176  }
  9177  
  9178  type sqlite3_api_routines = sqlite3_api_routines1
  9179  
  9180  type sqlite3_loadext_entry = uintptr
  9181  
  9182  type ApndVfs = sqlite3_vfs1
  9183  type ApndFile1 = struct {
  9184  	Fbase   sqlite3_file
  9185  	FiPgOne sqlite3_int64
  9186  	FiMark  sqlite3_int64
  9187  }
  9188  
  9189  type ApndFile = ApndFile1
  9190  
  9191  var apnd_vfs = sqlite3_vfs{
  9192  	FiVersion:          3,
  9193  	FmxPathname:        1024,
  9194  	FzName:             ts + 3248,
  9195  	FxOpen:             0,
  9196  	FxDelete:           0,
  9197  	FxAccess:           0,
  9198  	FxFullPathname:     0,
  9199  	FxDlOpen:           0,
  9200  	FxDlError:          0,
  9201  	FxDlSym:            0,
  9202  	FxDlClose:          0,
  9203  	FxRandomness:       0,
  9204  	FxSleep:            0,
  9205  	FxCurrentTime:      0,
  9206  	FxGetLastError:     0,
  9207  	FxCurrentTimeInt64: 0,
  9208  	FxSetSystemCall:    0,
  9209  	FxGetSystemCall:    0,
  9210  	FxNextSystemCall:   0,
  9211  }
  9212  
  9213  var apnd_io_methods = sqlite3_io_methods{
  9214  	FiVersion:               3,
  9215  	FxClose:                 0,
  9216  	FxRead:                  0,
  9217  	FxWrite:                 0,
  9218  	FxTruncate:              0,
  9219  	FxSync:                  0,
  9220  	FxFileSize:              0,
  9221  	FxLock:                  0,
  9222  	FxUnlock:                0,
  9223  	FxCheckReservedLock:     0,
  9224  	FxFileControl:           0,
  9225  	FxSectorSize:            0,
  9226  	FxDeviceCharacteristics: 0,
  9227  	FxShmMap:                0,
  9228  	FxShmLock:               0,
  9229  	FxShmBarrier:            0,
  9230  	FxShmUnmap:              0,
  9231  	FxFetch:                 0,
  9232  	FxUnfetch:               0,
  9233  }
  9234  
  9235  func apndClose(tls *libc.TLS, pFile uintptr) int32 {
  9236  	pFile = pFile + uintptr(1)*24
  9237  	return (*struct {
  9238  		f func(*libc.TLS, uintptr) int32
  9239  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
  9240  }
  9241  
  9242  func apndRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9243  	var paf uintptr = pFile
  9244  	pFile = pFile + uintptr(1)*24
  9245  	return (*struct {
  9246  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9247  	})(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)
  9248  }
  9249  
  9250  func apndWriteMark(tls *libc.TLS, paf uintptr, pFile uintptr, iWriteEnd sqlite_int64) int32 {
  9251  	bp := tls.Alloc(25)
  9252  	defer tls.Free(25)
  9253  
  9254  	var iPgOne sqlite_int64 = (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9255  
  9256  	var i int32 = APND_MARK_FOS_SZ
  9257  	var rc int32
  9258  
  9259  	libc.Xmemcpy(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ))
  9260  	for libc.PreDecInt32(&i, 1) >= 0 {
  9261  		*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))) = uint8(iPgOne & int64(0xff))
  9262  		iPgOne >>= 8
  9263  	}
  9264  	iWriteEnd = iWriteEnd + (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9265  	if SQLITE_OK == libc.AssignInt32(&rc, (*struct {
  9266  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9267  	})(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)) {
  9268  		(*ApndFile)(unsafe.Pointer(paf)).FiMark = iWriteEnd
  9269  	}
  9270  	return rc
  9271  }
  9272  
  9273  func apndWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
  9274  	var paf uintptr = pFile
  9275  	var iWriteEnd sqlite_int64 = iOfst + sqlite_int64(iAmt)
  9276  	if iWriteEnd >= int64(0x40000000) {
  9277  		return SQLITE_FULL
  9278  	}
  9279  	pFile = pFile + uintptr(1)*24
  9280  
  9281  	if (*ApndFile)(unsafe.Pointer(paf)).FiMark < int64(0) || (*ApndFile)(unsafe.Pointer(paf)).FiPgOne+iWriteEnd > (*ApndFile)(unsafe.Pointer(paf)).FiMark {
  9282  		var rc int32 = apndWriteMark(tls, paf, pFile, iWriteEnd)
  9283  		if SQLITE_OK != rc {
  9284  			return rc
  9285  		}
  9286  	}
  9287  	return (*struct {
  9288  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9289  	})(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)
  9290  }
  9291  
  9292  func apndTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
  9293  	var paf uintptr = pFile
  9294  	pFile = pFile + uintptr(1)*24
  9295  
  9296  	if SQLITE_OK != apndWriteMark(tls, paf, pFile, size) {
  9297  		return SQLITE_IOERR
  9298  	}
  9299  
  9300  	return (*struct {
  9301  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
  9302  	})(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))
  9303  }
  9304  
  9305  func apndSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
  9306  	pFile = pFile + uintptr(1)*24
  9307  	return (*struct {
  9308  		f func(*libc.TLS, uintptr, int32) int32
  9309  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
  9310  }
  9311  
  9312  func apndFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
  9313  	var paf uintptr = pFile
  9314  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = func() int64 {
  9315  		if (*ApndFile)(unsafe.Pointer(paf)).FiMark >= int64(0) {
  9316  			return (*ApndFile)(unsafe.Pointer(paf)).FiMark - (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9317  		}
  9318  		return int64(0)
  9319  	}()
  9320  	return SQLITE_OK
  9321  }
  9322  
  9323  func apndLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9324  	pFile = pFile + uintptr(1)*24
  9325  	return (*struct {
  9326  		f func(*libc.TLS, uintptr, int32) int32
  9327  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
  9328  }
  9329  
  9330  func apndUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
  9331  	pFile = pFile + uintptr(1)*24
  9332  	return (*struct {
  9333  		f func(*libc.TLS, uintptr, int32) int32
  9334  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
  9335  }
  9336  
  9337  func apndCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
  9338  	pFile = pFile + uintptr(1)*24
  9339  	return (*struct {
  9340  		f func(*libc.TLS, uintptr, uintptr) int32
  9341  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
  9342  }
  9343  
  9344  func apndFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
  9345  	bp := tls.Alloc(16)
  9346  	defer tls.Free(16)
  9347  
  9348  	var paf uintptr = pFile
  9349  	var rc int32
  9350  	pFile = pFile + uintptr(1)*24
  9351  	if op == SQLITE_FCNTL_SIZE_HINT {
  9352  		*(*sqlite3_int64)(unsafe.Pointer(pArg)) += (*ApndFile)(unsafe.Pointer(paf)).FiPgOne
  9353  	}
  9354  	rc = (*struct {
  9355  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9356  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
  9357  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
  9358  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+3274, libc.VaList(bp, (*ApndFile)(unsafe.Pointer(paf)).FiPgOne, *(*uintptr)(unsafe.Pointer(pArg))))
  9359  	}
  9360  	return rc
  9361  }
  9362  
  9363  func apndSectorSize(tls *libc.TLS, pFile uintptr) int32 {
  9364  	pFile = pFile + uintptr(1)*24
  9365  	return (*struct {
  9366  		f func(*libc.TLS, uintptr) int32
  9367  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
  9368  }
  9369  
  9370  func apndDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
  9371  	pFile = pFile + uintptr(1)*24
  9372  	return (*struct {
  9373  		f func(*libc.TLS, uintptr) int32
  9374  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
  9375  }
  9376  
  9377  func apndShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
  9378  	pFile = pFile + uintptr(1)*24
  9379  	return (*struct {
  9380  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
  9381  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
  9382  }
  9383  
  9384  func apndShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
  9385  	pFile = pFile + uintptr(1)*24
  9386  	return (*struct {
  9387  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
  9388  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
  9389  }
  9390  
  9391  func apndShmBarrier(tls *libc.TLS, pFile uintptr) {
  9392  	pFile = pFile + uintptr(1)*24
  9393  	(*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)
  9394  }
  9395  
  9396  func apndShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
  9397  	pFile = pFile + uintptr(1)*24
  9398  	return (*struct {
  9399  		f func(*libc.TLS, uintptr, int32) int32
  9400  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
  9401  }
  9402  
  9403  func apndFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
  9404  	var p uintptr = pFile
  9405  	if (*ApndFile)(unsafe.Pointer(p)).FiMark < int64(0) || iOfst+sqlite3_int64(iAmt) > (*ApndFile)(unsafe.Pointer(p)).FiMark {
  9406  		return SQLITE_IOERR
  9407  	}
  9408  	pFile = pFile + uintptr(1)*24
  9409  	return (*struct {
  9410  		f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
  9411  	})(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)
  9412  }
  9413  
  9414  func apndUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
  9415  	var p uintptr = pFile
  9416  	pFile = pFile + uintptr(1)*24
  9417  	return (*struct {
  9418  		f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
  9419  	})(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)
  9420  }
  9421  
  9422  func apndReadMark(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) sqlite3_int64 {
  9423  	bp := tls.Alloc(25)
  9424  	defer tls.Free(25)
  9425  
  9426  	var rc int32
  9427  	var i int32
  9428  	var iMark sqlite3_int64
  9429  	var msbs int32 = 8 * (APND_MARK_FOS_SZ - 1)
  9430  
  9431  	if int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) != sz&int64(0x1ff) {
  9432  		return int64(-1)
  9433  	}
  9434  	rc = (*struct {
  9435  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9436  	})(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))
  9437  	if rc != 0 {
  9438  		return int64(-1)
  9439  	}
  9440  	if libc.Xmemcmp(tls, bp, ts+3256, uint64(APND_MARK_PREFIX_SZ)) != 0 {
  9441  		return int64(-1)
  9442  	}
  9443  	iMark = sqlite3_int64(int32(*(*uint8)(unsafe.Pointer(bp + 17)))&0x7f) << msbs
  9444  	for i = 1; i < 8; i++ {
  9445  		msbs = msbs - 8
  9446  		iMark = iMark | sqlite3_int64(*(*uint8)(unsafe.Pointer(bp + uintptr(APND_MARK_PREFIX_SZ+i))))<<msbs
  9447  	}
  9448  	if iMark > sz-int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)-int64(512) {
  9449  		return int64(-1)
  9450  	}
  9451  	if iMark&int64(0x1ff) != 0 {
  9452  		return int64(-1)
  9453  	}
  9454  	return iMark
  9455  }
  9456  
  9457  var apvfsSqliteHdr = *(*[16]int8)(unsafe.Pointer(ts + 3288))
  9458  
  9459  func apndIsAppendvfsDatabase(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9460  	bp := tls.Alloc(16)
  9461  	defer tls.Free(16)
  9462  
  9463  	var rc int32
  9464  
  9465  	var iMark sqlite3_int64 = apndReadMark(tls, sz, pFile)
  9466  	if iMark >= int64(0) {
  9467  		rc = (*struct {
  9468  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9469  		})(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)
  9470  		if SQLITE_OK == rc &&
  9471  			libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) == 0 &&
  9472  			sz&int64(0x1ff) == int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ) &&
  9473  			sz >= int64(512+(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)) {
  9474  			return 1
  9475  		}
  9476  	}
  9477  	return 0
  9478  }
  9479  
  9480  func apndIsOrdinaryDatabaseFile(tls *libc.TLS, sz sqlite3_int64, pFile uintptr) int32 {
  9481  	bp := tls.Alloc(16)
  9482  	defer tls.Free(16)
  9483  
  9484  	if apndIsAppendvfsDatabase(tls, sz, pFile) != 0 ||
  9485  		sz&int64(0x1ff) != int64(0) ||
  9486  		SQLITE_OK != (*struct {
  9487  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
  9488  		})(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)) ||
  9489  		libc.Xmemcmp(tls, bp, uintptr(unsafe.Pointer(&apvfsSqliteHdr)), uint64(unsafe.Sizeof([16]int8{}))) != 0 {
  9490  		return 0
  9491  	} else {
  9492  		return 1
  9493  	}
  9494  	return int32(0)
  9495  }
  9496  
  9497  func apndOpen(tls *libc.TLS, pApndVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
  9498  	bp := tls.Alloc(8)
  9499  	defer tls.Free(8)
  9500  
  9501  	var pApndFile uintptr = pFile
  9502  	var pBaseFile uintptr = pFile + uintptr(1)*24
  9503  	var pBaseVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pApndVfs)).FpAppData
  9504  	var rc int32
  9505  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
  9506  	if flags&SQLITE_OPEN_MAIN_DB == 0 {
  9507  		return (*struct {
  9508  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9509  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pFile, flags, pOutFlags)
  9510  	}
  9511  	libc.Xmemset(tls, pApndFile, 0, uint64(unsafe.Sizeof(ApndFile{})))
  9512  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&apnd_io_methods))
  9513  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = int64(-1)
  9514  
  9515  	rc = (*struct {
  9516  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
  9517  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FxOpen})).f(tls, pBaseVfs, zName, pBaseFile, flags, pOutFlags)
  9518  	if rc == SQLITE_OK {
  9519  		rc = (*struct {
  9520  			f func(*libc.TLS, uintptr, uintptr) int32
  9521  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxFileSize})).f(tls, pBaseFile, bp)
  9522  		if rc != 0 {
  9523  			(*struct {
  9524  				f func(*libc.TLS, uintptr) int32
  9525  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9526  		}
  9527  	}
  9528  	if rc != 0 {
  9529  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9530  		return rc
  9531  	}
  9532  	if apndIsOrdinaryDatabaseFile(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pBaseFile) != 0 {
  9533  		libc.Xmemmove(tls, pApndFile, pBaseFile, uint64((*sqlite3_vfs)(unsafe.Pointer(pBaseVfs)).FszOsFile))
  9534  		return SQLITE_OK
  9535  	}
  9536  	(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = apndReadMark(tls, *(*sqlite3_int64)(unsafe.Pointer(bp)), pFile)
  9537  	if (*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne >= int64(0) {
  9538  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiMark = *(*sqlite3_int64)(unsafe.Pointer(bp)) - int64(APND_MARK_PREFIX_SZ+APND_MARK_FOS_SZ)
  9539  		return SQLITE_OK
  9540  	}
  9541  	if flags&SQLITE_OPEN_CREATE == 0 {
  9542  		(*struct {
  9543  			f func(*libc.TLS, uintptr) int32
  9544  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pBaseFile)).FpMethods)).FxClose})).f(tls, pBaseFile)
  9545  		rc = SQLITE_CANTOPEN
  9546  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
  9547  	} else {
  9548  		(*ApndFile)(unsafe.Pointer(pApndFile)).FiPgOne = (*(*sqlite3_int64)(unsafe.Pointer(bp)) + int64(APND_ROUNDUP-1)) & libc.CplInt64(int64(APND_ROUNDUP-1))
  9549  	}
  9550  	return rc
  9551  }
  9552  
  9553  func apndDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
  9554  	return (*struct {
  9555  		f func(*libc.TLS, uintptr, uintptr, int32) int32
  9556  	})(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)
  9557  }
  9558  
  9559  func apndAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
  9560  	return (*struct {
  9561  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9562  	})(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)
  9563  }
  9564  
  9565  func apndFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
  9566  	return (*struct {
  9567  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
  9568  	})(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)
  9569  }
  9570  
  9571  func apndDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
  9572  	return (*struct {
  9573  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9574  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
  9575  }
  9576  
  9577  func apndDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
  9578  	(*struct {
  9579  		f func(*libc.TLS, uintptr, int32, uintptr)
  9580  	})(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)
  9581  }
  9582  
  9583  func apndDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
  9584  	return (*struct {
  9585  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
  9586  	})(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)
  9587  }
  9588  
  9589  func apndDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
  9590  	(*struct {
  9591  		f func(*libc.TLS, uintptr, uintptr)
  9592  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
  9593  }
  9594  
  9595  func apndRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
  9596  	return (*struct {
  9597  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9598  	})(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)
  9599  }
  9600  
  9601  func apndSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
  9602  	return (*struct {
  9603  		f func(*libc.TLS, uintptr, int32) int32
  9604  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
  9605  }
  9606  
  9607  func apndCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
  9608  	return (*struct {
  9609  		f func(*libc.TLS, uintptr, uintptr) int32
  9610  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
  9611  }
  9612  
  9613  func apndGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
  9614  	return (*struct {
  9615  		f func(*libc.TLS, uintptr, int32, uintptr) int32
  9616  	})(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)
  9617  }
  9618  
  9619  func apndCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
  9620  	return (*struct {
  9621  		f func(*libc.TLS, uintptr, uintptr) int32
  9622  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTimeInt64})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, p)
  9623  }
  9624  
  9625  func apndSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
  9626  	return (*struct {
  9627  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
  9628  	})(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)
  9629  }
  9630  
  9631  func apndGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
  9632  	return (*struct {
  9633  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
  9634  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9635  }
  9636  
  9637  func apndNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
  9638  	return (*struct {
  9639  		f func(*libc.TLS, uintptr, uintptr) uintptr
  9640  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
  9641  }
  9642  
  9643  func sqlite3_appendvfs_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
  9644  	var rc int32 = SQLITE_OK
  9645  	var pOrig uintptr
  9646  	_ = pApi
  9647  
  9648  	_ = pzErrMsg
  9649  	_ = db
  9650  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
  9651  	if pOrig == uintptr(0) {
  9652  		return SQLITE_ERROR
  9653  	}
  9654  	apnd_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
  9655  	apnd_vfs.FpAppData = pOrig
  9656  	apnd_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(ApndFile{})))
  9657  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&apnd_vfs)), 0)
  9658  	if rc == SQLITE_OK {
  9659  		rc = SQLITE_OK | int32(1)<<8
  9660  	}
  9661  	return rc
  9662  }
  9663  
  9664  type div_t = struct {
  9665  	Fquot int32
  9666  	Frem  int32
  9667  }
  9668  
  9669  type ldiv_t = struct {
  9670  	Fquot int64
  9671  	Frem  int64
  9672  }
  9673  
  9674  type lldiv_t = struct {
  9675  	Fquot int64
  9676  	Frem  int64
  9677  }
  9678  
  9679  type qdiv_t = struct {
  9680  	Fquot quad_t
  9681  	Frem  quad_t
  9682  }
  9683  
  9684  type amatch_vtab1 = struct {
  9685  	Fbase        sqlite3_vtab
  9686  	FzClassName  uintptr
  9687  	FzDb         uintptr
  9688  	FzSelf       uintptr
  9689  	FzCostTab    uintptr
  9690  	FzVocabTab   uintptr
  9691  	FzVocabWord  uintptr
  9692  	FzVocabLang  uintptr
  9693  	FpRule       uintptr
  9694  	FrIns        amatch_cost
  9695  	FrDel        amatch_cost
  9696  	FrSub        amatch_cost
  9697  	F__ccgo_pad1 [4]byte
  9698  	Fdb          uintptr
  9699  	FpVCheck     uintptr
  9700  	FnCursor     int32
  9701  	F__ccgo_pad2 [4]byte
  9702  }
  9703  
  9704  type amatch_vtab = amatch_vtab1
  9705  type amatch_cursor1 = struct {
  9706  	Fbase        sqlite3_vtab_cursor
  9707  	FiRowid      sqlite3_int64
  9708  	FiLang       amatch_langid
  9709  	FrLimit      amatch_cost
  9710  	FnBuf        int32
  9711  	FoomErr      int32
  9712  	FnWord       int32
  9713  	F__ccgo_pad1 [4]byte
  9714  	FzBuf        uintptr
  9715  	FzInput      uintptr
  9716  	FpVtab       uintptr
  9717  	FpAllWords   uintptr
  9718  	FpCurrent    uintptr
  9719  	FpCost       uintptr
  9720  	FpWord       uintptr
  9721  }
  9722  
  9723  type amatch_cursor = amatch_cursor1
  9724  type amatch_rule1 = struct {
  9725  	FpNext       uintptr
  9726  	FzFrom       uintptr
  9727  	FrCost       amatch_cost
  9728  	FiLang       amatch_langid
  9729  	FnFrom       amatch_len
  9730  	FnTo         amatch_len
  9731  	FzTo         [4]int8
  9732  	F__ccgo_pad1 [2]byte
  9733  }
  9734  
  9735  type amatch_rule = amatch_rule1
  9736  type amatch_word1 = struct {
  9737  	FpNext  uintptr
  9738  	FsCost  amatch_avl
  9739  	FsWord  amatch_avl
  9740  	FrCost  amatch_cost
  9741  	FiSeq   int32
  9742  	FzCost  [10]int8
  9743  	FnMatch int16
  9744  	FzWord  [4]int8
  9745  }
  9746  
  9747  type amatch_word = amatch_word1
  9748  type amatch_avl1 = struct {
  9749  	FpWord       uintptr
  9750  	FzKey        uintptr
  9751  	FpBefore     uintptr
  9752  	FpAfter      uintptr
  9753  	FpUp         uintptr
  9754  	Fheight      int16
  9755  	Fimbalance   int16
  9756  	F__ccgo_pad1 [4]byte
  9757  }
  9758  
  9759  type amatch_avl = amatch_avl1
  9760  
  9761  func amatchAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
  9762  	var hBefore int16
  9763  	if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9764  		hBefore = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
  9765  	} else {
  9766  		hBefore = int16(0)
  9767  	}
  9768  	var hAfter int16
  9769  	if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
  9770  		hAfter = (*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
  9771  	} else {
  9772  		hAfter = int16(0)
  9773  	}
  9774  	(*amatch_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
  9775  	(*amatch_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
  9776  		if int32(hBefore) > int32(hAfter) {
  9777  			return int32(hBefore)
  9778  		}
  9779  		return int32(hAfter)
  9780  	}() + 1)
  9781  }
  9782  
  9783  func amatchAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
  9784  	var pB uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpBefore
  9785  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pB)).FpAfter
  9786  	(*amatch_avl)(unsafe.Pointer(pB)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
  9787  	(*amatch_avl)(unsafe.Pointer(pB)).FpAfter = pP
  9788  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pB
  9789  	(*amatch_avl)(unsafe.Pointer(pP)).FpBefore = pY
  9790  	if pY != 0 {
  9791  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
  9792  	}
  9793  	amatchAvlRecomputeHeight(tls, pP)
  9794  	amatchAvlRecomputeHeight(tls, pB)
  9795  	return pB
  9796  }
  9797  
  9798  func amatchAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
  9799  	var pA uintptr = (*amatch_avl)(unsafe.Pointer(pP)).FpAfter
  9800  	var pY uintptr = (*amatch_avl)(unsafe.Pointer(pA)).FpBefore
  9801  	(*amatch_avl)(unsafe.Pointer(pA)).FpUp = (*amatch_avl)(unsafe.Pointer(pP)).FpUp
  9802  	(*amatch_avl)(unsafe.Pointer(pA)).FpBefore = pP
  9803  	(*amatch_avl)(unsafe.Pointer(pP)).FpUp = pA
  9804  	(*amatch_avl)(unsafe.Pointer(pP)).FpAfter = pY
  9805  	if pY != 0 {
  9806  		(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pP
  9807  	}
  9808  	amatchAvlRecomputeHeight(tls, pP)
  9809  	amatchAvlRecomputeHeight(tls, pA)
  9810  	return pA
  9811  }
  9812  
  9813  func amatchAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
  9814  	var pUp uintptr = (*amatch_avl)(unsafe.Pointer(p)).FpUp
  9815  	if pUp == uintptr(0) {
  9816  		return pp
  9817  	}
  9818  	if (*amatch_avl)(unsafe.Pointer(pUp)).FpAfter == p {
  9819  		return pUp + 24
  9820  	}
  9821  	return pUp + 16
  9822  }
  9823  
  9824  func amatchAvlBalance(tls *libc.TLS, p uintptr) uintptr {
  9825  	bp := tls.Alloc(8)
  9826  	defer tls.Free(8)
  9827  	*(*uintptr)(unsafe.Pointer(bp)) = p
  9828  
  9829  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
  9830  	var pp uintptr
  9831  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
  9832  		amatchAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
  9833  		if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
  9834  			var pB uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
  9835  			if int32((*amatch_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
  9836  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = amatchAvlRotateAfter(tls, pB)
  9837  			}
  9838  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
  9839  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
  9840  		} else if int32((*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
  9841  			var pA uintptr = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
  9842  			if int32((*amatch_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
  9843  				(*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = amatchAvlRotateBefore(tls, pA)
  9844  			}
  9845  			pp = amatchAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
  9846  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, amatchAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
  9847  		}
  9848  		pTop = *(*uintptr)(unsafe.Pointer(bp))
  9849  		*(*uintptr)(unsafe.Pointer(bp)) = (*amatch_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
  9850  	}
  9851  	return pTop
  9852  }
  9853  
  9854  func amatchAvlSearch(tls *libc.TLS, p uintptr, zKey uintptr) uintptr {
  9855  	var c int32
  9856  	for p != 0 && libc.AssignInt32(&c, libc.Xstrcmp(tls, zKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)) != 0 {
  9857  		if c < 0 {
  9858  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9859  		} else {
  9860  			p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
  9861  		}
  9862  	}
  9863  	return p
  9864  }
  9865  
  9866  func amatchAvlFirst(tls *libc.TLS, p uintptr) uintptr {
  9867  	if p != 0 {
  9868  		for (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9869  			p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9870  		}
  9871  	}
  9872  	return p
  9873  }
  9874  
  9875  func amatchAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
  9876  	var c int32
  9877  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
  9878  	if p == uintptr(0) {
  9879  		p = pNew
  9880  		(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
  9881  	} else {
  9882  		for p != 0 {
  9883  			c = libc.Xstrcmp(tls, (*amatch_avl)(unsafe.Pointer(pNew)).FzKey, (*amatch_avl)(unsafe.Pointer(p)).FzKey)
  9884  			if c < 0 {
  9885  				if (*amatch_avl)(unsafe.Pointer(p)).FpBefore != 0 {
  9886  					p = (*amatch_avl)(unsafe.Pointer(p)).FpBefore
  9887  				} else {
  9888  					(*amatch_avl)(unsafe.Pointer(p)).FpBefore = pNew
  9889  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
  9890  					break
  9891  				}
  9892  			} else if c > 0 {
  9893  				if (*amatch_avl)(unsafe.Pointer(p)).FpAfter != 0 {
  9894  					p = (*amatch_avl)(unsafe.Pointer(p)).FpAfter
  9895  				} else {
  9896  					(*amatch_avl)(unsafe.Pointer(p)).FpAfter = pNew
  9897  					(*amatch_avl)(unsafe.Pointer(pNew)).FpUp = p
  9898  					break
  9899  				}
  9900  			} else {
  9901  				return p
  9902  			}
  9903  		}
  9904  	}
  9905  	(*amatch_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
  9906  	(*amatch_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
  9907  	(*amatch_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
  9908  	(*amatch_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
  9909  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, p)
  9910  
  9911  	return uintptr(0)
  9912  }
  9913  
  9914  func amatchAvlRemove(tls *libc.TLS, ppHead uintptr, pOld uintptr) {
  9915  	var ppParent uintptr
  9916  	var pBalance uintptr = uintptr(0)
  9917  
  9918  	ppParent = amatchAvlFromPtr(tls, pOld, ppHead)
  9919  	if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
  9920  		*(*uintptr)(unsafe.Pointer(ppParent)) = uintptr(0)
  9921  		pBalance = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9922  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore != 0 && (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter != 0 {
  9923  		var pX uintptr
  9924  		var pY uintptr
  9925  		pX = amatchAvlFirst(tls, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
  9926  		*(*uintptr)(unsafe.Pointer(amatchAvlFromPtr(tls, pX, uintptr(0)))) = (*amatch_avl)(unsafe.Pointer(pX)).FpAfter
  9927  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
  9928  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
  9929  		}
  9930  		pBalance = (*amatch_avl)(unsafe.Pointer(pX)).FpUp
  9931  		(*amatch_avl)(unsafe.Pointer(pX)).FpAfter = (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter
  9932  		if (*amatch_avl)(unsafe.Pointer(pX)).FpAfter != 0 {
  9933  			(*amatch_avl)(unsafe.Pointer((*amatch_avl)(unsafe.Pointer(pX)).FpAfter)).FpUp = pX
  9934  		} else {
  9935  			pBalance = pX
  9936  		}
  9937  		(*amatch_avl)(unsafe.Pointer(pX)).FpBefore = libc.AssignUintptr(&pY, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
  9938  		if pY != 0 {
  9939  			(*amatch_avl)(unsafe.Pointer(pY)).FpUp = pX
  9940  		}
  9941  		(*amatch_avl)(unsafe.Pointer(pX)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9942  		*(*uintptr)(unsafe.Pointer(ppParent)) = pX
  9943  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore == uintptr(0) {
  9944  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter)
  9945  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9946  	} else if (*amatch_avl)(unsafe.Pointer(pOld)).FpAfter == uintptr(0) {
  9947  		*(*uintptr)(unsafe.Pointer(ppParent)) = libc.AssignUintptr(&pBalance, (*amatch_avl)(unsafe.Pointer(pOld)).FpBefore)
  9948  		(*amatch_avl)(unsafe.Pointer(pBalance)).FpUp = (*amatch_avl)(unsafe.Pointer(pOld)).FpUp
  9949  	}
  9950  	*(*uintptr)(unsafe.Pointer(ppHead)) = amatchAvlBalance(tls, pBalance)
  9951  	(*amatch_avl)(unsafe.Pointer(pOld)).FpUp = uintptr(0)
  9952  	(*amatch_avl)(unsafe.Pointer(pOld)).FpBefore = uintptr(0)
  9953  	(*amatch_avl)(unsafe.Pointer(pOld)).FpAfter = uintptr(0)
  9954  
  9955  }
  9956  
  9957  type amatch_cost = int32
  9958  type amatch_len = int8
  9959  type amatch_langid = int32
  9960  
  9961  func amatchMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
  9962  	bp := tls.Alloc(32)
  9963  	defer tls.Free(32)
  9964  
  9965  	var pTail uintptr
  9966  
  9967  	pTail = bp
  9968  	for pA != 0 && pB != 0 {
  9969  		if (*amatch_rule)(unsafe.Pointer(pA)).FrCost <= (*amatch_rule)(unsafe.Pointer(pB)).FrCost {
  9970  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
  9971  			pTail = pA
  9972  			pA = (*amatch_rule)(unsafe.Pointer(pA)).FpNext
  9973  		} else {
  9974  			(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
  9975  			pTail = pB
  9976  			pB = (*amatch_rule)(unsafe.Pointer(pB)).FpNext
  9977  		}
  9978  	}
  9979  	if pA == uintptr(0) {
  9980  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pB
  9981  	} else {
  9982  		(*amatch_rule)(unsafe.Pointer(pTail)).FpNext = pA
  9983  	}
  9984  	return (*amatch_rule)(unsafe.Pointer(bp)).FpNext
  9985  }
  9986  
  9987  func amatchLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
  9988  	bp := tls.Alloc(48)
  9989  	defer tls.Free(48)
  9990  
  9991  	var iLang sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
  9992  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
  9993  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
  9994  	var rCost amatch_cost = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
  9995  
  9996  	var rc int32 = SQLITE_OK
  9997  	var nFrom int32
  9998  	var nTo int32
  9999  	var pRule uintptr = uintptr(0)
 10000  
 10001  	if zFrom == uintptr(0) {
 10002  		zFrom = ts + 584
 10003  	}
 10004  	if zTo == uintptr(0) {
 10005  		zTo = ts + 584
 10006  	}
 10007  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 10008  	nTo = int32(libc.Xstrlen(tls, zTo))
 10009  
 10010  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 10011  		if int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zFrom + 1))) == 0 {
 10012  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrSub > rCost {
 10013  				(*amatch_vtab)(unsafe.Pointer(p)).FrSub = rCost
 10014  			}
 10015  		}
 10016  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 10017  		return SQLITE_OK
 10018  	}
 10019  
 10020  	if rCost <= 0 || rCost > AMATCH_MX_COST {
 10021  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 10022  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_COST))
 10023  		rc = SQLITE_ERROR
 10024  	} else if nFrom > AMATCH_MX_LENGTH || nTo > AMATCH_MX_LENGTH {
 10025  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 10026  			libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LENGTH))
 10027  		rc = SQLITE_ERROR
 10028  	} else if iLang < int64(0) || iLang > int64(AMATCH_MX_LANGID) {
 10029  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3370,
 10030  			libc.VaList(bp+32, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName, AMATCH_MX_LANGID))
 10031  		rc = SQLITE_ERROR
 10032  	} else if libc.Xstrcmp(tls, zFrom, ts+584) == 0 && libc.Xstrcmp(tls, zTo, ts+3405) == 0 {
 10033  		if (*amatch_vtab)(unsafe.Pointer(p)).FrIns == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrIns > rCost {
 10034  			(*amatch_vtab)(unsafe.Pointer(p)).FrIns = rCost
 10035  		}
 10036  	} else if libc.Xstrcmp(tls, zFrom, ts+3405) == 0 && libc.Xstrcmp(tls, zTo, ts+584) == 0 {
 10037  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel == 0 || (*amatch_vtab)(unsafe.Pointer(p)).FrDel > rCost {
 10038  			(*amatch_vtab)(unsafe.Pointer(p)).FrDel = rCost
 10039  		}
 10040  	} else {
 10041  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_rule{}))+uint64(nFrom)+uint64(nTo))
 10042  		if pRule == uintptr(0) {
 10043  			rc = SQLITE_NOMEM
 10044  		} else {
 10045  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(amatch_rule{})))
 10046  			(*amatch_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 26 + uintptr(nTo+1)
 10047  			(*amatch_rule)(unsafe.Pointer(pRule)).FnFrom = amatch_len(nFrom)
 10048  			libc.Xmemcpy(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 10049  			libc.Xmemcpy(tls, pRule+26, zTo, uint64(nTo+1))
 10050  			(*amatch_rule)(unsafe.Pointer(pRule)).FnTo = amatch_len(nTo)
 10051  			(*amatch_rule)(unsafe.Pointer(pRule)).FrCost = rCost
 10052  			(*amatch_rule)(unsafe.Pointer(pRule)).FiLang = int32(iLang)
 10053  		}
 10054  	}
 10055  
 10056  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 10057  	return rc
 10058  }
 10059  
 10060  func amatchFreeRules(tls *libc.TLS, p uintptr) {
 10061  	for (*amatch_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 10062  		var pRule uintptr = (*amatch_vtab)(unsafe.Pointer(p)).FpRule
 10063  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext
 10064  		sqlite3.Xsqlite3_free(tls, pRule)
 10065  	}
 10066  	(*amatch_vtab)(unsafe.Pointer(p)).FpRule = uintptr(0)
 10067  }
 10068  
 10069  func amatchLoadRules(tls *libc.TLS, db uintptr, p uintptr, pzErr uintptr) int32 {
 10070  	bp := tls.Alloc(192)
 10071  	defer tls.Free(192)
 10072  
 10073  	var rc int32 = SQLITE_OK
 10074  	var zSql uintptr
 10075  	var pHead uintptr = uintptr(0)
 10076  
 10077  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzDb, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab))
 10078  	if zSql == uintptr(0) {
 10079  		rc = SQLITE_NOMEM
 10080  	} else {
 10081  		var rc2 int32
 10082  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 10083  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 10084  		if rc != SQLITE_OK {
 10085  			*(*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)))
 10086  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 10087  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 10088  				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)))))
 10089  			rc = SQLITE_ERROR
 10090  		} else {
 10091  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 10092  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 10093  				rc = amatchLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 10094  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 10095  					(*amatch_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 10096  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 10097  				}
 10098  			}
 10099  		}
 10100  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 10101  		if rc == SQLITE_OK {
 10102  			rc = rc2
 10103  		}
 10104  	}
 10105  	sqlite3.Xsqlite3_free(tls, zSql)
 10106  
 10107  	if rc == SQLITE_OK {
 10108  		var i uint32
 10109  		var pX uintptr
 10110  
 10111  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10112  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10113  		}
 10114  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 10115  			pHead = (*amatch_rule)(unsafe.Pointer(pX)).FpNext
 10116  			(*amatch_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 10117  			for i = uint32(0); *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) != 0 && uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))-uint64(1); i++ {
 10118  				pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10119  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 10120  			}
 10121  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10122  		}
 10123  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 10124  		i = uint32(1)
 10125  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 10126  			pX = amatchMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 10127  		}
 10128  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = amatchMergeRules(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpRule, pX)
 10129  	} else {
 10130  		(*amatch_vtab)(unsafe.Pointer(p)).FpRule = pHead
 10131  	}
 10132  
 10133  	return rc
 10134  }
 10135  
 10136  func amatchDequote(tls *libc.TLS, zIn uintptr) uintptr {
 10137  	var nIn sqlite3_int64
 10138  	var zOut uintptr
 10139  
 10140  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 10141  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 10142  	if zOut != 0 {
 10143  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 10144  
 10145  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 10146  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 10147  		} else {
 10148  			var iOut int32 = 0
 10149  			var iIn int32
 10150  
 10151  			if int32(q) == '[' {
 10152  				q = int8(']')
 10153  			}
 10154  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 10155  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 10156  					iIn++
 10157  				}
 10158  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 10159  			}
 10160  		}
 10161  
 10162  	}
 10163  	return zOut
 10164  }
 10165  
 10166  func amatchVCheckClear(tls *libc.TLS, p uintptr) {
 10167  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck != 0 {
 10168  		sqlite3.Xsqlite3_finalize(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10169  		(*amatch_vtab)(unsafe.Pointer(p)).FpVCheck = uintptr(0)
 10170  	}
 10171  }
 10172  
 10173  func amatchFree(tls *libc.TLS, p uintptr) {
 10174  	if p != 0 {
 10175  		amatchFreeRules(tls, p)
 10176  		amatchVCheckClear(tls, p)
 10177  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzClassName)
 10178  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzDb)
 10179  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzCostTab)
 10180  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab)
 10181  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord)
 10182  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)
 10183  		sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf)
 10184  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10185  		sqlite3.Xsqlite3_free(tls, p)
 10186  	}
 10187  }
 10188  
 10189  func amatchDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10190  	var p uintptr = pVtab
 10191  
 10192  	amatchFree(tls, p)
 10193  	return SQLITE_OK
 10194  }
 10195  
 10196  func amatchValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 10197  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 10198  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 10199  	var i int32
 10200  	if nStr < nKey+1 {
 10201  		return uintptr(0)
 10202  	}
 10203  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 10204  		return uintptr(0)
 10205  	}
 10206  	for i = nKey; libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 10207  	}
 10208  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 10209  		return uintptr(0)
 10210  	}
 10211  	i++
 10212  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 10213  		i++
 10214  	}
 10215  	return zStr + uintptr(i)
 10216  }
 10217  
 10218  func amatchConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10219  	bp := tls.Alloc(32)
 10220  	defer tls.Free(32)
 10221  
 10222  	var rc int32
 10223  	var pNew uintptr
 10224  	var zModule uintptr
 10225  	var zDb uintptr
 10226  	var zVal uintptr
 10227  	var i int32
 10228  	rc = SQLITE_OK
 10229  	pNew = uintptr(0)
 10230  	zModule = *(*uintptr)(unsafe.Pointer(argv))
 10231  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 10232  
 10233  	_ = pAux
 10234  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10235  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_vtab{})))
 10236  	if !(pNew == uintptr(0)) {
 10237  		goto __1
 10238  	}
 10239  	return SQLITE_NOMEM
 10240  __1:
 10241  	;
 10242  	rc = SQLITE_NOMEM
 10243  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(amatch_vtab{})))
 10244  	(*amatch_vtab)(unsafe.Pointer(pNew)).Fdb = db
 10245  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zModule))
 10246  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzClassName == uintptr(0)) {
 10247  		goto __2
 10248  	}
 10249  	goto amatchConnectError
 10250  __2:
 10251  	;
 10252  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zDb))
 10253  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 10254  		goto __3
 10255  	}
 10256  	goto amatchConnectError
 10257  __3:
 10258  	;
 10259  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 10260  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 10261  		goto __4
 10262  	}
 10263  	goto amatchConnectError
 10264  __4:
 10265  	;
 10266  	i = 3
 10267  __5:
 10268  	if !(i < argc) {
 10269  		goto __7
 10270  	}
 10271  	zVal = amatchValueOfKey(tls, ts+3468, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10272  	if !(zVal != 0) {
 10273  		goto __8
 10274  	}
 10275  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab)
 10276  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab = amatchDequote(tls, zVal)
 10277  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabTab == uintptr(0)) {
 10278  		goto __9
 10279  	}
 10280  	goto amatchConnectError
 10281  __9:
 10282  	;
 10283  	goto __6
 10284  __8:
 10285  	;
 10286  	zVal = amatchValueOfKey(tls, ts+3485, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10287  	if !(zVal != 0) {
 10288  		goto __10
 10289  	}
 10290  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord)
 10291  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord = amatchDequote(tls, zVal)
 10292  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabWord == uintptr(0)) {
 10293  		goto __11
 10294  	}
 10295  	goto amatchConnectError
 10296  __11:
 10297  	;
 10298  	goto __6
 10299  __10:
 10300  	;
 10301  	zVal = amatchValueOfKey(tls, ts+3501, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10302  	if !(zVal != 0) {
 10303  		goto __12
 10304  	}
 10305  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang)
 10306  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang = amatchDequote(tls, zVal)
 10307  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzVocabLang == uintptr(0)) {
 10308  		goto __13
 10309  	}
 10310  	goto amatchConnectError
 10311  __13:
 10312  	;
 10313  	goto __6
 10314  __12:
 10315  	;
 10316  	zVal = amatchValueOfKey(tls, ts+3521, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 10317  	if !(zVal != 0) {
 10318  		goto __14
 10319  	}
 10320  	sqlite3.Xsqlite3_free(tls, (*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab)
 10321  	(*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab = amatchDequote(tls, zVal)
 10322  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10323  		goto __15
 10324  	}
 10325  	goto amatchConnectError
 10326  __15:
 10327  	;
 10328  	goto __6
 10329  __14:
 10330  	;
 10331  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 10332  	amatchFree(tls, pNew)
 10333  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 10334  	return SQLITE_ERROR
 10335  	goto __6
 10336  __6:
 10337  	i++
 10338  	goto __5
 10339  	goto __7
 10340  __7:
 10341  	;
 10342  	rc = SQLITE_OK
 10343  	if !((*amatch_vtab)(unsafe.Pointer(pNew)).FzCostTab == uintptr(0)) {
 10344  		goto __16
 10345  	}
 10346  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3565, 0)
 10347  	rc = SQLITE_ERROR
 10348  	goto __17
 10349  __16:
 10350  	rc = amatchLoadRules(tls, db, pNew, pzErr)
 10351  __17:
 10352  	;
 10353  	if !(rc == SQLITE_OK) {
 10354  		goto __18
 10355  	}
 10356  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 10357  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10358  		ts+3599)
 10359  __18:
 10360  	;
 10361  	if !(rc != SQLITE_OK) {
 10362  		goto __19
 10363  	}
 10364  	amatchFree(tls, pNew)
 10365  __19:
 10366  	;
 10367  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 10368  	return rc
 10369  
 10370  amatchConnectError:
 10371  	amatchFree(tls, pNew)
 10372  	return rc
 10373  }
 10374  
 10375  func amatchOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 10376  	var p uintptr = pVTab
 10377  	var pCur uintptr
 10378  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(amatch_cursor{})))
 10379  	if pCur == uintptr(0) {
 10380  		return SQLITE_NOMEM
 10381  	}
 10382  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(amatch_cursor{})))
 10383  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 10384  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10385  	(*amatch_vtab)(unsafe.Pointer(p)).FnCursor++
 10386  	return SQLITE_OK
 10387  }
 10388  
 10389  func amatchClearCursor(tls *libc.TLS, pCur uintptr) {
 10390  	var pWord uintptr
 10391  	var pNextWord uintptr
 10392  	for pWord = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords; pWord != 0; pWord = pNextWord {
 10393  		pNextWord = (*amatch_word)(unsafe.Pointer(pWord)).FpNext
 10394  		sqlite3.Xsqlite3_free(tls, pWord)
 10395  	}
 10396  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = uintptr(0)
 10397  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput)
 10398  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = uintptr(0)
 10399  	sqlite3.Xsqlite3_free(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10400  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = uintptr(0)
 10401  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10402  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCost = uintptr(0)
 10403  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpWord = uintptr(0)
 10404  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 10405  	(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = 1000000
 10406  	(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = 0
 10407  	(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord = 0
 10408  }
 10409  
 10410  func amatchClose(tls *libc.TLS, cur uintptr) int32 {
 10411  	var pCur uintptr = cur
 10412  	amatchClearCursor(tls, pCur)
 10413  	(*amatch_vtab)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 10414  	sqlite3.Xsqlite3_free(tls, pCur)
 10415  	return SQLITE_OK
 10416  }
 10417  
 10418  func amatchEncodeInt(tls *libc.TLS, x int32, z uintptr) {
 10419  	*(*int8)(unsafe.Pointer(z)) = a[x>>18&0x3f]
 10420  	*(*int8)(unsafe.Pointer(z + 1)) = a[x>>12&0x3f]
 10421  	*(*int8)(unsafe.Pointer(z + 2)) = a[x>>6&0x3f]
 10422  	*(*int8)(unsafe.Pointer(z + 3)) = a[x&0x3f]
 10423  }
 10424  
 10425  var a = *(*[65]int8)(unsafe.Pointer(ts + 3666))
 10426  
 10427  func amatchWriteCost(tls *libc.TLS, pWord uintptr) {
 10428  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, pWord+112)
 10429  	amatchEncodeInt(tls, (*amatch_word)(unsafe.Pointer(pWord)).FiSeq, pWord+112+uintptr(4))
 10430  	*(*int8)(unsafe.Pointer(pWord + 112 + 8)) = int8(0)
 10431  }
 10432  
 10433  func amatchStrcpy(tls *libc.TLS, dest uintptr, src uintptr) {
 10434  	for int32(libc.AssignPtrInt8(libc.PostIncUintptr(&dest, 1), *(*int8)(unsafe.Pointer(libc.PostIncUintptr(&src, 1))))) != 0 {
 10435  	}
 10436  }
 10437  
 10438  func amatchStrcat(tls *libc.TLS, dest uintptr, src uintptr) {
 10439  	for *(*int8)(unsafe.Pointer(dest)) != 0 {
 10440  		dest++
 10441  	}
 10442  	amatchStrcpy(tls, dest, src)
 10443  }
 10444  
 10445  func amatchAddWord(tls *libc.TLS, pCur uintptr, rCost amatch_cost, nMatch int32, zWordBase uintptr, zWordTail uintptr) {
 10446  	bp := tls.Alloc(4)
 10447  	defer tls.Free(4)
 10448  
 10449  	var pWord uintptr
 10450  	var pNode uintptr
 10451  	var pOther uintptr
 10452  	_ = pOther
 10453  	var nBase int32
 10454  	var nTail int32
 10455  
 10456  	if rCost > (*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit {
 10457  		return
 10458  	}
 10459  	nBase = int32(libc.Xstrlen(tls, zWordBase))
 10460  	nTail = int32(libc.Xstrlen(tls, zWordTail))
 10461  	if nBase+nTail+3 > (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf {
 10462  		(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = nBase + nTail + 100
 10463  		(*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf = sqlite3.Xsqlite3_realloc(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, (*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf)
 10464  		if (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf == uintptr(0) {
 10465  			(*amatch_cursor)(unsafe.Pointer(pCur)).FnBuf = 0
 10466  			return
 10467  		}
 10468  	}
 10469  	amatchEncodeInt(tls, nMatch, bp)
 10470  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf, bp+uintptr(2), uint64(2))
 10471  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2), zWordBase, uint64(nBase))
 10472  	libc.Xmemcpy(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf+uintptr(2)+uintptr(nBase), zWordTail, uint64(nTail+1))
 10473  	pNode = amatchAvlSearch(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpWord, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10474  	if pNode != 0 {
 10475  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10476  		if (*amatch_word)(unsafe.Pointer(pWord)).FrCost > rCost {
 10477  			amatchAvlRemove(tls, pCur+80, pWord+8)
 10478  			(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10479  			amatchWriteCost(tls, pWord)
 10480  			pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10481  			_ = pOther
 10482  		}
 10483  		return
 10484  	}
 10485  	pWord = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(amatch_word{}))+uint64(nBase)+uint64(nTail)-uint64(1))
 10486  	if pWord == uintptr(0) {
 10487  		return
 10488  	}
 10489  	libc.Xmemset(tls, pWord, 0, uint64(unsafe.Sizeof(amatch_word{})))
 10490  	(*amatch_word)(unsafe.Pointer(pWord)).FrCost = rCost
 10491  	(*amatch_word)(unsafe.Pointer(pWord)).FiSeq = libc.PostIncInt32(&(*amatch_cursor)(unsafe.Pointer(pCur)).FnWord, 1)
 10492  	amatchWriteCost(tls, pWord)
 10493  	(*amatch_word)(unsafe.Pointer(pWord)).FnMatch = int16(nMatch)
 10494  	(*amatch_word)(unsafe.Pointer(pWord)).FpNext = (*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords
 10495  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpAllWords = pWord
 10496  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FzKey = pWord + 112
 10497  	(*amatch_word)(unsafe.Pointer(pWord)).FsCost.FpWord = pWord
 10498  	pOther = amatchAvlInsert(tls, pCur+80, pWord+8)
 10499  	_ = pOther
 10500  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FzKey = pWord + 124
 10501  	(*amatch_word)(unsafe.Pointer(pWord)).FsWord.FpWord = pWord
 10502  	amatchStrcpy(tls, pWord+124, (*amatch_cursor)(unsafe.Pointer(pCur)).FzBuf)
 10503  	pOther = amatchAvlInsert(tls, pCur+88, pWord+56)
 10504  	_ = pOther
 10505  }
 10506  
 10507  func amatchNext(tls *libc.TLS, cur uintptr) int32 {
 10508  	bp := tls.Alloc(80)
 10509  	defer tls.Free(80)
 10510  
 10511  	var pCur uintptr = cur
 10512  	var pWord uintptr = uintptr(0)
 10513  	var pNode uintptr
 10514  	var isMatch int32 = 0
 10515  	var p uintptr = (*amatch_cursor)(unsafe.Pointer(pCur)).FpVtab
 10516  	var nWord int32
 10517  	var rc int32
 10518  	var i int32
 10519  	var zW uintptr
 10520  	var pRule uintptr
 10521  	var zBuf uintptr = uintptr(0)
 10522  	var nBuf int8 = int8(0)
 10523  
 10524  	var nNextIn int32
 10525  
 10526  	if (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck == uintptr(0) {
 10527  		var zSql uintptr
 10528  		if (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang != 0 && *(*int8)(unsafe.Pointer((*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang)) != 0 {
 10529  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10530  				ts+3731,
 10531  				libc.VaList(bp, ts+3753,
 10532  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10533  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabLang))
 10534  		} else {
 10535  			zSql = sqlite3.Xsqlite3_mprintf(tls,
 10536  				ts+3792,
 10537  				libc.VaList(bp+40, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord, (*amatch_vtab)(unsafe.Pointer(p)).FzVocabTab,
 10538  					(*amatch_vtab)(unsafe.Pointer(p)).FzVocabWord))
 10539  		}
 10540  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*amatch_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, p+112, uintptr(0))
 10541  		sqlite3.Xsqlite3_free(tls, zSql)
 10542  		if rc != 0 {
 10543  			return rc
 10544  		}
 10545  	}
 10546  	sqlite3.Xsqlite3_bind_int(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 2, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10547  
 10548  	for __ccgo := true; __ccgo; __ccgo = !(isMatch != 0) {
 10549  		pNode = amatchAvlFirst(tls, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCost)
 10550  		if pNode == uintptr(0) {
 10551  			pWord = uintptr(0)
 10552  			break
 10553  		}
 10554  		pWord = (*amatch_avl)(unsafe.Pointer(pNode)).FpWord
 10555  		amatchAvlRemove(tls, pCur+80, pWord+8)
 10556  
 10557  		nWord = int32(libc.Xstrlen(tls, pWord+124+uintptr(2)))
 10558  		if nWord+20 > int32(nBuf) {
 10559  			nBuf = int8(nWord + 100)
 10560  			zBuf = sqlite3.Xsqlite3_realloc(tls, zBuf, int32(nBuf))
 10561  			if zBuf == uintptr(0) {
 10562  				return SQLITE_NOMEM
 10563  			}
 10564  		}
 10565  		amatchStrcpy(tls, zBuf, pWord+124+uintptr(2))
 10566  		*(*int8)(unsafe.Pointer(bp + 64)) = int8(0)
 10567  		*(*int8)(unsafe.Pointer(bp + 72)) = *(*int8)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FzInput + uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)))
 10568  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 {
 10569  			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++ {
 10570  				*(*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)))
 10571  			}
 10572  			*(*int8)(unsafe.Pointer(bp + 72 + uintptr(i))) = int8(0)
 10573  			nNextIn = i
 10574  		} else {
 10575  			nNextIn = 0
 10576  		}
 10577  
 10578  		if *(*int8)(unsafe.Pointer(bp + 72)) != 0 && int32(*(*int8)(unsafe.Pointer(bp + 72))) != '*' {
 10579  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10580  			amatchStrcat(tls, zBuf, bp+72)
 10581  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, nWord+nNextIn, uintptr(0))
 10582  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10583  			if rc == SQLITE_ROW {
 10584  				zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10585  				if libc.Xstrncmp(tls, zBuf, zW, uint64(nWord+nNextIn)) == 0 {
 10586  					amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn, zBuf, ts+584)
 10587  				}
 10588  			}
 10589  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10590  		}
 10591  
 10592  		for 1 != 0 {
 10593  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10594  			sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10595  			sqlite3.Xsqlite3_bind_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 1, zBuf, -1, libc.UintptrFromInt32(-1))
 10596  			rc = sqlite3.Xsqlite3_step(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10597  			if rc != SQLITE_ROW {
 10598  				break
 10599  			}
 10600  			zW = sqlite3.Xsqlite3_column_text(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck, 0)
 10601  			amatchStrcpy(tls, zBuf+uintptr(nWord), bp+64)
 10602  			if libc.Xstrncmp(tls, zW, zBuf, uint64(nWord)) != 0 {
 10603  				break
 10604  			}
 10605  			if int32(*(*int8)(unsafe.Pointer(bp + 72))) == '*' && int32(*(*int8)(unsafe.Pointer(bp + 72 + 1))) == 0 ||
 10606  				int32(*(*int8)(unsafe.Pointer(bp + 72))) == 0 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord)))) == 0 {
 10607  				isMatch = 1
 10608  				*(*int8)(unsafe.Pointer(bp + 72)) = int8(0)
 10609  				nNextIn = 0
 10610  				break
 10611  			}
 10612  			*(*int8)(unsafe.Pointer(bp + 64)) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord)))
 10613  			for i = 1; i <= 4 && int32(*(*int8)(unsafe.Pointer(zW + uintptr(nWord+i))))&0xc0 == 0x80; i++ {
 10614  				*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = *(*int8)(unsafe.Pointer(zW + uintptr(nWord+i)))
 10615  			}
 10616  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i))) = int8(0)
 10617  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10618  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns > 0 {
 10619  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrIns, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch),
 10620  					zBuf, bp+64)
 10621  			}
 10622  			if (*amatch_vtab)(unsafe.Pointer(p)).FrSub > 0 {
 10623  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrSub, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10624  					zBuf, bp+64)
 10625  			}
 10626  			if (*amatch_vtab)(unsafe.Pointer(p)).FrIns < 0 && (*amatch_vtab)(unsafe.Pointer(p)).FrSub < 0 {
 10627  				break
 10628  			}
 10629  			*(*int8)(unsafe.Pointer(bp + 64 + uintptr(i-1)))++
 10630  		}
 10631  		sqlite3.Xsqlite3_reset(tls, (*amatch_vtab)(unsafe.Pointer(p)).FpVCheck)
 10632  
 10633  		if (*amatch_vtab)(unsafe.Pointer(p)).FrDel > 0 {
 10634  			*(*int8)(unsafe.Pointer(zBuf + uintptr(nWord))) = int8(0)
 10635  			amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_vtab)(unsafe.Pointer(p)).FrDel, int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+nNextIn,
 10636  				zBuf, ts+584)
 10637  		}
 10638  
 10639  		for pRule = (*amatch_vtab)(unsafe.Pointer(p)).FpRule; pRule != 0; pRule = (*amatch_rule)(unsafe.Pointer(pRule)).FpNext {
 10640  			if (*amatch_rule)(unsafe.Pointer(pRule)).FiLang != (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang {
 10641  				continue
 10642  			}
 10643  			if libc.Xstrncmp(tls, (*amatch_rule)(unsafe.Pointer(pRule)).FzFrom, (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput+uintptr((*amatch_word)(unsafe.Pointer(pWord)).FnMatch), uint64((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom)) == 0 {
 10644  				amatchAddWord(tls, pCur, (*amatch_word)(unsafe.Pointer(pWord)).FrCost+(*amatch_rule)(unsafe.Pointer(pRule)).FrCost,
 10645  					int32((*amatch_word)(unsafe.Pointer(pWord)).FnMatch)+int32((*amatch_rule)(unsafe.Pointer(pRule)).FnFrom), pWord+124+uintptr(2), pRule+26)
 10646  			}
 10647  		}
 10648  	}
 10649  	(*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent = pWord
 10650  	sqlite3.Xsqlite3_free(tls, zBuf)
 10651  	return SQLITE_OK
 10652  }
 10653  
 10654  func amatchFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 10655  	bp := tls.Alloc(8)
 10656  	defer tls.Free(8)
 10657  
 10658  	var pCur uintptr = pVtabCursor
 10659  	var zWord uintptr = ts + 3840
 10660  	var idx int32
 10661  
 10662  	amatchClearCursor(tls, pCur)
 10663  	idx = 0
 10664  	if idxNum&1 != 0 {
 10665  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 10666  		idx++
 10667  	}
 10668  	if idxNum&2 != 0 {
 10669  		(*amatch_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10670  		idx++
 10671  	}
 10672  	if idxNum&4 != 0 {
 10673  		(*amatch_cursor)(unsafe.Pointer(pCur)).FiLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 10674  		idx++
 10675  	}
 10676  	(*amatch_cursor)(unsafe.Pointer(pCur)).FzInput = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zWord))
 10677  	if (*amatch_cursor)(unsafe.Pointer(pCur)).FzInput == uintptr(0) {
 10678  		return SQLITE_NOMEM
 10679  	}
 10680  	amatchAddWord(tls, pCur, 0, 0, ts+584, ts+584)
 10681  	amatchNext(tls, pVtabCursor)
 10682  
 10683  	return SQLITE_OK
 10684  }
 10685  
 10686  func amatchColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 10687  	var pCur uintptr = cur
 10688  	switch i {
 10689  	case AMATCH_COL_WORD:
 10690  		{
 10691  			sqlite3.Xsqlite3_result_text(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent+124+uintptr(2), -1, uintptr(0))
 10692  			break
 10693  
 10694  		}
 10695  	case AMATCH_COL_DISTANCE:
 10696  		{
 10697  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_word)(unsafe.Pointer((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FrCost)
 10698  			break
 10699  
 10700  		}
 10701  	case AMATCH_COL_LANGUAGE:
 10702  		{
 10703  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FiLang)
 10704  			break
 10705  
 10706  		}
 10707  	case AMATCH_COL_NWORD:
 10708  		{
 10709  			sqlite3.Xsqlite3_result_int(tls, ctx, (*amatch_cursor)(unsafe.Pointer(pCur)).FnWord)
 10710  			break
 10711  
 10712  		}
 10713  	default:
 10714  		{
 10715  			sqlite3.Xsqlite3_result_null(tls, ctx)
 10716  			break
 10717  
 10718  		}
 10719  	}
 10720  	return SQLITE_OK
 10721  }
 10722  
 10723  func amatchRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 10724  	var pCur uintptr = cur
 10725  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*amatch_cursor)(unsafe.Pointer(pCur)).FiRowid
 10726  	return SQLITE_OK
 10727  }
 10728  
 10729  func amatchEof(tls *libc.TLS, cur uintptr) int32 {
 10730  	var pCur uintptr = cur
 10731  	return libc.Bool32((*amatch_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 10732  }
 10733  
 10734  func amatchBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 10735  	var iPlan int32 = 0
 10736  	var iDistTerm int32 = -1
 10737  	var iLangTerm int32 = -1
 10738  	var i int32
 10739  	var pConstraint uintptr
 10740  
 10741  	_ = tab
 10742  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 10743  	i = 0
 10744  __1:
 10745  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 10746  		goto __3
 10747  	}
 10748  	{
 10749  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 10750  			goto __2
 10751  		}
 10752  		if iPlan&1 == 0 &&
 10753  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 10754  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 10755  			iPlan = iPlan | 1
 10756  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 10757  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10758  		}
 10759  		if iPlan&2 == 0 &&
 10760  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 10761  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 10762  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 10763  			iPlan = iPlan | 2
 10764  			iDistTerm = i
 10765  		}
 10766  		if iPlan&4 == 0 &&
 10767  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 10768  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 10769  			iPlan = iPlan | 4
 10770  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 10771  			iLangTerm = i
 10772  		}
 10773  
 10774  	}
 10775  	goto __2
 10776  __2:
 10777  	i++
 10778  	pConstraint += 12
 10779  	goto __1
 10780  	goto __3
 10781  __3:
 10782  	;
 10783  	if iPlan&2 != 0 {
 10784  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 10785  	}
 10786  	if iPlan&4 != 0 {
 10787  		var idx int32 = 1
 10788  		if iPlan&1 != 0 {
 10789  			idx++
 10790  		}
 10791  		if iPlan&2 != 0 {
 10792  			idx++
 10793  		}
 10794  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = idx
 10795  	}
 10796  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 10797  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 10798  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 10799  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 10800  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 10801  	}
 10802  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10000)
 10803  
 10804  	return SQLITE_OK
 10805  }
 10806  
 10807  func amatchUpdate(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 10808  	bp := tls.Alloc(24)
 10809  	defer tls.Free(24)
 10810  
 10811  	var p uintptr = pVTab
 10812  	var zCmd uintptr
 10813  	_ = pRowid
 10814  	if argc == 1 {
 10815  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3842,
 10816  			libc.VaList(bp, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10817  		return SQLITE_ERROR
 10818  	}
 10819  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_NULL {
 10820  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+3872,
 10821  			libc.VaList(bp+8, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10822  		return SQLITE_ERROR
 10823  	}
 10824  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))) != SQLITE_NULL ||
 10825  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8))) != SQLITE_NULL ||
 10826  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8))) != SQLITE_NULL {
 10827  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 10828  			ts+3900, libc.VaList(bp+16, (*amatch_vtab)(unsafe.Pointer(p)).FzSelf))
 10829  		return SQLITE_ERROR
 10830  	}
 10831  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 10832  	if zCmd == uintptr(0) {
 10833  		return SQLITE_OK
 10834  	}
 10835  
 10836  	return SQLITE_OK
 10837  }
 10838  
 10839  var amatchModule = sqlite3_module{
 10840  	FxCreate:     0,
 10841  	FxConnect:    0,
 10842  	FxBestIndex:  0,
 10843  	FxDisconnect: 0,
 10844  	FxDestroy:    0,
 10845  	FxOpen:       0,
 10846  	FxClose:      0,
 10847  	FxFilter:     0,
 10848  	FxNext:       0,
 10849  	FxEof:        0,
 10850  	FxColumn:     0,
 10851  	FxRowid:      0,
 10852  	FxUpdate:     0,
 10853  }
 10854  
 10855  func sqlite3_amatch_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 10856  	var rc int32 = SQLITE_OK
 10857  	_ = pApi
 10858  
 10859  	_ = pzErrMsg
 10860  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+3949, uintptr(unsafe.Pointer(&amatchModule)), uintptr(0))
 10861  	return rc
 10862  }
 10863  
 10864  var azType = [4]uintptr{ts + 3967, ts + 3973, ts + 2562, ts + 3979}
 10865  
 10866  type carray_bind1 = struct {
 10867  	FaData  uintptr
 10868  	FnData  int32
 10869  	FmFlags int32
 10870  	FxDel   uintptr
 10871  }
 10872  
 10873  type carray_bind = carray_bind1
 10874  
 10875  type carray_cursor1 = struct {
 10876  	Fbase        sqlite3_vtab_cursor
 10877  	FiRowid      sqlite3_int64
 10878  	FpPtr        uintptr
 10879  	FiCnt        sqlite3_int64
 10880  	FeType       uint8
 10881  	F__ccgo_pad1 [7]byte
 10882  }
 10883  
 10884  type carray_cursor = carray_cursor1
 10885  
 10886  func carrayConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 10887  	var pNew uintptr
 10888  	var rc int32
 10889  
 10890  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 10891  		ts+3985)
 10892  	if rc == SQLITE_OK {
 10893  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 10894  		if pNew == uintptr(0) {
 10895  			return SQLITE_NOMEM
 10896  		}
 10897  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 10898  	}
 10899  	return rc
 10900  }
 10901  
 10902  func carrayDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 10903  	sqlite3.Xsqlite3_free(tls, pVtab)
 10904  	return SQLITE_OK
 10905  }
 10906  
 10907  func carrayOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 10908  	var pCur uintptr
 10909  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(carray_cursor{})))
 10910  	if pCur == uintptr(0) {
 10911  		return SQLITE_NOMEM
 10912  	}
 10913  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(carray_cursor{})))
 10914  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 10915  	return SQLITE_OK
 10916  }
 10917  
 10918  func carrayClose(tls *libc.TLS, cur uintptr) int32 {
 10919  	sqlite3.Xsqlite3_free(tls, cur)
 10920  	return SQLITE_OK
 10921  }
 10922  
 10923  func carrayNext(tls *libc.TLS, cur uintptr) int32 {
 10924  	var pCur uintptr = cur
 10925  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid++
 10926  	return SQLITE_OK
 10927  }
 10928  
 10929  func carrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 10930  	var pCur uintptr = cur
 10931  	var x sqlite3_int64 = int64(0)
 10932  	switch i {
 10933  	case CARRAY_COLUMN_POINTER:
 10934  		return SQLITE_OK
 10935  	case CARRAY_COLUMN_COUNT:
 10936  		x = (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt
 10937  		break
 10938  	case CARRAY_COLUMN_CTYPE:
 10939  		{
 10940  			sqlite3.Xsqlite3_result_text(tls, ctx, azType[(*carray_cursor)(unsafe.Pointer(pCur)).FeType], -1, uintptr(0))
 10941  			return SQLITE_OK
 10942  
 10943  		}
 10944  	default:
 10945  		{
 10946  			switch int32((*carray_cursor)(unsafe.Pointer(pCur)).FeType) {
 10947  			case CARRAY_INT32:
 10948  				{
 10949  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10950  					sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*4)))
 10951  					return SQLITE_OK
 10952  
 10953  				}
 10954  			case CARRAY_INT64:
 10955  				{
 10956  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10957  					sqlite3.Xsqlite3_result_int64(tls, ctx, *(*sqlite3_int64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 10958  					return SQLITE_OK
 10959  
 10960  				}
 10961  			case CARRAY_DOUBLE:
 10962  				{
 10963  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10964  					sqlite3.Xsqlite3_result_double(tls, ctx, *(*float64)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)))
 10965  					return SQLITE_OK
 10966  
 10967  				}
 10968  			case CARRAY_TEXT:
 10969  				{
 10970  					var p uintptr = (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr
 10971  					sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer(p + uintptr((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid-int64(1))*8)), -1, libc.UintptrFromInt32(-1))
 10972  					return SQLITE_OK
 10973  
 10974  				}
 10975  			}
 10976  
 10977  		}
 10978  	}
 10979  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 10980  	return SQLITE_OK
 10981  }
 10982  
 10983  func carrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 10984  	var pCur uintptr = cur
 10985  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*carray_cursor)(unsafe.Pointer(pCur)).FiRowid
 10986  	return SQLITE_OK
 10987  }
 10988  
 10989  func carrayEof(tls *libc.TLS, cur uintptr) int32 {
 10990  	var pCur uintptr = cur
 10991  	return libc.Bool32((*carray_cursor)(unsafe.Pointer(pCur)).FiRowid > (*carray_cursor)(unsafe.Pointer(pCur)).FiCnt)
 10992  }
 10993  
 10994  func carrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 10995  	bp := tls.Alloc(8)
 10996  	defer tls.Free(8)
 10997  
 10998  	var pCur uintptr = pVtabCursor
 10999  	(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = uintptr(0)
 11000  	(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = int64(0)
 11001  	switch idxNum {
 11002  	case 1:
 11003  		{
 11004  			var pBind uintptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4048)
 11005  			if pBind == uintptr(0) {
 11006  				break
 11007  			}
 11008  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = (*carray_bind)(unsafe.Pointer(pBind)).FaData
 11009  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = sqlite3_int64((*carray_bind)(unsafe.Pointer(pBind)).FnData)
 11010  			(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8((*carray_bind)(unsafe.Pointer(pBind)).FmFlags & 0x03)
 11011  			break
 11012  
 11013  		}
 11014  	case 2:
 11015  		fallthrough
 11016  	case 3:
 11017  		{
 11018  			(*carray_cursor)(unsafe.Pointer(pCur)).FpPtr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv)), ts+4060)
 11019  			(*carray_cursor)(unsafe.Pointer(pCur)).FiCnt = func() int64 {
 11020  				if (*carray_cursor)(unsafe.Pointer(pCur)).FpPtr != 0 {
 11021  					return sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 11022  				}
 11023  				return int64(0)
 11024  			}()
 11025  			if idxNum < 3 {
 11026  				(*carray_cursor)(unsafe.Pointer(pCur)).FeType = uint8(CARRAY_INT32)
 11027  			} else {
 11028  				var i uint8
 11029  				var zType uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 11030  				for i = uint8(0); uint64(i) < uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 11031  					if sqlite3.Xsqlite3_stricmp(tls, zType, azType[i]) == 0 {
 11032  						break
 11033  					}
 11034  				}
 11035  				if uint64(i) >= uint64(unsafe.Sizeof(azType))/uint64(unsafe.Sizeof(uintptr(0))) {
 11036  					(*sqlite3_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 11037  						ts+4067, libc.VaList(bp, zType))
 11038  					return SQLITE_ERROR
 11039  				} else {
 11040  					(*carray_cursor)(unsafe.Pointer(pCur)).FeType = i
 11041  				}
 11042  			}
 11043  			break
 11044  
 11045  		}
 11046  	}
 11047  	(*carray_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 11048  	return SQLITE_OK
 11049  }
 11050  
 11051  func carrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 11052  	var i int32
 11053  	var ptrIdx int32 = -1
 11054  	var cntIdx int32 = -1
 11055  	var ctypeIdx int32 = -1
 11056  
 11057  	var pConstraint uintptr
 11058  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 11059  	i = 0
 11060  __1:
 11061  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 11062  		goto __3
 11063  	}
 11064  	{
 11065  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 11066  			goto __2
 11067  		}
 11068  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 11069  			goto __2
 11070  		}
 11071  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 11072  		case CARRAY_COLUMN_POINTER:
 11073  			ptrIdx = i
 11074  			break
 11075  		case CARRAY_COLUMN_COUNT:
 11076  			cntIdx = i
 11077  			break
 11078  		case CARRAY_COLUMN_CTYPE:
 11079  			ctypeIdx = i
 11080  			break
 11081  		}
 11082  
 11083  	}
 11084  	goto __2
 11085  __2:
 11086  	i++
 11087  	pConstraint += 12
 11088  	goto __1
 11089  	goto __3
 11090  __3:
 11091  	;
 11092  	if ptrIdx >= 0 {
 11093  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).FargvIndex = 1
 11094  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ptrIdx)*8)).Fomit = uint8(1)
 11095  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 11096  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(100)
 11097  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 11098  		if cntIdx >= 0 {
 11099  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).FargvIndex = 2
 11100  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(cntIdx)*8)).Fomit = uint8(1)
 11101  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 11102  			if ctypeIdx >= 0 {
 11103  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).FargvIndex = 3
 11104  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ctypeIdx)*8)).Fomit = uint8(1)
 11105  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 3
 11106  			}
 11107  		}
 11108  	} else {
 11109  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2147483647)
 11110  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 11111  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 11112  	}
 11113  	return SQLITE_OK
 11114  }
 11115  
 11116  var carrayModule = sqlite3_module{
 11117  	FxConnect:    0,
 11118  	FxBestIndex:  0,
 11119  	FxDisconnect: 0,
 11120  	FxOpen:       0,
 11121  	FxClose:      0,
 11122  	FxFilter:     0,
 11123  	FxNext:       0,
 11124  	FxEof:        0,
 11125  	FxColumn:     0,
 11126  	FxRowid:      0,
 11127  }
 11128  
 11129  func carrayBindDel(tls *libc.TLS, pPtr uintptr) {
 11130  	var p uintptr = pPtr
 11131  	if (*carray_bind)(unsafe.Pointer(p)).FxDel != uintptr(0) {
 11132  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*carray_bind)(unsafe.Pointer(p)).FxDel})).f(tls, (*carray_bind)(unsafe.Pointer(p)).FaData)
 11133  	}
 11134  	sqlite3.Xsqlite3_free(tls, p)
 11135  }
 11136  
 11137  func sqlite3_carray_bind(tls *libc.TLS, pStmt uintptr, idx int32, aData uintptr, nData int32, mFlags int32, xDestroy uintptr) int32 {
 11138  	var pNew uintptr
 11139  	var i int32
 11140  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(carray_bind{})))
 11141  	if pNew == uintptr(0) {
 11142  		if xDestroy != uintptr(0) && xDestroy != libc.UintptrFromInt32(-1) {
 11143  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, aData)
 11144  		}
 11145  		return SQLITE_NOMEM
 11146  	}
 11147  	(*carray_bind)(unsafe.Pointer(pNew)).FnData = nData
 11148  	(*carray_bind)(unsafe.Pointer(pNew)).FmFlags = mFlags
 11149  	if xDestroy == libc.UintptrFromInt32(-1) {
 11150  		var sz sqlite3_int64 = sqlite3_int64(nData)
 11151  		switch mFlags & 0x03 {
 11152  		case CARRAY_INT32:
 11153  			sz = sz * int64(4)
 11154  			break
 11155  			fallthrough
 11156  		case CARRAY_INT64:
 11157  			sz = sz * int64(8)
 11158  			break
 11159  			fallthrough
 11160  		case CARRAY_DOUBLE:
 11161  			sz = sz * int64(8)
 11162  			break
 11163  			fallthrough
 11164  		case CARRAY_TEXT:
 11165  			sz = int64(uint64(sz) * uint64(unsafe.Sizeof(uintptr(0))))
 11166  			break
 11167  		}
 11168  		if mFlags&0x03 == CARRAY_TEXT {
 11169  			for i = 0; i < nData; i++ {
 11170  				var z uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11171  				if z != 0 {
 11172  					sz = sqlite3_int64(uint64(sz) + (libc.Xstrlen(tls, z) + uint64(1)))
 11173  				}
 11174  			}
 11175  		}
 11176  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 11177  		if (*carray_bind)(unsafe.Pointer(pNew)).FaData == uintptr(0) {
 11178  			sqlite3.Xsqlite3_free(tls, pNew)
 11179  			return SQLITE_NOMEM
 11180  		}
 11181  		if mFlags&0x03 == CARRAY_TEXT {
 11182  			var az uintptr = (*carray_bind)(unsafe.Pointer(pNew)).FaData
 11183  			var z uintptr = az + uintptr(nData)*8
 11184  			for i = 0; i < nData; i++ {
 11185  				var zData uintptr = *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8))
 11186  				var n sqlite3_int64
 11187  				if zData == uintptr(0) {
 11188  					*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = uintptr(0)
 11189  					continue
 11190  				}
 11191  				*(*uintptr)(unsafe.Pointer(az + uintptr(i)*8)) = z
 11192  				n = sqlite3_int64(libc.Xstrlen(tls, zData))
 11193  				libc.Xmemcpy(tls, z, zData, uint64(n+int64(1)))
 11194  				z += uintptr(n + int64(1))
 11195  			}
 11196  		} else {
 11197  			libc.Xmemcpy(tls, (*carray_bind)(unsafe.Pointer(pNew)).FaData, aData, uint64(sz))
 11198  		}
 11199  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 11200  	} else {
 11201  		(*carray_bind)(unsafe.Pointer(pNew)).FaData = aData
 11202  		(*carray_bind)(unsafe.Pointer(pNew)).FxDel = xDestroy
 11203  	}
 11204  	return sqlite3.Xsqlite3_bind_pointer(tls, pStmt, idx, pNew, ts+4048, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{carrayBindDel})))
 11205  }
 11206  
 11207  func inttoptrFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11208  	bp := tls.Alloc(20)
 11209  	defer tls.Free(20)
 11210  
 11211  	*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11212  	if uint64(unsafe.Sizeof(sqlite3_int64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 11213  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 11214  	} else {
 11215  		*(*int32)(unsafe.Pointer(bp + 16)) = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) & int64(0xffffffff))
 11216  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 11217  	}
 11218  	sqlite3.Xsqlite3_result_pointer(tls, context, *(*uintptr)(unsafe.Pointer(bp)), ts+4060, uintptr(0))
 11219  }
 11220  
 11221  func sqlite3_carray_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11222  	var rc int32 = SQLITE_OK
 11223  	_ = pApi
 11224  
 11225  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4060, uintptr(unsafe.Pointer(&carrayModule)), uintptr(0))
 11226  	if rc == SQLITE_OK {
 11227  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4088, 1, SQLITE_UTF8, uintptr(0),
 11228  			*(*uintptr)(unsafe.Pointer(&struct {
 11229  				f func(*libc.TLS, uintptr, int32, uintptr)
 11230  			}{inttoptrFunc})), uintptr(0), uintptr(0))
 11231  	}
 11232  	return rc
 11233  }
 11234  
 11235  type CksmVfs = sqlite3_vfs1
 11236  type CksmFile1 = struct {
 11237  	Fbase        sqlite3_file
 11238  	FzFName      uintptr
 11239  	FcomputeCksm int8
 11240  	FverifyCksm  int8
 11241  	FisWal       int8
 11242  	FinCkpt      int8
 11243  	F__ccgo_pad1 [4]byte
 11244  	FpPartner    uintptr
 11245  }
 11246  
 11247  type CksmFile = CksmFile1
 11248  
 11249  type u8 = uint8
 11250  
 11251  var cksm_vfs = sqlite3_vfs{
 11252  	FiVersion:          3,
 11253  	FmxPathname:        1024,
 11254  	FzName:             ts + 4097,
 11255  	FxOpen:             0,
 11256  	FxDelete:           0,
 11257  	FxAccess:           0,
 11258  	FxFullPathname:     0,
 11259  	FxDlOpen:           0,
 11260  	FxDlError:          0,
 11261  	FxDlSym:            0,
 11262  	FxDlClose:          0,
 11263  	FxRandomness:       0,
 11264  	FxSleep:            0,
 11265  	FxCurrentTime:      0,
 11266  	FxGetLastError:     0,
 11267  	FxCurrentTimeInt64: 0,
 11268  	FxSetSystemCall:    0,
 11269  	FxGetSystemCall:    0,
 11270  	FxNextSystemCall:   0,
 11271  }
 11272  
 11273  var cksm_io_methods = sqlite3_io_methods{
 11274  	FiVersion:               3,
 11275  	FxClose:                 0,
 11276  	FxRead:                  0,
 11277  	FxWrite:                 0,
 11278  	FxTruncate:              0,
 11279  	FxSync:                  0,
 11280  	FxFileSize:              0,
 11281  	FxLock:                  0,
 11282  	FxUnlock:                0,
 11283  	FxCheckReservedLock:     0,
 11284  	FxFileControl:           0,
 11285  	FxSectorSize:            0,
 11286  	FxDeviceCharacteristics: 0,
 11287  	FxShmMap:                0,
 11288  	FxShmLock:               0,
 11289  	FxShmBarrier:            0,
 11290  	FxShmUnmap:              0,
 11291  	FxFetch:                 0,
 11292  	FxUnfetch:               0,
 11293  }
 11294  
 11295  func cksmCompute(tls *libc.TLS, a uintptr, nByte int32, aOut uintptr) {
 11296  	bp := tls.Alloc(12)
 11297  	defer tls.Free(12)
 11298  
 11299  	*(*u32)(unsafe.Pointer(bp + 4)) = u32(0)
 11300  	*(*u32)(unsafe.Pointer(bp + 8)) = u32(0)
 11301  	var aData uintptr = a
 11302  	var aEnd uintptr = a + uintptr(nByte)
 11303  	*(*u32)(unsafe.Pointer(bp)) = u32(1)
 11304  
 11305  	if 1 == int32(*(*u8)(unsafe.Pointer(bp))) {
 11306  		for __ccgo := true; __ccgo; __ccgo = aData < aEnd {
 11307  			*(*u32)(unsafe.Pointer(bp + 4)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 8))
 11308  			*(*u32)(unsafe.Pointer(bp + 8)) += *(*u32)(unsafe.Pointer(libc.PostIncUintptr(&aData, 4))) + *(*u32)(unsafe.Pointer(bp + 4))
 11309  		}
 11310  	} else {
 11311  		for __ccgo1 := true; __ccgo1; __ccgo1 = aData < aEnd {
 11312  			*(*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))
 11313  			*(*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))
 11314  			aData += 4 * uintptr(2)
 11315  		}
 11316  		*(*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
 11317  		*(*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
 11318  	}
 11319  	libc.Xmemcpy(tls, aOut, bp+4, uint64(4))
 11320  	libc.Xmemcpy(tls, aOut+uintptr(4), bp+8, uint64(4))
 11321  }
 11322  
 11323  func cksmVerifyFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 11324  	bp := tls.Alloc(8)
 11325  	defer tls.Free(8)
 11326  
 11327  	var nByte int32
 11328  	var data uintptr
 11329  
 11330  	data = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11331  	if data == uintptr(0) {
 11332  		return
 11333  	}
 11334  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_BLOB {
 11335  		return
 11336  	}
 11337  	nByte = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 11338  	if nByte < 512 || nByte > 65536 || nByte&(nByte-1) != 0 {
 11339  		return
 11340  	}
 11341  	cksmCompute(tls, data, nByte-8, bp)
 11342  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(libc.Xmemcmp(tls, data+uintptr(nByte)-uintptr(8), bp, uint64(8)) == 0))
 11343  }
 11344  
 11345  func cksmClose(tls *libc.TLS, pFile uintptr) int32 {
 11346  	var p uintptr = pFile
 11347  	if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11348  		(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = uintptr(0)
 11349  		(*CksmFile)(unsafe.Pointer(p)).FpPartner = uintptr(0)
 11350  	}
 11351  	pFile = pFile + uintptr(1)*32
 11352  	return (*struct {
 11353  		f func(*libc.TLS, uintptr) int32
 11354  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxClose})).f(tls, pFile)
 11355  }
 11356  
 11357  func cksmSetFlags(tls *libc.TLS, p uintptr, hasCorrectReserveSize int32) {
 11358  	if hasCorrectReserveSize != int32((*CksmFile)(unsafe.Pointer(p)).FcomputeCksm) {
 11359  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = libc.AssignPtrInt8(p+17, int8(hasCorrectReserveSize))
 11360  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11361  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = int8(hasCorrectReserveSize)
 11362  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm = int8(hasCorrectReserveSize)
 11363  		}
 11364  	}
 11365  }
 11366  
 11367  func cksmRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11368  	bp := tls.Alloc(24)
 11369  	defer tls.Free(24)
 11370  
 11371  	var rc int32
 11372  	var p uintptr = pFile
 11373  	pFile = pFile + uintptr(1)*32
 11374  	rc = (*struct {
 11375  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11376  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxRead})).f(tls, pFile, zBuf, iAmt, iOfst)
 11377  	if rc == SQLITE_OK {
 11378  		if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11379  			var d uintptr = zBuf
 11380  			var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11381  			cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11382  		}
 11383  
 11384  		if iAmt >= 512 &&
 11385  			(*CksmFile)(unsafe.Pointer(p)).FverifyCksm != 0 &&
 11386  			!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11387  			cksmCompute(tls, zBuf, iAmt-8, bp+16)
 11388  			if libc.Xmemcmp(tls, zBuf+uintptr(iAmt)-uintptr(8), bp+16, uint64(8)) != 0 {
 11389  				sqlite3.Xsqlite3_log(tls, SQLITE_IOERR|int32(32)<<8,
 11390  					ts+4109,
 11391  					libc.VaList(bp, iOfst, (*CksmFile)(unsafe.Pointer(p)).FzFName))
 11392  				rc = SQLITE_IOERR | int32(32)<<8
 11393  			}
 11394  		}
 11395  	}
 11396  	return rc
 11397  }
 11398  
 11399  func cksmWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 11400  	var p uintptr = pFile
 11401  	pFile = pFile + uintptr(1)*32
 11402  	if iOfst == int64(0) && iAmt >= 100 && (libc.Xmemcmp(tls, zBuf, ts+3288, uint64(16)) == 0 || libc.Xmemcmp(tls, zBuf, ts+4105, uint64(3)) == 0) {
 11403  		var d uintptr = zBuf
 11404  		var hasCorrectReserveSize int8 = int8(libc.Bool32(int32(*(*u8)(unsafe.Pointer(d + 20))) == 8))
 11405  		cksmSetFlags(tls, p, int32(hasCorrectReserveSize))
 11406  	}
 11407  
 11408  	if iAmt >= 512 &&
 11409  		(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 &&
 11410  		!(int32((*CksmFile)(unsafe.Pointer(p)).FinCkpt) != 0) {
 11411  		cksmCompute(tls, zBuf, iAmt-8, zBuf+uintptr(iAmt)-uintptr(8))
 11412  	}
 11413  	return (*struct {
 11414  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 11415  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxWrite})).f(tls, pFile, zBuf, iAmt, iOfst)
 11416  }
 11417  
 11418  func cksmTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 11419  	pFile = pFile + uintptr(1)*32
 11420  	return (*struct {
 11421  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 11422  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxTruncate})).f(tls, pFile, size)
 11423  }
 11424  
 11425  func cksmSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 11426  	pFile = pFile + uintptr(1)*32
 11427  	return (*struct {
 11428  		f func(*libc.TLS, uintptr, int32) int32
 11429  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSync})).f(tls, pFile, flags)
 11430  }
 11431  
 11432  func cksmFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 11433  	var p uintptr = pFile
 11434  	pFile = p + uintptr(1)*32
 11435  	return (*struct {
 11436  		f func(*libc.TLS, uintptr, uintptr) int32
 11437  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileSize})).f(tls, pFile, pSize)
 11438  }
 11439  
 11440  func cksmLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11441  	pFile = pFile + uintptr(1)*32
 11442  	return (*struct {
 11443  		f func(*libc.TLS, uintptr, int32) int32
 11444  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxLock})).f(tls, pFile, eLock)
 11445  }
 11446  
 11447  func cksmUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 11448  	pFile = pFile + uintptr(1)*32
 11449  	return (*struct {
 11450  		f func(*libc.TLS, uintptr, int32) int32
 11451  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnlock})).f(tls, pFile, eLock)
 11452  }
 11453  
 11454  func cksmCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 11455  	pFile = pFile + uintptr(1)*32
 11456  	return (*struct {
 11457  		f func(*libc.TLS, uintptr, uintptr) int32
 11458  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxCheckReservedLock})).f(tls, pFile, pResOut)
 11459  }
 11460  
 11461  func cksmFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 11462  	bp := tls.Alloc(16)
 11463  	defer tls.Free(16)
 11464  
 11465  	var rc int32
 11466  	var p uintptr = pFile
 11467  	pFile = pFile + uintptr(1)*32
 11468  	if op == SQLITE_FCNTL_PRAGMA {
 11469  		var azArg uintptr = pArg
 11470  
 11471  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4144) == 0 {
 11472  			var zArg uintptr = *(*uintptr)(unsafe.Pointer(azArg + 2*8))
 11473  			if zArg != uintptr(0) {
 11474  				if int32(*(*int8)(unsafe.Pointer(zArg))) >= '1' && int32(*(*int8)(unsafe.Pointer(zArg))) <= '9' ||
 11475  					sqlite3.Xsqlite3_strlike(tls, ts+4166, zArg, uint32(0)) == 0 ||
 11476  					sqlite3.Xsqlite3_stricmp(tls, ts+4174, zArg) == 0 ||
 11477  					sqlite3.Xsqlite3_stricmp(tls, ts+4178, zArg) == 0 {
 11478  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm
 11479  				} else {
 11480  					(*CksmFile)(unsafe.Pointer(p)).FverifyCksm = int8(0)
 11481  				}
 11482  				if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11483  					(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FverifyCksm = (*CksmFile)(unsafe.Pointer(p)).FverifyCksm
 11484  				}
 11485  			}
 11486  			*(*uintptr)(unsafe.Pointer(azArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, int32((*CksmFile)(unsafe.Pointer(p)).FverifyCksm)))
 11487  			return SQLITE_OK
 11488  		} else if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 && *(*uintptr)(unsafe.Pointer(azArg + 2*8)) != uintptr(0) &&
 11489  			sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(azArg + 1*8)), ts+4181) == 0 {
 11490  			return SQLITE_OK
 11491  		}
 11492  	} else if op == SQLITE_FCNTL_CKPT_START || op == SQLITE_FCNTL_CKPT_DONE {
 11493  		(*CksmFile)(unsafe.Pointer(p)).FinCkpt = int8(libc.Bool32(op == SQLITE_FCNTL_CKPT_START))
 11494  		if (*CksmFile)(unsafe.Pointer(p)).FpPartner != 0 {
 11495  			(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FinCkpt = (*CksmFile)(unsafe.Pointer(p)).FinCkpt
 11496  		}
 11497  	} else if op == SQLITE_FCNTL_CKSM_FILE {
 11498  		var ppFile uintptr = pArg
 11499  		*(*uintptr)(unsafe.Pointer(ppFile)) = p
 11500  		return SQLITE_OK
 11501  	}
 11502  	rc = (*struct {
 11503  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11504  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFileControl})).f(tls, pFile, op, pArg)
 11505  	if rc == SQLITE_OK && op == SQLITE_FCNTL_VFSNAME {
 11506  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+4191, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(pArg))))
 11507  	}
 11508  	return rc
 11509  }
 11510  
 11511  func cksmSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 11512  	pFile = pFile + uintptr(1)*32
 11513  	return (*struct {
 11514  		f func(*libc.TLS, uintptr) int32
 11515  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxSectorSize})).f(tls, pFile)
 11516  }
 11517  
 11518  func cksmDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 11519  	pFile = pFile + uintptr(1)*32
 11520  	return (*struct {
 11521  		f func(*libc.TLS, uintptr) int32
 11522  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxDeviceCharacteristics})).f(tls, pFile)
 11523  }
 11524  
 11525  func cksmShmMap(tls *libc.TLS, pFile uintptr, iPg int32, pgsz int32, bExtend int32, pp uintptr) int32 {
 11526  	pFile = pFile + uintptr(1)*32
 11527  	return (*struct {
 11528  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 11529  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmMap})).f(tls, pFile, iPg, pgsz, bExtend, pp)
 11530  }
 11531  
 11532  func cksmShmLock(tls *libc.TLS, pFile uintptr, offset int32, n int32, flags int32) int32 {
 11533  	pFile = pFile + uintptr(1)*32
 11534  	return (*struct {
 11535  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 11536  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmLock})).f(tls, pFile, offset, n, flags)
 11537  }
 11538  
 11539  func cksmShmBarrier(tls *libc.TLS, pFile uintptr) {
 11540  	pFile = pFile + uintptr(1)*32
 11541  	(*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)
 11542  }
 11543  
 11544  func cksmShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 11545  	pFile = pFile + uintptr(1)*32
 11546  	return (*struct {
 11547  		f func(*libc.TLS, uintptr, int32) int32
 11548  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxShmUnmap})).f(tls, pFile, deleteFlag)
 11549  }
 11550  
 11551  func cksmFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 11552  	var p uintptr = pFile
 11553  	if (*CksmFile)(unsafe.Pointer(p)).FcomputeCksm != 0 {
 11554  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11555  		return SQLITE_OK
 11556  	}
 11557  	pFile = pFile + uintptr(1)*32
 11558  	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 {
 11559  		return (*struct {
 11560  			f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 11561  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxFetch})).f(tls, pFile, iOfst, iAmt, pp)
 11562  	}
 11563  	*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 11564  	return SQLITE_OK
 11565  }
 11566  
 11567  func cksmUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, pPage uintptr) int32 {
 11568  	pFile = pFile + uintptr(1)*32
 11569  	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 {
 11570  		return (*struct {
 11571  			f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 11572  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)).FxUnfetch})).f(tls, pFile, iOfst, pPage)
 11573  	}
 11574  	return SQLITE_OK
 11575  }
 11576  
 11577  func cksmOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 11578  	bp := tls.Alloc(8)
 11579  	defer tls.Free(8)
 11580  
 11581  	var p uintptr
 11582  	var pSubFile uintptr
 11583  	var pSubVfs uintptr
 11584  	var rc int32
 11585  
 11586  	pSubVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11587  	if !(flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0) {
 11588  		goto __1
 11589  	}
 11590  	return (*struct {
 11591  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11592  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pFile, flags, pOutFlags)
 11593  __1:
 11594  	;
 11595  	p = pFile
 11596  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CksmFile{})))
 11597  	pSubFile = pFile + uintptr(1)*32
 11598  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&cksm_io_methods))
 11599  	rc = (*struct {
 11600  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 11601  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pSubVfs)).FxOpen})).f(tls, pSubVfs, zName, pSubFile, flags, pOutFlags)
 11602  	if !(rc != 0) {
 11603  		goto __2
 11604  	}
 11605  	goto cksm_open_done
 11606  __2:
 11607  	;
 11608  	if !(flags&SQLITE_OPEN_WAL != 0) {
 11609  		goto __3
 11610  	}
 11611  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_database_file_object(tls, zName)
 11612  	rc = (*struct {
 11613  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11614  	})(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)
 11615  
 11616  	(*CksmFile)(unsafe.Pointer(p)).FpPartner = *(*uintptr)(unsafe.Pointer(bp))
 11617  
 11618  	(*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FpPartner = p
 11619  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(1)
 11620  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = (*CksmFile)(unsafe.Pointer((*CksmFile)(unsafe.Pointer(p)).FpPartner)).FcomputeCksm
 11621  	goto __4
 11622  __3:
 11623  	(*CksmFile)(unsafe.Pointer(p)).FisWal = int8(0)
 11624  	(*CksmFile)(unsafe.Pointer(p)).FcomputeCksm = int8(0)
 11625  __4:
 11626  	;
 11627  	(*CksmFile)(unsafe.Pointer(p)).FzFName = zName
 11628  cksm_open_done:
 11629  	if !(rc != 0) {
 11630  		goto __5
 11631  	}
 11632  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 11633  __5:
 11634  	;
 11635  	return rc
 11636  }
 11637  
 11638  func cksmDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 11639  	return (*struct {
 11640  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 11641  	})(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)
 11642  }
 11643  
 11644  func cksmAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 11645  	return (*struct {
 11646  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11647  	})(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)
 11648  }
 11649  
 11650  func cksmFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 11651  	return (*struct {
 11652  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 11653  	})(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)
 11654  }
 11655  
 11656  func cksmDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 11657  	return (*struct {
 11658  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11659  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlOpen})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zPath)
 11660  }
 11661  
 11662  func cksmDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 11663  	(*struct {
 11664  		f func(*libc.TLS, uintptr, int32, uintptr)
 11665  	})(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)
 11666  }
 11667  
 11668  func cksmDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 11669  	return (*struct {
 11670  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 11671  	})(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)
 11672  }
 11673  
 11674  func cksmDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 11675  	(*struct {
 11676  		f func(*libc.TLS, uintptr, uintptr)
 11677  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxDlClose})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pHandle)
 11678  }
 11679  
 11680  func cksmRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 11681  	return (*struct {
 11682  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11683  	})(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)
 11684  }
 11685  
 11686  func cksmSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 11687  	return (*struct {
 11688  		f func(*libc.TLS, uintptr, int32) int32
 11689  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxSleep})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, nMicro)
 11690  }
 11691  
 11692  func cksmCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 11693  	return (*struct {
 11694  		f func(*libc.TLS, uintptr, uintptr) int32
 11695  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxCurrentTime})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, pTimeOut)
 11696  }
 11697  
 11698  func cksmGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 11699  	return (*struct {
 11700  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 11701  	})(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)
 11702  }
 11703  
 11704  func cksmCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 11705  	bp := tls.Alloc(8)
 11706  	defer tls.Free(8)
 11707  
 11708  	var pOrig uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 11709  	var rc int32
 11710  
 11711  	if (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64 != 0 {
 11712  		rc = (*struct {
 11713  			f func(*libc.TLS, uintptr, uintptr) int32
 11714  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTimeInt64})).f(tls, pOrig, p)
 11715  	} else {
 11716  		rc = (*struct {
 11717  			f func(*libc.TLS, uintptr, uintptr) int32
 11718  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrig)).FxCurrentTime})).f(tls, pOrig, bp)
 11719  		*(*sqlite3_int64)(unsafe.Pointer(p)) = libc.Int64FromFloat64(*(*float64)(unsafe.Pointer(bp)) * 86400000.0)
 11720  	}
 11721  	return rc
 11722  }
 11723  
 11724  func cksmSetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr, pCall sqlite3_syscall_ptr) int32 {
 11725  	return (*struct {
 11726  		f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 11727  	})(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)
 11728  }
 11729  
 11730  func cksmGetSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) sqlite3_syscall_ptr {
 11731  	return (*struct {
 11732  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 11733  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxGetSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11734  }
 11735  
 11736  func cksmNextSystemCall(tls *libc.TLS, pVfs uintptr, zName uintptr) uintptr {
 11737  	return (*struct {
 11738  		f func(*libc.TLS, uintptr, uintptr) uintptr
 11739  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FxNextSystemCall})).f(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData, zName)
 11740  }
 11741  
 11742  func cksmRegisterFunc(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 11743  	var rc int32
 11744  	if db == uintptr(0) {
 11745  		return SQLITE_OK
 11746  	}
 11747  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4199, 1,
 11748  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 11749  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 11750  			f func(*libc.TLS, uintptr, int32, uintptr)
 11751  		}{cksmVerifyFunc})), uintptr(0), uintptr(0))
 11752  	return rc
 11753  }
 11754  
 11755  func cksmRegisterVfs(tls *libc.TLS) int32 {
 11756  	var rc int32 = SQLITE_OK
 11757  	var pOrig uintptr
 11758  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != uintptr(0) {
 11759  		return SQLITE_OK
 11760  	}
 11761  	pOrig = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 11762  	if pOrig == uintptr(0) {
 11763  		return SQLITE_ERROR
 11764  	}
 11765  	cksm_vfs.FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pOrig)).FiVersion
 11766  	cksm_vfs.FpAppData = pOrig
 11767  	cksm_vfs.FszOsFile = int32(uint64((*sqlite3_vfs)(unsafe.Pointer(pOrig)).FszOsFile) + uint64(unsafe.Sizeof(CksmFile{})))
 11768  	rc = sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&cksm_vfs)), 1)
 11769  	if rc == SQLITE_OK {
 11770  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 11771  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 11772  		}{cksmRegisterFunc})))
 11773  	}
 11774  	return rc
 11775  }
 11776  
 11777  func sqlite3_register_cksumvfs(tls *libc.TLS, NotUsed uintptr) int32 {
 11778  	_ = NotUsed
 11779  	return cksmRegisterVfs(tls)
 11780  }
 11781  
 11782  func sqlite3_unregister_cksumvfs(tls *libc.TLS) int32 {
 11783  	if sqlite3.Xsqlite3_vfs_find(tls, ts+4097) != 0 {
 11784  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&cksm_vfs)))
 11785  		sqlite3.Xsqlite3_cancel_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 11786  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 11787  		}{cksmRegisterFunc})))
 11788  	}
 11789  	return SQLITE_OK
 11790  }
 11791  
 11792  type closure_vtab1 = struct {
 11793  	Fbase          sqlite3_vtab
 11794  	FzDb           uintptr
 11795  	FzSelf         uintptr
 11796  	FzTableName    uintptr
 11797  	FzIdColumn     uintptr
 11798  	FzParentColumn uintptr
 11799  	Fdb            uintptr
 11800  	FnCursor       int32
 11801  	F__ccgo_pad1   [4]byte
 11802  }
 11803  
 11804  type closure_vtab = closure_vtab1
 11805  type closure_cursor1 = struct {
 11806  	Fbase          sqlite3_vtab_cursor
 11807  	FpVtab         uintptr
 11808  	FzTableName    uintptr
 11809  	FzIdColumn     uintptr
 11810  	FzParentColumn uintptr
 11811  	FpCurrent      uintptr
 11812  	FpClosure      uintptr
 11813  }
 11814  
 11815  type closure_cursor = closure_cursor1
 11816  type closure_queue1 = struct {
 11817  	FpFirst uintptr
 11818  	FpLast  uintptr
 11819  }
 11820  
 11821  type closure_queue = closure_queue1
 11822  type closure_avl1 = struct {
 11823  	Fid          sqlite3_int64
 11824  	FiGeneration int32
 11825  	F__ccgo_pad1 [4]byte
 11826  	FpList       uintptr
 11827  	FpBefore     uintptr
 11828  	FpAfter      uintptr
 11829  	FpUp         uintptr
 11830  	Fheight      int16
 11831  	Fimbalance   int16
 11832  	F__ccgo_pad2 [4]byte
 11833  }
 11834  
 11835  type closure_avl = closure_avl1
 11836  
 11837  func closureAvlRecomputeHeight(tls *libc.TLS, p uintptr) {
 11838  	var hBefore int16
 11839  	if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11840  		hBefore = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpBefore)).Fheight
 11841  	} else {
 11842  		hBefore = int16(0)
 11843  	}
 11844  	var hAfter int16
 11845  	if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 11846  		hAfter = (*closure_avl)(unsafe.Pointer((*closure_avl)(unsafe.Pointer(p)).FpAfter)).Fheight
 11847  	} else {
 11848  		hAfter = int16(0)
 11849  	}
 11850  	(*closure_avl)(unsafe.Pointer(p)).Fimbalance = int16(int32(hBefore) - int32(hAfter))
 11851  	(*closure_avl)(unsafe.Pointer(p)).Fheight = int16(func() int32 {
 11852  		if int32(hBefore) > int32(hAfter) {
 11853  			return int32(hBefore)
 11854  		}
 11855  		return int32(hAfter)
 11856  	}() + 1)
 11857  }
 11858  
 11859  func closureAvlRotateBefore(tls *libc.TLS, pP uintptr) uintptr {
 11860  	var pB uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpBefore
 11861  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pB)).FpAfter
 11862  	(*closure_avl)(unsafe.Pointer(pB)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 11863  	(*closure_avl)(unsafe.Pointer(pB)).FpAfter = pP
 11864  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pB
 11865  	(*closure_avl)(unsafe.Pointer(pP)).FpBefore = pY
 11866  	if pY != 0 {
 11867  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 11868  	}
 11869  	closureAvlRecomputeHeight(tls, pP)
 11870  	closureAvlRecomputeHeight(tls, pB)
 11871  	return pB
 11872  }
 11873  
 11874  func closureAvlRotateAfter(tls *libc.TLS, pP uintptr) uintptr {
 11875  	var pA uintptr = (*closure_avl)(unsafe.Pointer(pP)).FpAfter
 11876  	var pY uintptr = (*closure_avl)(unsafe.Pointer(pA)).FpBefore
 11877  	(*closure_avl)(unsafe.Pointer(pA)).FpUp = (*closure_avl)(unsafe.Pointer(pP)).FpUp
 11878  	(*closure_avl)(unsafe.Pointer(pA)).FpBefore = pP
 11879  	(*closure_avl)(unsafe.Pointer(pP)).FpUp = pA
 11880  	(*closure_avl)(unsafe.Pointer(pP)).FpAfter = pY
 11881  	if pY != 0 {
 11882  		(*closure_avl)(unsafe.Pointer(pY)).FpUp = pP
 11883  	}
 11884  	closureAvlRecomputeHeight(tls, pP)
 11885  	closureAvlRecomputeHeight(tls, pA)
 11886  	return pA
 11887  }
 11888  
 11889  func closureAvlFromPtr(tls *libc.TLS, p uintptr, pp uintptr) uintptr {
 11890  	var pUp uintptr = (*closure_avl)(unsafe.Pointer(p)).FpUp
 11891  	if pUp == uintptr(0) {
 11892  		return pp
 11893  	}
 11894  	if (*closure_avl)(unsafe.Pointer(pUp)).FpAfter == p {
 11895  		return pUp + 32
 11896  	}
 11897  	return pUp + 24
 11898  }
 11899  
 11900  func closureAvlBalance(tls *libc.TLS, p uintptr) uintptr {
 11901  	bp := tls.Alloc(8)
 11902  	defer tls.Free(8)
 11903  	*(*uintptr)(unsafe.Pointer(bp)) = p
 11904  
 11905  	var pTop uintptr = *(*uintptr)(unsafe.Pointer(bp))
 11906  	var pp uintptr
 11907  	for *(*uintptr)(unsafe.Pointer(bp)) != 0 {
 11908  		closureAvlRecomputeHeight(tls, *(*uintptr)(unsafe.Pointer(bp)))
 11909  		if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) >= 2 {
 11910  			var pB uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore
 11911  			if int32((*closure_avl)(unsafe.Pointer(pB)).Fimbalance) < 0 {
 11912  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpBefore = closureAvlRotateAfter(tls, pB)
 11913  			}
 11914  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 11915  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateBefore(tls, *(*uintptr)(unsafe.Pointer(bp))))
 11916  		} else if int32((*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).Fimbalance) <= -2 {
 11917  			var pA uintptr = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter
 11918  			if int32((*closure_avl)(unsafe.Pointer(pA)).Fimbalance) > 0 {
 11919  				(*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpAfter = closureAvlRotateBefore(tls, pA)
 11920  			}
 11921  			pp = closureAvlFromPtr(tls, *(*uintptr)(unsafe.Pointer(bp)), bp)
 11922  			*(*uintptr)(unsafe.Pointer(bp)) = libc.AssignPtrUintptr(pp, closureAvlRotateAfter(tls, *(*uintptr)(unsafe.Pointer(bp))))
 11923  		}
 11924  		pTop = *(*uintptr)(unsafe.Pointer(bp))
 11925  		*(*uintptr)(unsafe.Pointer(bp)) = (*closure_avl)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp)))).FpUp
 11926  	}
 11927  	return pTop
 11928  }
 11929  
 11930  func closureAvlSearch(tls *libc.TLS, p uintptr, id sqlite3_int64) uintptr {
 11931  	for p != 0 && id != (*closure_avl)(unsafe.Pointer(p)).Fid {
 11932  		if id < (*closure_avl)(unsafe.Pointer(p)).Fid {
 11933  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11934  		} else {
 11935  			p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 11936  		}
 11937  	}
 11938  	return p
 11939  }
 11940  
 11941  func closureAvlFirst(tls *libc.TLS, p uintptr) uintptr {
 11942  	if p != 0 {
 11943  		for (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11944  			p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11945  		}
 11946  	}
 11947  	return p
 11948  }
 11949  
 11950  func closureAvlNext(tls *libc.TLS, p uintptr) uintptr {
 11951  	var pPrev uintptr = uintptr(0)
 11952  	for p != 0 && (*closure_avl)(unsafe.Pointer(p)).FpAfter == pPrev {
 11953  		pPrev = p
 11954  		p = (*closure_avl)(unsafe.Pointer(p)).FpUp
 11955  	}
 11956  	if p != 0 && pPrev == uintptr(0) {
 11957  		p = closureAvlFirst(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter)
 11958  	}
 11959  	return p
 11960  }
 11961  
 11962  func closureAvlInsert(tls *libc.TLS, ppHead uintptr, pNew uintptr) uintptr {
 11963  	var p uintptr = *(*uintptr)(unsafe.Pointer(ppHead))
 11964  	if p == uintptr(0) {
 11965  		p = pNew
 11966  		(*closure_avl)(unsafe.Pointer(pNew)).FpUp = uintptr(0)
 11967  	} else {
 11968  		for p != 0 {
 11969  			if (*closure_avl)(unsafe.Pointer(pNew)).Fid < (*closure_avl)(unsafe.Pointer(p)).Fid {
 11970  				if (*closure_avl)(unsafe.Pointer(p)).FpBefore != 0 {
 11971  					p = (*closure_avl)(unsafe.Pointer(p)).FpBefore
 11972  				} else {
 11973  					(*closure_avl)(unsafe.Pointer(p)).FpBefore = pNew
 11974  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 11975  					break
 11976  				}
 11977  			} else if (*closure_avl)(unsafe.Pointer(pNew)).Fid > (*closure_avl)(unsafe.Pointer(p)).Fid {
 11978  				if (*closure_avl)(unsafe.Pointer(p)).FpAfter != 0 {
 11979  					p = (*closure_avl)(unsafe.Pointer(p)).FpAfter
 11980  				} else {
 11981  					(*closure_avl)(unsafe.Pointer(p)).FpAfter = pNew
 11982  					(*closure_avl)(unsafe.Pointer(pNew)).FpUp = p
 11983  					break
 11984  				}
 11985  			} else {
 11986  				return p
 11987  			}
 11988  		}
 11989  	}
 11990  	(*closure_avl)(unsafe.Pointer(pNew)).FpBefore = uintptr(0)
 11991  	(*closure_avl)(unsafe.Pointer(pNew)).FpAfter = uintptr(0)
 11992  	(*closure_avl)(unsafe.Pointer(pNew)).Fheight = int16(1)
 11993  	(*closure_avl)(unsafe.Pointer(pNew)).Fimbalance = int16(0)
 11994  	*(*uintptr)(unsafe.Pointer(ppHead)) = closureAvlBalance(tls, p)
 11995  	return uintptr(0)
 11996  }
 11997  
 11998  func closureAvlDestroy(tls *libc.TLS, p uintptr, xDestroy uintptr) {
 11999  	if p != 0 {
 12000  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpBefore, xDestroy)
 12001  		closureAvlDestroy(tls, (*closure_avl)(unsafe.Pointer(p)).FpAfter, xDestroy)
 12002  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{xDestroy})).f(tls, p)
 12003  	}
 12004  }
 12005  
 12006  func queuePush(tls *libc.TLS, pQueue uintptr, pNode uintptr) {
 12007  	(*closure_avl)(unsafe.Pointer(pNode)).FpList = uintptr(0)
 12008  	if (*closure_queue)(unsafe.Pointer(pQueue)).FpLast != 0 {
 12009  		(*closure_avl)(unsafe.Pointer((*closure_queue)(unsafe.Pointer(pQueue)).FpLast)).FpList = pNode
 12010  	} else {
 12011  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = pNode
 12012  	}
 12013  	(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = pNode
 12014  }
 12015  
 12016  func queuePull(tls *libc.TLS, pQueue uintptr) uintptr {
 12017  	var p uintptr = (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst
 12018  	if p != 0 {
 12019  		(*closure_queue)(unsafe.Pointer(pQueue)).FpFirst = (*closure_avl)(unsafe.Pointer(p)).FpList
 12020  		if (*closure_queue)(unsafe.Pointer(pQueue)).FpFirst == uintptr(0) {
 12021  			(*closure_queue)(unsafe.Pointer(pQueue)).FpLast = uintptr(0)
 12022  		}
 12023  	}
 12024  	return p
 12025  }
 12026  
 12027  func closureDequote(tls *libc.TLS, zIn uintptr) uintptr {
 12028  	var nIn sqlite3_int64
 12029  	var zOut uintptr
 12030  
 12031  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 12032  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 12033  	if zOut != 0 {
 12034  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 12035  
 12036  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 12037  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 12038  		} else {
 12039  			var iOut int32 = 0
 12040  			var iIn int32
 12041  
 12042  			if int32(q) == '[' {
 12043  				q = int8(']')
 12044  			}
 12045  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 12046  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 12047  					iIn++
 12048  				}
 12049  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 12050  			}
 12051  		}
 12052  
 12053  	}
 12054  	return zOut
 12055  }
 12056  
 12057  func closureFree(tls *libc.TLS, p uintptr) {
 12058  	if p != 0 {
 12059  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzDb)
 12060  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzSelf)
 12061  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzTableName)
 12062  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzIdColumn)
 12063  		sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(p)).FzParentColumn)
 12064  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12065  		sqlite3.Xsqlite3_free(tls, p)
 12066  	}
 12067  }
 12068  
 12069  func closureDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12070  	var p uintptr = pVtab
 12071  
 12072  	closureFree(tls, p)
 12073  	return SQLITE_OK
 12074  }
 12075  
 12076  func closureValueOfKey(tls *libc.TLS, zKey uintptr, zStr uintptr) uintptr {
 12077  	var nKey int32 = int32(libc.Xstrlen(tls, zKey))
 12078  	var nStr int32 = int32(libc.Xstrlen(tls, zStr))
 12079  	var i int32
 12080  	if nStr < nKey+1 {
 12081  		return uintptr(0)
 12082  	}
 12083  	if libc.Xmemcmp(tls, zStr, zKey, uint64(nKey)) != 0 {
 12084  		return uintptr(0)
 12085  	}
 12086  	for i = nKey; libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0; i++ {
 12087  	}
 12088  	if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) != '=' {
 12089  		return uintptr(0)
 12090  	}
 12091  	i++
 12092  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))))) != 0 {
 12093  		i++
 12094  	}
 12095  	return zStr + uintptr(i)
 12096  }
 12097  
 12098  func closureConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12099  	bp := tls.Alloc(24)
 12100  	defer tls.Free(24)
 12101  
 12102  	var rc int32
 12103  	var pNew uintptr
 12104  	var zDb uintptr
 12105  	var zVal uintptr
 12106  	var i int32
 12107  	rc = SQLITE_OK
 12108  	pNew = uintptr(0)
 12109  	zDb = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 12110  
 12111  	_ = pAux
 12112  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12113  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_vtab{})))
 12114  	if !(pNew == uintptr(0)) {
 12115  		goto __1
 12116  	}
 12117  	return SQLITE_NOMEM
 12118  __1:
 12119  	;
 12120  	rc = SQLITE_NOMEM
 12121  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_vtab{})))
 12122  	(*closure_vtab)(unsafe.Pointer(pNew)).Fdb = db
 12123  	(*closure_vtab)(unsafe.Pointer(pNew)).FzDb = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zDb))
 12124  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzDb == uintptr(0)) {
 12125  		goto __2
 12126  	}
 12127  	goto closureConnectError
 12128  __2:
 12129  	;
 12130  	(*closure_vtab)(unsafe.Pointer(pNew)).FzSelf = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 12131  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzSelf == uintptr(0)) {
 12132  		goto __3
 12133  	}
 12134  	goto closureConnectError
 12135  __3:
 12136  	;
 12137  	i = 3
 12138  __4:
 12139  	if !(i < argc) {
 12140  		goto __6
 12141  	}
 12142  	zVal = closureValueOfKey(tls, ts+4215, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12143  	if !(zVal != 0) {
 12144  		goto __7
 12145  	}
 12146  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzTableName)
 12147  	(*closure_vtab)(unsafe.Pointer(pNew)).FzTableName = closureDequote(tls, zVal)
 12148  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0)) {
 12149  		goto __8
 12150  	}
 12151  	goto closureConnectError
 12152  __8:
 12153  	;
 12154  	goto __5
 12155  __7:
 12156  	;
 12157  	zVal = closureValueOfKey(tls, ts+4225, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12158  	if !(zVal != 0) {
 12159  		goto __9
 12160  	}
 12161  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn)
 12162  	(*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn = closureDequote(tls, zVal)
 12163  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzIdColumn == uintptr(0)) {
 12164  		goto __10
 12165  	}
 12166  	goto closureConnectError
 12167  __10:
 12168  	;
 12169  	goto __5
 12170  __9:
 12171  	;
 12172  	zVal = closureValueOfKey(tls, ts+4234, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 12173  	if !(zVal != 0) {
 12174  		goto __11
 12175  	}
 12176  	sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn)
 12177  	(*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn = closureDequote(tls, zVal)
 12178  	if !((*closure_vtab)(unsafe.Pointer(pNew)).FzParentColumn == uintptr(0)) {
 12179  		goto __12
 12180  	}
 12181  	goto closureConnectError
 12182  __12:
 12183  	;
 12184  	goto __5
 12185  __11:
 12186  	;
 12187  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3536, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 12188  	closureFree(tls, pNew)
 12189  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 12190  	return SQLITE_ERROR
 12191  	goto __5
 12192  __5:
 12193  	i++
 12194  	goto __4
 12195  	goto __6
 12196  __6:
 12197  	;
 12198  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 12199  		ts+4247)
 12200  	if !(rc != SQLITE_OK) {
 12201  		goto __13
 12202  	}
 12203  	closureFree(tls, pNew)
 12204  __13:
 12205  	;
 12206  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 12207  	return rc
 12208  
 12209  closureConnectError:
 12210  	closureFree(tls, pNew)
 12211  	return rc
 12212  }
 12213  
 12214  func closureOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 12215  	var p uintptr = pVTab
 12216  	var pCur uintptr
 12217  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_cursor{})))
 12218  	if pCur == uintptr(0) {
 12219  		return SQLITE_NOMEM
 12220  	}
 12221  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(closure_cursor{})))
 12222  	(*closure_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 12223  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 12224  	(*closure_vtab)(unsafe.Pointer(p)).FnCursor++
 12225  	return SQLITE_OK
 12226  }
 12227  
 12228  func closureClearCursor(tls *libc.TLS, pCur uintptr) {
 12229  	closureAvlDestroy(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 12230  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName)
 12231  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn)
 12232  	sqlite3.Xsqlite3_free(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn)
 12233  	(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = uintptr(0)
 12234  	(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = uintptr(0)
 12235  	(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = uintptr(0)
 12236  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = uintptr(0)
 12237  	(*closure_cursor)(unsafe.Pointer(pCur)).FpClosure = uintptr(0)
 12238  }
 12239  
 12240  func closureClose(tls *libc.TLS, cur uintptr) int32 {
 12241  	var pCur uintptr = cur
 12242  	closureClearCursor(tls, pCur)
 12243  	(*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 12244  	sqlite3.Xsqlite3_free(tls, pCur)
 12245  	return SQLITE_OK
 12246  }
 12247  
 12248  func closureNext(tls *libc.TLS, cur uintptr) int32 {
 12249  	var pCur uintptr = cur
 12250  	(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlNext(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)
 12251  	return SQLITE_OK
 12252  }
 12253  
 12254  func closureInsertNode(tls *libc.TLS, pQueue uintptr, pCur uintptr, id sqlite3_int64, iGeneration int32) int32 {
 12255  	var pNew uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(closure_avl{})))
 12256  	if pNew == uintptr(0) {
 12257  		return SQLITE_NOMEM
 12258  	}
 12259  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(closure_avl{})))
 12260  	(*closure_avl)(unsafe.Pointer(pNew)).Fid = id
 12261  	(*closure_avl)(unsafe.Pointer(pNew)).FiGeneration = iGeneration
 12262  	closureAvlInsert(tls, pCur+48, pNew)
 12263  	queuePush(tls, pQueue, pNew)
 12264  	return SQLITE_OK
 12265  }
 12266  
 12267  func closureFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 12268  	bp := tls.Alloc(96)
 12269  	defer tls.Free(96)
 12270  
 12271  	var pCur uintptr = pVtabCursor
 12272  	var pVtab uintptr = (*closure_cursor)(unsafe.Pointer(pCur)).FpVtab
 12273  	var iRoot sqlite3_int64
 12274  	var mxGen int32 = 999999999
 12275  	var zSql uintptr
 12276  
 12277  	var pAvl uintptr
 12278  	var rc int32 = SQLITE_OK
 12279  	var zTableName uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName
 12280  	var zIdColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn
 12281  	var zParentColumn uintptr = (*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn
 12282  
 12283  	_ = idxStr
 12284  	_ = argc
 12285  	closureClearCursor(tls, pCur)
 12286  	libc.Xmemset(tls, bp+72, 0, uint64(unsafe.Sizeof(closure_queue{})))
 12287  	if idxNum&1 == 0 {
 12288  		return SQLITE_OK
 12289  	}
 12290  	iRoot = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 12291  	if idxNum&0x000f0 != 0 {
 12292  		mxGen = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>4&0x0f)*8)))
 12293  		if idxNum&0x00002 != 0 {
 12294  			mxGen--
 12295  		}
 12296  	}
 12297  	if idxNum&0x00f00 != 0 {
 12298  		zTableName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>8&0x0f)*8)))
 12299  		(*closure_cursor)(unsafe.Pointer(pCur)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 12300  	}
 12301  	if idxNum&0x0f000 != 0 {
 12302  		zIdColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>12&0x0f)*8)))
 12303  		(*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zIdColumn))
 12304  	}
 12305  	if idxNum&0x0f0000 != 0 {
 12306  		zParentColumn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idxNum>>16&0x0f)*8)))
 12307  		(*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zParentColumn))
 12308  	}
 12309  
 12310  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 12311  		ts+4337,
 12312  		libc.VaList(bp+24, zTableName, zIdColumn, zTableName, zTableName, zParentColumn))
 12313  	if zSql == uintptr(0) {
 12314  		return SQLITE_NOMEM
 12315  	} else {
 12316  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, bp+88, uintptr(0))
 12317  		sqlite3.Xsqlite3_free(tls, zSql)
 12318  		if rc != 0 {
 12319  			sqlite3.Xsqlite3_free(tls, (*closure_vtab)(unsafe.Pointer(pVtab)).Fbase.FzErrMsg)
 12320  			(*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)))
 12321  			return rc
 12322  		}
 12323  	}
 12324  	if rc == SQLITE_OK {
 12325  		rc = closureInsertNode(tls, bp+72, pCur, iRoot, 0)
 12326  	}
 12327  	for libc.AssignUintptr(&pAvl, queuePull(tls, bp+72)) != uintptr(0) {
 12328  		if (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration >= mxGen {
 12329  			continue
 12330  		}
 12331  		sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 1, (*closure_avl)(unsafe.Pointer(pAvl)).Fid)
 12332  		for rc == SQLITE_OK && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 88))) == SQLITE_ROW {
 12333  			if sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0) == SQLITE_INTEGER {
 12334  				var iNew sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), 0)
 12335  				if closureAvlSearch(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure, iNew) == uintptr(0) {
 12336  					rc = closureInsertNode(tls, bp+72, pCur, iNew, (*closure_avl)(unsafe.Pointer(pAvl)).FiGeneration+1)
 12337  				}
 12338  			}
 12339  		}
 12340  		sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12341  	}
 12342  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 12343  	if rc == SQLITE_OK {
 12344  		(*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent = closureAvlFirst(tls, (*closure_cursor)(unsafe.Pointer(pCur)).FpClosure)
 12345  	}
 12346  
 12347  	return rc
 12348  }
 12349  
 12350  func closureColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 12351  	var pCur uintptr = cur
 12352  	switch i {
 12353  	case CLOSURE_COL_ID:
 12354  		{
 12355  			sqlite3.Xsqlite3_result_int64(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid)
 12356  			break
 12357  
 12358  		}
 12359  	case CLOSURE_COL_DEPTH:
 12360  		{
 12361  			sqlite3.Xsqlite3_result_int(tls, ctx, (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).FiGeneration)
 12362  			break
 12363  
 12364  		}
 12365  	case CLOSURE_COL_ROOT:
 12366  		{
 12367  			sqlite3.Xsqlite3_result_null(tls, ctx)
 12368  			break
 12369  
 12370  		}
 12371  	case CLOSURE_COL_TABLENAME:
 12372  		{
 12373  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12374  				func() uintptr {
 12375  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName != 0 {
 12376  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzTableName
 12377  					}
 12378  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzTableName
 12379  				}(),
 12380  				-1, libc.UintptrFromInt32(-1))
 12381  			break
 12382  
 12383  		}
 12384  	case CLOSURE_COL_IDCOLUMN:
 12385  		{
 12386  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12387  				func() uintptr {
 12388  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn != 0 {
 12389  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzIdColumn
 12390  					}
 12391  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzIdColumn
 12392  				}(),
 12393  				-1, libc.UintptrFromInt32(-1))
 12394  			break
 12395  
 12396  		}
 12397  	case CLOSURE_COL_PARENTCOLUMN:
 12398  		{
 12399  			sqlite3.Xsqlite3_result_text(tls, ctx,
 12400  				func() uintptr {
 12401  					if (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn != 0 {
 12402  						return (*closure_cursor)(unsafe.Pointer(pCur)).FzParentColumn
 12403  					}
 12404  					return (*closure_vtab)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpVtab)).FzParentColumn
 12405  				}(),
 12406  				-1, libc.UintptrFromInt32(-1))
 12407  			break
 12408  
 12409  		}
 12410  	}
 12411  	return SQLITE_OK
 12412  }
 12413  
 12414  func closureRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 12415  	var pCur uintptr = cur
 12416  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*closure_avl)(unsafe.Pointer((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent)).Fid
 12417  	return SQLITE_OK
 12418  }
 12419  
 12420  func closureEof(tls *libc.TLS, cur uintptr) int32 {
 12421  	var pCur uintptr = cur
 12422  	return libc.Bool32((*closure_cursor)(unsafe.Pointer(pCur)).FpCurrent == uintptr(0))
 12423  }
 12424  
 12425  func closureBestIndex(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) int32 {
 12426  	var iPlan int32 = 0
 12427  	var i int32
 12428  	var idx int32 = 1
 12429  	var pConstraint uintptr
 12430  	var pVtab uintptr = pTab
 12431  	var rCost float64 = 10000000.0
 12432  
 12433  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 12434  	i = 0
 12435  __1:
 12436  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12437  		goto __3
 12438  	}
 12439  	{
 12440  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 12441  			goto __2
 12442  		}
 12443  		if iPlan&1 == 0 &&
 12444  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_ROOT &&
 12445  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12446  			iPlan = iPlan | 1
 12447  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 12448  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12449  			rCost = rCost / 100.0
 12450  		}
 12451  		if iPlan&0x0000f0 == 0 &&
 12452  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_DEPTH &&
 12453  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 12454  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE ||
 12455  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 12456  			iPlan = iPlan | idx<<4
 12457  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12458  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 12459  				iPlan = iPlan | 0x000002
 12460  			}
 12461  			rCost = rCost / 5.0
 12462  		}
 12463  		if iPlan&0x000f00 == 0 &&
 12464  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_TABLENAME &&
 12465  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12466  			iPlan = iPlan | idx<<8
 12467  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12468  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12469  			rCost = rCost / 5.0
 12470  		}
 12471  		if iPlan&0x00f000 == 0 &&
 12472  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_IDCOLUMN &&
 12473  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12474  			iPlan = iPlan | idx<<12
 12475  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12476  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12477  		}
 12478  		if iPlan&0x0f0000 == 0 &&
 12479  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == CLOSURE_COL_PARENTCOLUMN &&
 12480  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 12481  			iPlan = iPlan | idx<<16
 12482  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&idx, 1)
 12483  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 12484  		}
 12485  
 12486  	}
 12487  	goto __2
 12488  __2:
 12489  	i++
 12490  	pConstraint += 12
 12491  	goto __1
 12492  	goto __3
 12493  __3:
 12494  	;
 12495  	if (*closure_vtab)(unsafe.Pointer(pVtab)).FzTableName == uintptr(0) && iPlan&0x000f00 == 0 ||
 12496  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzIdColumn == uintptr(0) && iPlan&0x00f000 == 0 ||
 12497  		(*closure_vtab)(unsafe.Pointer(pVtab)).FzParentColumn == uintptr(0) && iPlan&0x0f0000 == 0 {
 12498  		iPlan = 0
 12499  	}
 12500  	if iPlan&1 == 0 {
 12501  		rCost = rCost * 1e30
 12502  		i = 0
 12503  	__4:
 12504  		if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 12505  			goto __6
 12506  		}
 12507  		{
 12508  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 0
 12509  
 12510  		}
 12511  		goto __5
 12512  	__5:
 12513  		i++
 12514  		pConstraint += 12
 12515  		goto __4
 12516  		goto __6
 12517  	__6:
 12518  		;
 12519  		iPlan = 0
 12520  	}
 12521  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 12522  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 12523  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == CLOSURE_COL_ID &&
 12524  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 12525  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 12526  	}
 12527  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 12528  
 12529  	return SQLITE_OK
 12530  }
 12531  
 12532  var closureModule = sqlite3_module{
 12533  	FxCreate:     0,
 12534  	FxConnect:    0,
 12535  	FxBestIndex:  0,
 12536  	FxDisconnect: 0,
 12537  	FxDestroy:    0,
 12538  	FxOpen:       0,
 12539  	FxClose:      0,
 12540  	FxFilter:     0,
 12541  	FxNext:       0,
 12542  	FxEof:        0,
 12543  	FxColumn:     0,
 12544  	FxRowid:      0,
 12545  }
 12546  
 12547  func sqlite3_closure_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 12548  	var rc int32 = SQLITE_OK
 12549  	_ = pApi
 12550  
 12551  	_ = pzErrMsg
 12552  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4383, uintptr(unsafe.Pointer(&closureModule)), uintptr(0))
 12553  	return rc
 12554  }
 12555  
 12556  type CsvReader1 = struct {
 12557  	Fin          uintptr
 12558  	Fz           uintptr
 12559  	Fn           int32
 12560  	FnAlloc      int32
 12561  	FnLine       int32
 12562  	FbNotFirst   int32
 12563  	FcTerm       int32
 12564  	F__ccgo_pad1 [4]byte
 12565  	FiIn         size_t
 12566  	FnIn         size_t
 12567  	FzIn         uintptr
 12568  	FzErr        [200]int8
 12569  }
 12570  
 12571  type CsvReader = CsvReader1
 12572  
 12573  func csv_reader_init(tls *libc.TLS, p uintptr) {
 12574  	(*CsvReader)(unsafe.Pointer(p)).Fin = uintptr(0)
 12575  	(*CsvReader)(unsafe.Pointer(p)).Fz = uintptr(0)
 12576  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12577  	(*CsvReader)(unsafe.Pointer(p)).FnAlloc = 0
 12578  	(*CsvReader)(unsafe.Pointer(p)).FnLine = 0
 12579  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 0
 12580  	(*CsvReader)(unsafe.Pointer(p)).FnIn = uint64(0)
 12581  	(*CsvReader)(unsafe.Pointer(p)).FzIn = uintptr(0)
 12582  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 12583  }
 12584  
 12585  func csv_reader_reset(tls *libc.TLS, p uintptr) {
 12586  	if (*CsvReader)(unsafe.Pointer(p)).Fin != 0 {
 12587  		libc.Xfclose(tls, (*CsvReader)(unsafe.Pointer(p)).Fin)
 12588  		sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12589  	}
 12590  	sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).Fz)
 12591  	csv_reader_init(tls, p)
 12592  }
 12593  
 12594  func csv_errmsg(tls *libc.TLS, p uintptr, zFormat uintptr, va uintptr) {
 12595  	var ap va_list
 12596  	_ = ap
 12597  	ap = va
 12598  	sqlite3.Xsqlite3_vsnprintf(tls, CSV_MXERR, p+64, zFormat, ap)
 12599  	_ = ap
 12600  }
 12601  
 12602  func csv_reader_open(tls *libc.TLS, p uintptr, zFilename uintptr, zData uintptr) int32 {
 12603  	bp := tls.Alloc(8)
 12604  	defer tls.Free(8)
 12605  
 12606  	if zFilename != 0 {
 12607  		(*CsvReader)(unsafe.Pointer(p)).FzIn = sqlite3.Xsqlite3_malloc(tls, CSV_INBUFSZ)
 12608  		if (*CsvReader)(unsafe.Pointer(p)).FzIn == uintptr(0) {
 12609  			csv_errmsg(tls, p, ts+2069, 0)
 12610  			return 1
 12611  		}
 12612  		(*CsvReader)(unsafe.Pointer(p)).Fin = libc.Xfopen(tls, zFilename, ts+4402)
 12613  		if (*CsvReader)(unsafe.Pointer(p)).Fin == uintptr(0) {
 12614  			sqlite3.Xsqlite3_free(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn)
 12615  			csv_reader_reset(tls, p)
 12616  			csv_errmsg(tls, p, ts+4405, libc.VaList(bp, zFilename))
 12617  			return 1
 12618  		}
 12619  	} else {
 12620  		(*CsvReader)(unsafe.Pointer(p)).FzIn = zData
 12621  		(*CsvReader)(unsafe.Pointer(p)).FnIn = libc.Xstrlen(tls, zData)
 12622  	}
 12623  	return 0
 12624  }
 12625  
 12626  func csv_getc_refill(tls *libc.TLS, p uintptr) int32 {
 12627  	var got size_t
 12628  
 12629  	got = libc.Xfread(tls, (*CsvReader)(unsafe.Pointer(p)).FzIn, uint64(1), uint64(CSV_INBUFSZ), (*CsvReader)(unsafe.Pointer(p)).Fin)
 12630  	if got == uint64(0) {
 12631  		return -1
 12632  	}
 12633  	(*CsvReader)(unsafe.Pointer(p)).FnIn = got
 12634  	(*CsvReader)(unsafe.Pointer(p)).FiIn = uint64(1)
 12635  	return int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn)))
 12636  }
 12637  
 12638  func csv_getc(tls *libc.TLS, p uintptr) int32 {
 12639  	if (*CsvReader)(unsafe.Pointer(p)).FiIn >= (*CsvReader)(unsafe.Pointer(p)).FnIn {
 12640  		if (*CsvReader)(unsafe.Pointer(p)).Fin != uintptr(0) {
 12641  			return csv_getc_refill(tls, p)
 12642  		}
 12643  		return -1
 12644  	}
 12645  	return int32(*(*uint8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).FzIn + uintptr(libc.PostIncUint64(&(*CsvReader)(unsafe.Pointer(p)).FiIn, 1)))))
 12646  }
 12647  
 12648  func csv_resize_and_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12649  	var zNew uintptr
 12650  	var nNew int32 = (*CsvReader)(unsafe.Pointer(p)).FnAlloc*2 + 100
 12651  	zNew = sqlite3.Xsqlite3_realloc64(tls, (*CsvReader)(unsafe.Pointer(p)).Fz, uint64(nNew))
 12652  	if zNew != 0 {
 12653  		(*CsvReader)(unsafe.Pointer(p)).Fz = zNew
 12654  		(*CsvReader)(unsafe.Pointer(p)).FnAlloc = nNew
 12655  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12656  		return 0
 12657  	} else {
 12658  		csv_errmsg(tls, p, ts+2069, 0)
 12659  		return 1
 12660  	}
 12661  	return int32(0)
 12662  }
 12663  
 12664  func csv_append(tls *libc.TLS, p uintptr, c int8) int32 {
 12665  	if (*CsvReader)(unsafe.Pointer(p)).Fn >= (*CsvReader)(unsafe.Pointer(p)).FnAlloc-1 {
 12666  		return csv_resize_and_append(tls, p, c)
 12667  	}
 12668  	*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*CsvReader)(unsafe.Pointer(p)).Fn, 1)))) = c
 12669  	return 0
 12670  }
 12671  
 12672  func csv_read_one_field(tls *libc.TLS, p uintptr) uintptr {
 12673  	bp := tls.Alloc(32)
 12674  	defer tls.Free(32)
 12675  
 12676  	var c int32
 12677  	(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12678  	c = csv_getc(tls, p)
 12679  	if c == -1 {
 12680  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = -1
 12681  		return uintptr(0)
 12682  	}
 12683  	if c == '"' {
 12684  		var pc int32
 12685  		var ppc int32
 12686  		var startLine int32 = (*CsvReader)(unsafe.Pointer(p)).FnLine
 12687  		pc = libc.AssignInt32(&ppc, 0)
 12688  		for 1 != 0 {
 12689  			c = csv_getc(tls, p)
 12690  			if c <= '"' || pc == '"' {
 12691  				if c == '\n' {
 12692  					(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12693  				}
 12694  				if c == '"' {
 12695  					if pc == '"' {
 12696  						pc = 0
 12697  						continue
 12698  					}
 12699  				}
 12700  				if c == ',' && pc == '"' ||
 12701  					c == '\n' && pc == '"' ||
 12702  					c == '\n' && pc == '\r' && ppc == '"' ||
 12703  					c == -1 && pc == '"' {
 12704  					for __ccgo := true; __ccgo; __ccgo = int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn)))) != '"' {
 12705  						(*CsvReader)(unsafe.Pointer(p)).Fn--
 12706  					}
 12707  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12708  					break
 12709  				}
 12710  				if pc == '"' && c != '\r' {
 12711  					csv_errmsg(tls, p, ts+4434, libc.VaList(bp, (*CsvReader)(unsafe.Pointer(p)).FnLine, '"'))
 12712  					break
 12713  				}
 12714  				if c == -1 {
 12715  					csv_errmsg(tls, p, ts+4466,
 12716  						libc.VaList(bp+16, startLine, '"'))
 12717  					(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12718  					break
 12719  				}
 12720  			}
 12721  			if csv_append(tls, p, int8(c)) != 0 {
 12722  				return uintptr(0)
 12723  			}
 12724  			ppc = pc
 12725  			pc = c
 12726  		}
 12727  	} else {
 12728  		if c&0xff == 0xef && (*CsvReader)(unsafe.Pointer(p)).FbNotFirst == 0 {
 12729  			csv_append(tls, p, int8(c))
 12730  			c = csv_getc(tls, p)
 12731  			if c&0xff == 0xbb {
 12732  				csv_append(tls, p, int8(c))
 12733  				c = csv_getc(tls, p)
 12734  				if c&0xff == 0xbf {
 12735  					(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12736  					(*CsvReader)(unsafe.Pointer(p)).Fn = 0
 12737  					return csv_read_one_field(tls, p)
 12738  				}
 12739  			}
 12740  		}
 12741  		for c > ',' || c != -1 && c != ',' && c != '\n' {
 12742  			if csv_append(tls, p, int8(c)) != 0 {
 12743  				return uintptr(0)
 12744  			}
 12745  			c = csv_getc(tls, p)
 12746  		}
 12747  		if c == '\n' {
 12748  			(*CsvReader)(unsafe.Pointer(p)).FnLine++
 12749  			if (*CsvReader)(unsafe.Pointer(p)).Fn > 0 && int32(*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn-1)))) == '\r' {
 12750  				(*CsvReader)(unsafe.Pointer(p)).Fn--
 12751  			}
 12752  		}
 12753  		(*CsvReader)(unsafe.Pointer(p)).FcTerm = int32(int8(c))
 12754  	}
 12755  	if (*CsvReader)(unsafe.Pointer(p)).Fz != 0 {
 12756  		*(*int8)(unsafe.Pointer((*CsvReader)(unsafe.Pointer(p)).Fz + uintptr((*CsvReader)(unsafe.Pointer(p)).Fn))) = int8(0)
 12757  	}
 12758  	(*CsvReader)(unsafe.Pointer(p)).FbNotFirst = 1
 12759  	return (*CsvReader)(unsafe.Pointer(p)).Fz
 12760  }
 12761  
 12762  type CsvTable1 = struct {
 12763  	Fbase      sqlite3_vtab
 12764  	FzFilename uintptr
 12765  	FzData     uintptr
 12766  	FiStart    int64
 12767  	FnCol      int32
 12768  	FtstFlags  uint32
 12769  }
 12770  
 12771  type CsvTable = CsvTable1
 12772  
 12773  type CsvCursor1 = struct {
 12774  	Fbase   sqlite3_vtab_cursor
 12775  	Frdr    CsvReader
 12776  	FazVal  uintptr
 12777  	FaLen   uintptr
 12778  	FiRowid sqlite3_int64
 12779  }
 12780  
 12781  type CsvCursor = CsvCursor1
 12782  
 12783  func csv_xfer_error(tls *libc.TLS, pTab uintptr, pRdr uintptr) {
 12784  	bp := tls.Alloc(8)
 12785  	defer tls.Free(8)
 12786  
 12787  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg)
 12788  	(*CsvTable)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, pRdr+64))
 12789  }
 12790  
 12791  func csvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 12792  	var p uintptr = pVtab
 12793  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzFilename)
 12794  	sqlite3.Xsqlite3_free(tls, (*CsvTable)(unsafe.Pointer(p)).FzData)
 12795  	sqlite3.Xsqlite3_free(tls, p)
 12796  	return SQLITE_OK
 12797  }
 12798  
 12799  func csv_skip_whitespace(tls *libc.TLS, z uintptr) uintptr {
 12800  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z))))) != 0 {
 12801  		z++
 12802  	}
 12803  	return z
 12804  }
 12805  
 12806  func csv_trim_whitespace(tls *libc.TLS, z uintptr) {
 12807  	var n size_t = libc.Xstrlen(tls, z)
 12808  	for n > uint64(0) && libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(z + uintptr(n)))))) != 0 {
 12809  		n--
 12810  	}
 12811  	*(*int8)(unsafe.Pointer(z + uintptr(n))) = int8(0)
 12812  }
 12813  
 12814  func csv_dequote(tls *libc.TLS, z uintptr) {
 12815  	var j int32
 12816  	var cQuote int8 = *(*int8)(unsafe.Pointer(z))
 12817  	var i size_t
 12818  	var n size_t
 12819  
 12820  	if int32(cQuote) != '\'' && int32(cQuote) != '"' {
 12821  		return
 12822  	}
 12823  	n = libc.Xstrlen(tls, z)
 12824  	if n < uint64(2) || int32(*(*int8)(unsafe.Pointer(z + uintptr(n-uint64(1))))) != int32(*(*int8)(unsafe.Pointer(z))) {
 12825  		return
 12826  	}
 12827  	i = uint64(1)
 12828  	j = 0
 12829  	for ; i < n-uint64(1); i++ {
 12830  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == int32(cQuote) && int32(*(*int8)(unsafe.Pointer(z + uintptr(i+uint64(1))))) == int32(cQuote) {
 12831  			i++
 12832  		}
 12833  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 12834  	}
 12835  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 12836  }
 12837  
 12838  func csv_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr) uintptr {
 12839  	z = csv_skip_whitespace(tls, z)
 12840  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 12841  		return uintptr(0)
 12842  	}
 12843  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 12844  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 12845  		return uintptr(0)
 12846  	}
 12847  	return csv_skip_whitespace(tls, z+uintptr(1))
 12848  }
 12849  
 12850  func csv_string_parameter(tls *libc.TLS, p uintptr, zParam uintptr, zArg uintptr, pzVal uintptr) int32 {
 12851  	bp := tls.Alloc(16)
 12852  	defer tls.Free(16)
 12853  
 12854  	var zValue uintptr
 12855  	zValue = csv_parameter(tls, zParam, int32(libc.Xstrlen(tls, zParam)), zArg)
 12856  	if zValue == uintptr(0) {
 12857  		return 0
 12858  	}
 12859  	*(*int8)(unsafe.Pointer(p + 64)) = int8(0)
 12860  	if *(*uintptr)(unsafe.Pointer(pzVal)) != 0 {
 12861  		csv_errmsg(tls, p, ts+4505, libc.VaList(bp, zParam))
 12862  		return 1
 12863  	}
 12864  	*(*uintptr)(unsafe.Pointer(pzVal)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zValue))
 12865  	if *(*uintptr)(unsafe.Pointer(pzVal)) == uintptr(0) {
 12866  		csv_errmsg(tls, p, ts+2069, 0)
 12867  		return 1
 12868  	}
 12869  	csv_trim_whitespace(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 12870  	csv_dequote(tls, *(*uintptr)(unsafe.Pointer(pzVal)))
 12871  	return 1
 12872  }
 12873  
 12874  func csv_boolean(tls *libc.TLS, z uintptr) int32 {
 12875  	if sqlite3.Xsqlite3_stricmp(tls, ts+4174, z) == 0 ||
 12876  		sqlite3.Xsqlite3_stricmp(tls, ts+4178, z) == 0 ||
 12877  		sqlite3.Xsqlite3_stricmp(tls, ts+4534, z) == 0 ||
 12878  		int32(*(*int8)(unsafe.Pointer(z))) == '1' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 12879  		return 1
 12880  	}
 12881  	if sqlite3.Xsqlite3_stricmp(tls, ts+4539, z) == 0 ||
 12882  		sqlite3.Xsqlite3_stricmp(tls, ts+4542, z) == 0 ||
 12883  		sqlite3.Xsqlite3_stricmp(tls, ts+4546, z) == 0 ||
 12884  		int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 0 {
 12885  		return 0
 12886  	}
 12887  	return -1
 12888  }
 12889  
 12890  func csv_boolean_parameter(tls *libc.TLS, zTag uintptr, nTag int32, z uintptr, pValue uintptr) int32 {
 12891  	var b int32
 12892  	z = csv_skip_whitespace(tls, z)
 12893  	if libc.Xstrncmp(tls, zTag, z, uint64(nTag)) != 0 {
 12894  		return 0
 12895  	}
 12896  	z = csv_skip_whitespace(tls, z+uintptr(nTag))
 12897  	if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 12898  		*(*int32)(unsafe.Pointer(pValue)) = 1
 12899  		return 1
 12900  	}
 12901  	if int32(*(*int8)(unsafe.Pointer(z))) != '=' {
 12902  		return 0
 12903  	}
 12904  	z = csv_skip_whitespace(tls, z+uintptr(1))
 12905  	b = csv_boolean(tls, z)
 12906  	if b >= 0 {
 12907  		*(*int32)(unsafe.Pointer(pValue)) = b
 12908  		return 1
 12909  	}
 12910  	return 0
 12911  }
 12912  
 12913  func csvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 12914  	bp := tls.Alloc(372)
 12915  	defer tls.Free(372)
 12916  
 12917  	var pNew uintptr
 12918  	var bHeader int32
 12919  	var rc int32
 12920  	var i int32
 12921  	var j int32
 12922  	var tstFlags int32
 12923  
 12924  	var nCol int32
 12925  
 12926  	var z uintptr
 12927  	var zValue uintptr
 12928  	var z1 uintptr
 12929  	var pStr uintptr
 12930  	var zSep uintptr
 12931  	var iCol int32
 12932  	pNew = uintptr(0)
 12933  	bHeader = -1
 12934  	rc = SQLITE_OK
 12935  	tstFlags = 0
 12936  	nCol = -99
 12937  
 12938  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(CsvReader{})))
 12939  	libc.Xmemset(tls, bp+344, 0, uint64(unsafe.Sizeof([3]uintptr{})))
 12940  	i = 3
 12941  __1:
 12942  	if !(i < argc) {
 12943  		goto __3
 12944  	}
 12945  	z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 12946  	j = 0
 12947  __4:
 12948  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 12949  		goto __6
 12950  	}
 12951  	if !(csv_string_parameter(tls, bp+80, azParam[j], z, bp+344+uintptr(j)*8) != 0) {
 12952  		goto __7
 12953  	}
 12954  	goto __6
 12955  __7:
 12956  	;
 12957  	goto __5
 12958  __5:
 12959  	j++
 12960  	goto __4
 12961  	goto __6
 12962  __6:
 12963  	;
 12964  	if !(uint64(j) < uint64(unsafe.Sizeof(azParam))/uint64(unsafe.Sizeof(uintptr(0)))) {
 12965  		goto __8
 12966  	}
 12967  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 12968  		goto __10
 12969  	}
 12970  	goto csvtab_connect_error
 12971  __10:
 12972  	;
 12973  	goto __9
 12974  __8:
 12975  	if !(csv_boolean_parameter(tls, ts+4552, 6, z, bp+368) != 0) {
 12976  		goto __11
 12977  	}
 12978  	if !(bHeader >= 0) {
 12979  		goto __13
 12980  	}
 12981  	csv_errmsg(tls, bp+80, ts+4559, 0)
 12982  	goto csvtab_connect_error
 12983  __13:
 12984  	;
 12985  	bHeader = *(*int32)(unsafe.Pointer(bp + 368))
 12986  	goto __12
 12987  __11:
 12988  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4592, 9, z)) != uintptr(0)) {
 12989  		goto __14
 12990  	}
 12991  	tstFlags = int32(uint32(libc.Xatoi(tls, zValue)))
 12992  	goto __15
 12993  __14:
 12994  	if !(libc.AssignUintptr(&zValue, csv_parameter(tls, ts+4602, 7, z)) != uintptr(0)) {
 12995  		goto __16
 12996  	}
 12997  	if !(nCol > 0) {
 12998  		goto __18
 12999  	}
 13000  	csv_errmsg(tls, bp+80, ts+4610, 0)
 13001  	goto csvtab_connect_error
 13002  __18:
 13003  	;
 13004  	nCol = libc.Xatoi(tls, zValue)
 13005  	if !(nCol <= 0) {
 13006  		goto __19
 13007  	}
 13008  	csv_errmsg(tls, bp+80, ts+4644, 0)
 13009  	goto csvtab_connect_error
 13010  __19:
 13011  	;
 13012  	goto __17
 13013  __16:
 13014  	csv_errmsg(tls, bp+80, ts+4675, libc.VaList(bp, z))
 13015  	goto csvtab_connect_error
 13016  __17:
 13017  	;
 13018  __15:
 13019  	;
 13020  __12:
 13021  	;
 13022  __9:
 13023  	;
 13024  	goto __2
 13025  __2:
 13026  	i++
 13027  	goto __1
 13028  	goto __3
 13029  __3:
 13030  	;
 13031  	if !(libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344)) == uintptr(0)) == libc.Bool32(*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) == uintptr(0))) {
 13032  		goto __20
 13033  	}
 13034  	csv_errmsg(tls, bp+80, ts+4695, 0)
 13035  	goto csvtab_connect_error
 13036  __20:
 13037  	;
 13038  	if !((nCol <= 0 || bHeader == 1) &&
 13039  		csv_reader_open(tls, bp+80, *(*uintptr)(unsafe.Pointer(bp + 344)), *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))) != 0) {
 13040  		goto __21
 13041  	}
 13042  	goto csvtab_connect_error
 13043  __21:
 13044  	;
 13045  	pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CsvTable{})))
 13046  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 13047  	if !(pNew == uintptr(0)) {
 13048  		goto __22
 13049  	}
 13050  	goto csvtab_connect_oom
 13051  __22:
 13052  	;
 13053  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(CsvTable{})))
 13054  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13055  		goto __23
 13056  	}
 13057  	pStr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 13058  	zSep = ts + 584
 13059  	iCol = 0
 13060  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+979, 0)
 13061  	if !(nCol < 0 && bHeader < 1) {
 13062  		goto __25
 13063  	}
 13064  	nCol = 0
 13065  __26:
 13066  	csv_read_one_field(tls, bp+80)
 13067  	nCol++
 13068  	goto __27
 13069  __27:
 13070  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13071  		goto __26
 13072  	}
 13073  	goto __28
 13074  __28:
 13075  	;
 13076  __25:
 13077  	;
 13078  	if !(nCol > 0 && bHeader < 1) {
 13079  		goto __29
 13080  	}
 13081  	iCol = 0
 13082  __31:
 13083  	if !(iCol < nCol) {
 13084  		goto __33
 13085  	}
 13086  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+8, zSep, iCol))
 13087  	zSep = ts + 4758
 13088  	goto __32
 13089  __32:
 13090  	iCol++
 13091  	goto __31
 13092  	goto __33
 13093  __33:
 13094  	;
 13095  	goto __30
 13096  __29:
 13097  __34:
 13098  	z1 = csv_read_one_field(tls, bp+80)
 13099  	if !(nCol > 0 && iCol < nCol || nCol < 0 && bHeader != 0) {
 13100  		goto __37
 13101  	}
 13102  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4760, libc.VaList(bp+24, zSep, z1))
 13103  	zSep = ts + 4758
 13104  	iCol++
 13105  __37:
 13106  	;
 13107  	goto __35
 13108  __35:
 13109  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13110  		goto __34
 13111  	}
 13112  	goto __36
 13113  __36:
 13114  	;
 13115  	if !(nCol < 0) {
 13116  		goto __38
 13117  	}
 13118  	nCol = iCol
 13119  	goto __39
 13120  __38:
 13121  __40:
 13122  	if !(iCol < nCol) {
 13123  		goto __41
 13124  	}
 13125  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+4747, libc.VaList(bp+40, zSep, libc.PreIncInt32(&iCol, 1)))
 13126  	zSep = ts + 4758
 13127  	goto __40
 13128  __41:
 13129  	;
 13130  __39:
 13131  	;
 13132  __30:
 13133  	;
 13134  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13135  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+585, 0)
 13136  	*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) = sqlite3.Xsqlite3_str_finish(tls, pStr)
 13137  	if !(*(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)) == uintptr(0)) {
 13138  		goto __42
 13139  	}
 13140  	goto csvtab_connect_oom
 13141  __42:
 13142  	;
 13143  	goto __24
 13144  __23:
 13145  	if !(nCol < 0) {
 13146  		goto __43
 13147  	}
 13148  __45:
 13149  	csv_read_one_field(tls, bp+80)
 13150  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol++
 13151  	goto __46
 13152  __46:
 13153  	if (*CsvReader)(unsafe.Pointer(bp+80)).FcTerm == ',' {
 13154  		goto __45
 13155  	}
 13156  	goto __47
 13157  __47:
 13158  	;
 13159  	goto __44
 13160  __43:
 13161  	(*CsvTable)(unsafe.Pointer(pNew)).FnCol = nCol
 13162  __44:
 13163  	;
 13164  __24:
 13165  	;
 13166  	(*CsvTable)(unsafe.Pointer(pNew)).FzFilename = *(*uintptr)(unsafe.Pointer(bp + 344))
 13167  	*(*uintptr)(unsafe.Pointer(bp + 344)) = uintptr(0)
 13168  	(*CsvTable)(unsafe.Pointer(pNew)).FzData = *(*uintptr)(unsafe.Pointer(bp + 344 + 1*8))
 13169  	*(*uintptr)(unsafe.Pointer(bp + 344 + 1*8)) = uintptr(0)
 13170  	(*CsvTable)(unsafe.Pointer(pNew)).FtstFlags = uint32(tstFlags)
 13171  	if !(bHeader != 1) {
 13172  		goto __48
 13173  	}
 13174  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(0)
 13175  	goto __49
 13176  __48:
 13177  	if !((*CsvTable)(unsafe.Pointer(pNew)).FzData != 0) {
 13178  		goto __50
 13179  	}
 13180  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32((*CsvReader)(unsafe.Pointer(bp + 80)).FiIn))
 13181  	goto __51
 13182  __50:
 13183  	(*CsvTable)(unsafe.Pointer(pNew)).FiStart = int64(int32(size_t(libc.Xftell(tls, (*CsvReader)(unsafe.Pointer(bp+80)).Fin)) - (*CsvReader)(unsafe.Pointer(bp+80)).FnIn + (*CsvReader)(unsafe.Pointer(bp+80)).FiIn))
 13184  __51:
 13185  	;
 13186  __49:
 13187  	;
 13188  	csv_reader_reset(tls, bp+80)
 13189  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)))
 13190  	if !(rc != 0) {
 13191  		goto __52
 13192  	}
 13193  	csv_errmsg(tls, bp+80, ts+4772, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(bp + 344 + 2*8)), sqlite3.Xsqlite3_errmsg(tls, db)))
 13194  	goto csvtab_connect_error
 13195  __52:
 13196  	;
 13197  	i = 0
 13198  __53:
 13199  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13200  		goto __55
 13201  	}
 13202  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13203  	goto __54
 13204  __54:
 13205  	i++
 13206  	goto __53
 13207  	goto __55
 13208  __55:
 13209  	;
 13210  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 13211  	return SQLITE_OK
 13212  
 13213  csvtab_connect_oom:
 13214  	rc = SQLITE_NOMEM
 13215  	csv_errmsg(tls, bp+80, ts+2069, 0)
 13216  
 13217  csvtab_connect_error:
 13218  	if !(pNew != 0) {
 13219  		goto __56
 13220  	}
 13221  	csvtabDisconnect(tls, pNew)
 13222  __56:
 13223  	;
 13224  	i = 0
 13225  __57:
 13226  	if !(uint64(i) < uint64(unsafe.Sizeof([3]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))) {
 13227  		goto __59
 13228  	}
 13229  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 344 + uintptr(i)*8)))
 13230  	goto __58
 13231  __58:
 13232  	i++
 13233  	goto __57
 13234  	goto __59
 13235  __59:
 13236  	;
 13237  	if !(*(*int8)(unsafe.Pointer(bp + 80 + 64)) != 0) {
 13238  		goto __60
 13239  	}
 13240  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(pzErr)))
 13241  	*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, bp+80+64))
 13242  __60:
 13243  	;
 13244  	csv_reader_reset(tls, bp+80)
 13245  	if !(rc == SQLITE_OK) {
 13246  		goto __61
 13247  	}
 13248  	rc = SQLITE_ERROR
 13249  __61:
 13250  	;
 13251  	return rc
 13252  }
 13253  
 13254  var azParam = [3]uintptr{
 13255  	ts + 4794, ts + 4803, ts + 4808,
 13256  }
 13257  
 13258  func csvtabCursorRowReset(tls *libc.TLS, pCur uintptr) {
 13259  	var pTab uintptr = (*CsvCursor)(unsafe.Pointer(pCur)).Fbase.FpVtab
 13260  	var i int32
 13261  	for i = 0; i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol; i++ {
 13262  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13263  		*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13264  		*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13265  	}
 13266  }
 13267  
 13268  func csvtabCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 13269  	return csvtabConnect(tls, db, pAux, argc, argv, ppVtab, pzErr)
 13270  }
 13271  
 13272  func csvtabClose(tls *libc.TLS, cur uintptr) int32 {
 13273  	var pCur uintptr = cur
 13274  	csvtabCursorRowReset(tls, pCur)
 13275  	csv_reader_reset(tls, pCur+8)
 13276  	sqlite3.Xsqlite3_free(tls, cur)
 13277  	return SQLITE_OK
 13278  }
 13279  
 13280  func csvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 13281  	var pTab uintptr = p
 13282  	var pCur uintptr
 13283  	var nByte size_t
 13284  	nByte = uint64(unsafe.Sizeof(CsvCursor{})) + (uint64(unsafe.Sizeof(uintptr(0)))+uint64(unsafe.Sizeof(int32(0))))*uint64((*CsvTable)(unsafe.Pointer(pTab)).FnCol)
 13285  	pCur = sqlite3.Xsqlite3_malloc64(tls, nByte)
 13286  	if pCur == uintptr(0) {
 13287  		return SQLITE_NOMEM
 13288  	}
 13289  	libc.Xmemset(tls, pCur, 0, nByte)
 13290  	(*CsvCursor)(unsafe.Pointer(pCur)).FazVal = pCur + 1*296
 13291  	(*CsvCursor)(unsafe.Pointer(pCur)).FaLen = (*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr((*CsvTable)(unsafe.Pointer(pTab)).FnCol)*8
 13292  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 13293  	if csv_reader_open(tls, pCur+8, (*CsvTable)(unsafe.Pointer(pTab)).FzFilename, (*CsvTable)(unsafe.Pointer(pTab)).FzData) != 0 {
 13294  		csv_xfer_error(tls, pTab, pCur+8)
 13295  		return SQLITE_ERROR
 13296  	}
 13297  	return SQLITE_OK
 13298  }
 13299  
 13300  func csvtabNext(tls *libc.TLS, cur uintptr) int32 {
 13301  	var pCur uintptr = cur
 13302  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13303  	var i int32 = 0
 13304  	var z uintptr
 13305  	for __ccgo := true; __ccgo; __ccgo = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == ',' {
 13306  		z = csv_read_one_field(tls, pCur+8)
 13307  		if z == uintptr(0) {
 13308  			break
 13309  		}
 13310  		if i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13311  			if *(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) < (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1 {
 13312  				var zNew uintptr = sqlite3.Xsqlite3_realloc64(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13313  				if zNew == uintptr(0) {
 13314  					csv_errmsg(tls, pCur+8, ts+2069, 0)
 13315  					csv_xfer_error(tls, pTab, pCur+8)
 13316  					break
 13317  				}
 13318  				*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = zNew
 13319  				*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn + 1
 13320  			}
 13321  			libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), z, uint64((*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fn+1))
 13322  			i++
 13323  		}
 13324  	}
 13325  	if z == uintptr(0) || (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FcTerm == -1 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13326  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(-1)
 13327  	} else {
 13328  		(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid++
 13329  		for i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol {
 13330  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)))
 13331  			*(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) = uintptr(0)
 13332  			*(*int32)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FaLen + uintptr(i)*4)) = 0
 13333  			i++
 13334  		}
 13335  	}
 13336  	return SQLITE_OK
 13337  }
 13338  
 13339  func csvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 13340  	var pCur uintptr = cur
 13341  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 13342  	if i >= 0 && i < (*CsvTable)(unsafe.Pointer(pTab)).FnCol && *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)) != uintptr(0) {
 13343  		sqlite3.Xsqlite3_result_text(tls, ctx, *(*uintptr)(unsafe.Pointer((*CsvCursor)(unsafe.Pointer(pCur)).FazVal + uintptr(i)*8)), -1, libc.UintptrFromInt32(-1))
 13344  	}
 13345  	return SQLITE_OK
 13346  }
 13347  
 13348  func csvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 13349  	var pCur uintptr = cur
 13350  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*CsvCursor)(unsafe.Pointer(pCur)).FiRowid
 13351  	return SQLITE_OK
 13352  }
 13353  
 13354  func csvtabEof(tls *libc.TLS, cur uintptr) int32 {
 13355  	var pCur uintptr = cur
 13356  	return libc.Bool32((*CsvCursor)(unsafe.Pointer(pCur)).FiRowid < int64(0))
 13357  }
 13358  
 13359  func csvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 13360  	var pCur uintptr = pVtabCursor
 13361  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 13362  	(*CsvCursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 13363  	if (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin == uintptr(0) {
 13364  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = size_t((*CsvTable)(unsafe.Pointer(pTab)).FiStart)
 13365  	} else {
 13366  		libc.Xfseek(tls, (*CsvCursor)(unsafe.Pointer(pCur)).Frdr.Fin, (*CsvTable)(unsafe.Pointer(pTab)).FiStart, SEEK_SET)
 13367  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FiIn = uint64(0)
 13368  		(*CsvCursor)(unsafe.Pointer(pCur)).Frdr.FnIn = uint64(0)
 13369  	}
 13370  	return csvtabNext(tls, pVtabCursor)
 13371  }
 13372  
 13373  func csvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 13374  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000)
 13375  	if (*CsvTable)(unsafe.Pointer(tab)).FtstFlags&uint32(CSVTEST_FIDX) != uint32(0) {
 13376  		var i int32
 13377  		var nConst int32 = 0
 13378  		for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 13379  			var op uint8
 13380  			if int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable) == 0 {
 13381  				continue
 13382  			}
 13383  			op = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop
 13384  			if int32(op) == SQLITE_INDEX_CONSTRAINT_EQ ||
 13385  				int32(op) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 13386  				int32(op) == SQLITE_INDEX_CONSTRAINT_GLOB {
 13387  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 13388  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(nConst)*8)).FargvIndex = nConst + 1
 13389  				nConst++
 13390  			}
 13391  		}
 13392  	}
 13393  	return SQLITE_OK
 13394  }
 13395  
 13396  var CsvModule = sqlite3_module{
 13397  	FxCreate:     0,
 13398  	FxConnect:    0,
 13399  	FxBestIndex:  0,
 13400  	FxDisconnect: 0,
 13401  	FxDestroy:    0,
 13402  	FxOpen:       0,
 13403  	FxClose:      0,
 13404  	FxFilter:     0,
 13405  	FxNext:       0,
 13406  	FxEof:        0,
 13407  	FxColumn:     0,
 13408  	FxRowid:      0,
 13409  }
 13410  
 13411  func csvtabUpdate(tls *libc.TLS, p uintptr, n int32, v uintptr, x uintptr) int32 {
 13412  	return SQLITE_READONLY
 13413  }
 13414  
 13415  var CsvModuleFauxWrite = sqlite3_module{
 13416  	FxCreate:     0,
 13417  	FxConnect:    0,
 13418  	FxBestIndex:  0,
 13419  	FxDisconnect: 0,
 13420  	FxDestroy:    0,
 13421  	FxOpen:       0,
 13422  	FxClose:      0,
 13423  	FxFilter:     0,
 13424  	FxNext:       0,
 13425  	FxEof:        0,
 13426  	FxColumn:     0,
 13427  	FxRowid:      0,
 13428  	FxUpdate:     0,
 13429  }
 13430  
 13431  func sqlite3_csv_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 13432  	var rc int32
 13433  	_ = pApi
 13434  
 13435  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4815, uintptr(unsafe.Pointer(&CsvModule)), uintptr(0))
 13436  	if rc == SQLITE_OK {
 13437  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4819, uintptr(unsafe.Pointer(&CsvModuleFauxWrite)), uintptr(0))
 13438  	}
 13439  	return rc
 13440  }
 13441  
 13442  type Decimal1 = struct {
 13443  	Fsign        int8
 13444  	Foom         int8
 13445  	FisNull      int8
 13446  	FisInit      int8
 13447  	FnDigit      int32
 13448  	FnFrac       int32
 13449  	F__ccgo_pad1 [4]byte
 13450  	Fa           uintptr
 13451  }
 13452  
 13453  type Decimal = Decimal1
 13454  
 13455  func decimal_clear(tls *libc.TLS, p uintptr) {
 13456  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(p)).Fa)
 13457  }
 13458  
 13459  func decimal_free(tls *libc.TLS, p uintptr) {
 13460  	if p != 0 {
 13461  		decimal_clear(tls, p)
 13462  		sqlite3.Xsqlite3_free(tls, p)
 13463  	}
 13464  }
 13465  
 13466  func decimal_new(tls *libc.TLS, pCtx uintptr, pIn uintptr, nAlt int32, zAlt uintptr) uintptr {
 13467  	var p uintptr
 13468  	var n int32
 13469  	var i int32
 13470  	var zIn uintptr
 13471  	var iExp int32
 13472  	var j int32
 13473  	var neg int32
 13474  	var c int8
 13475  	var nExtra int32
 13476  	iExp = 0
 13477  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Decimal{})))
 13478  	if !(p == uintptr(0)) {
 13479  		goto __1
 13480  	}
 13481  	goto new_no_mem
 13482  __1:
 13483  	;
 13484  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13485  	(*Decimal)(unsafe.Pointer(p)).Foom = int8(0)
 13486  	(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 13487  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(0)
 13488  	(*Decimal)(unsafe.Pointer(p)).FnDigit = 0
 13489  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13490  	if !(zAlt != 0) {
 13491  		goto __2
 13492  	}
 13493  	n = nAlt
 13494  	zIn = zAlt
 13495  	goto __3
 13496  __2:
 13497  	if !(sqlite3.Xsqlite3_value_type(tls, pIn) == SQLITE_NULL) {
 13498  		goto __4
 13499  	}
 13500  	(*Decimal)(unsafe.Pointer(p)).Fa = uintptr(0)
 13501  	(*Decimal)(unsafe.Pointer(p)).FisNull = int8(1)
 13502  	return p
 13503  __4:
 13504  	;
 13505  	n = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 13506  	zIn = sqlite3.Xsqlite3_value_text(tls, pIn)
 13507  __3:
 13508  	;
 13509  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc64(tls, uint64(n+1))
 13510  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13511  		goto __5
 13512  	}
 13513  	goto new_no_mem
 13514  __5:
 13515  	;
 13516  	i = 0
 13517  __6:
 13518  	if !(libc.Xisspace(tls, int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))) != 0) {
 13519  		goto __8
 13520  	}
 13521  	goto __7
 13522  __7:
 13523  	i++
 13524  	goto __6
 13525  	goto __8
 13526  __8:
 13527  	;
 13528  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '-') {
 13529  		goto __9
 13530  	}
 13531  	(*Decimal)(unsafe.Pointer(p)).Fsign = int8(1)
 13532  	i++
 13533  	goto __10
 13534  __9:
 13535  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '+') {
 13536  		goto __11
 13537  	}
 13538  	i++
 13539  __11:
 13540  	;
 13541  __10:
 13542  	;
 13543  __12:
 13544  	if !(i < n && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i)))) == '0') {
 13545  		goto __13
 13546  	}
 13547  	i++
 13548  	goto __12
 13549  __13:
 13550  	;
 13551  __14:
 13552  	if !(i < n) {
 13553  		goto __15
 13554  	}
 13555  	c = int8(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))
 13556  	if !(int32(c) >= '0' && int32(c) <= '9') {
 13557  		goto __16
 13558  	}
 13559  	*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncInt32(&(*Decimal)(unsafe.Pointer(p)).FnDigit, 1)))) = int8(int32(c) - '0')
 13560  	goto __17
 13561  __16:
 13562  	if !(int32(c) == '.') {
 13563  		goto __18
 13564  	}
 13565  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit + 1
 13566  	goto __19
 13567  __18:
 13568  	if !(int32(c) == 'e' || int32(c) == 'E') {
 13569  		goto __20
 13570  	}
 13571  	j = i + 1
 13572  	neg = 0
 13573  	if !(j >= n) {
 13574  		goto __21
 13575  	}
 13576  	goto __15
 13577  __21:
 13578  	;
 13579  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '-') {
 13580  		goto __22
 13581  	}
 13582  	neg = 1
 13583  	j++
 13584  	goto __23
 13585  __22:
 13586  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) == '+') {
 13587  		goto __24
 13588  	}
 13589  	j++
 13590  __24:
 13591  	;
 13592  __23:
 13593  	;
 13594  __25:
 13595  	if !(j < n && iExp < 1000000) {
 13596  		goto __26
 13597  	}
 13598  	if !(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) >= '0' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) <= '9') {
 13599  		goto __27
 13600  	}
 13601  	iExp = iExp*10 + int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(j)))) - '0'
 13602  __27:
 13603  	;
 13604  	j++
 13605  	goto __25
 13606  __26:
 13607  	;
 13608  	if !(neg != 0) {
 13609  		goto __28
 13610  	}
 13611  	iExp = -iExp
 13612  __28:
 13613  	;
 13614  	goto __15
 13615  __20:
 13616  	;
 13617  __19:
 13618  	;
 13619  __17:
 13620  	;
 13621  	i++
 13622  	goto __14
 13623  __15:
 13624  	;
 13625  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac != 0) {
 13626  		goto __29
 13627  	}
 13628  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - ((*Decimal)(unsafe.Pointer(p)).FnFrac - 1)
 13629  __29:
 13630  	;
 13631  	if !(iExp > 0) {
 13632  		goto __30
 13633  	}
 13634  	if !((*Decimal)(unsafe.Pointer(p)).FnFrac > 0) {
 13635  		goto __32
 13636  	}
 13637  	if !(iExp <= (*Decimal)(unsafe.Pointer(p)).FnFrac) {
 13638  		goto __33
 13639  	}
 13640  	*(*int32)(unsafe.Pointer(p + 8)) -= iExp
 13641  	iExp = 0
 13642  	goto __34
 13643  __33:
 13644  	iExp = iExp - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13645  	(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 13646  __34:
 13647  	;
 13648  __32:
 13649  	;
 13650  	if !(iExp > 0) {
 13651  		goto __35
 13652  	}
 13653  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13654  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13655  		goto __36
 13656  	}
 13657  	goto new_no_mem
 13658  __36:
 13659  	;
 13660  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(iExp))
 13661  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13662  __35:
 13663  	;
 13664  	goto __31
 13665  __30:
 13666  	if !(iExp < 0) {
 13667  		goto __37
 13668  	}
 13669  	iExp = -iExp
 13670  	nExtra = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac - 1
 13671  	if !(nExtra != 0) {
 13672  		goto __38
 13673  	}
 13674  	if !(nExtra >= iExp) {
 13675  		goto __39
 13676  	}
 13677  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13678  	iExp = 0
 13679  	goto __40
 13680  __39:
 13681  	iExp = iExp - nExtra
 13682  	(*Decimal)(unsafe.Pointer(p)).FnFrac = (*Decimal)(unsafe.Pointer(p)).FnDigit - 1
 13683  __40:
 13684  	;
 13685  __38:
 13686  	;
 13687  	if !(iExp > 0) {
 13688  		goto __41
 13689  	}
 13690  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit+iExp+1))
 13691  	if !((*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0)) {
 13692  		goto __42
 13693  	}
 13694  	goto new_no_mem
 13695  __42:
 13696  	;
 13697  	libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(iExp), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 13698  	libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(iExp))
 13699  	*(*int32)(unsafe.Pointer(p + 4)) += iExp
 13700  	*(*int32)(unsafe.Pointer(p + 8)) += iExp
 13701  __41:
 13702  	;
 13703  __37:
 13704  	;
 13705  __31:
 13706  	;
 13707  	return p
 13708  
 13709  new_no_mem:
 13710  	if !(pCtx != 0) {
 13711  		goto __43
 13712  	}
 13713  	sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13714  __43:
 13715  	;
 13716  	sqlite3.Xsqlite3_free(tls, p)
 13717  	return uintptr(0)
 13718  }
 13719  
 13720  func decimal_result(tls *libc.TLS, pCtx uintptr, p uintptr) {
 13721  	var z uintptr
 13722  	var i int32
 13723  	var j int32
 13724  	var n int32
 13725  	if p == uintptr(0) || (*Decimal)(unsafe.Pointer(p)).Foom != 0 {
 13726  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13727  		return
 13728  	}
 13729  	if (*Decimal)(unsafe.Pointer(p)).FisNull != 0 {
 13730  		sqlite3.Xsqlite3_result_null(tls, pCtx)
 13731  		return
 13732  	}
 13733  	z = sqlite3.Xsqlite3_malloc(tls, (*Decimal)(unsafe.Pointer(p)).FnDigit+4)
 13734  	if z == uintptr(0) {
 13735  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 13736  		return
 13737  	}
 13738  	i = 0
 13739  	if (*Decimal)(unsafe.Pointer(p)).FnDigit == 0 || (*Decimal)(unsafe.Pointer(p)).FnDigit == 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa))) == 0 {
 13740  		(*Decimal)(unsafe.Pointer(p)).Fsign = int8(0)
 13741  	}
 13742  	if (*Decimal)(unsafe.Pointer(p)).Fsign != 0 {
 13743  		*(*int8)(unsafe.Pointer(z)) = int8('-')
 13744  		i = 1
 13745  	}
 13746  	n = (*Decimal)(unsafe.Pointer(p)).FnDigit - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13747  	if n <= 0 {
 13748  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('0')
 13749  	}
 13750  	j = 0
 13751  	for n > 1 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) == 0 {
 13752  		j++
 13753  		n--
 13754  	}
 13755  	for n > 0 {
 13756  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13757  		j++
 13758  		n--
 13759  	}
 13760  	if (*Decimal)(unsafe.Pointer(p)).FnFrac != 0 {
 13761  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8('.')
 13762  		for __ccgo := true; __ccgo; __ccgo = j < (*Decimal)(unsafe.Pointer(p)).FnDigit {
 13763  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))) = int8(int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa + uintptr(j)))) + '0')
 13764  			j++
 13765  		}
 13766  	}
 13767  	*(*int8)(unsafe.Pointer(z + uintptr(i))) = int8(0)
 13768  	sqlite3.Xsqlite3_result_text(tls, pCtx, z, i, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 13769  }
 13770  
 13771  func decimalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13772  	var p uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13773  	_ = argc
 13774  	decimal_result(tls, context, p)
 13775  	decimal_free(tls, p)
 13776  }
 13777  
 13778  func decimal_cmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 13779  	var nASig int32
 13780  	var nBSig int32
 13781  	var rc int32
 13782  	var n int32
 13783  	if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) != int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 13784  		if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 13785  			return -1
 13786  		}
 13787  		return +1
 13788  	}
 13789  	if (*Decimal)(unsafe.Pointer(pA)).Fsign != 0 {
 13790  		var pTemp uintptr = pA
 13791  		pA = pB
 13792  		pB = pTemp
 13793  	}
 13794  	nASig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13795  	nBSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13796  	if nASig != nBSig {
 13797  		return nASig - nBSig
 13798  	}
 13799  	n = (*Decimal)(unsafe.Pointer(pA)).FnDigit
 13800  	if n > (*Decimal)(unsafe.Pointer(pB)).FnDigit {
 13801  		n = (*Decimal)(unsafe.Pointer(pB)).FnDigit
 13802  	}
 13803  	rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(n))
 13804  	if rc == 0 {
 13805  		rc = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnDigit
 13806  	}
 13807  	return rc
 13808  }
 13809  
 13810  func decimalCmpFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13811  	var pA uintptr
 13812  	var pB uintptr
 13813  	var rc int32
 13814  	pA = uintptr(0)
 13815  	pB = uintptr(0)
 13816  
 13817  	_ = argc
 13818  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13819  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0) {
 13820  		goto __1
 13821  	}
 13822  	goto cmp_done
 13823  __1:
 13824  	;
 13825  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13826  	if !(pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 13827  		goto __2
 13828  	}
 13829  	goto cmp_done
 13830  __2:
 13831  	;
 13832  	rc = decimal_cmp(tls, pA, pB)
 13833  	if !(rc < 0) {
 13834  		goto __3
 13835  	}
 13836  	rc = -1
 13837  	goto __4
 13838  __3:
 13839  	if !(rc > 0) {
 13840  		goto __5
 13841  	}
 13842  	rc = +1
 13843  __5:
 13844  	;
 13845  __4:
 13846  	;
 13847  	sqlite3.Xsqlite3_result_int(tls, context, rc)
 13848  cmp_done:
 13849  	decimal_free(tls, pA)
 13850  	decimal_free(tls, pB)
 13851  }
 13852  
 13853  func decimal_expand(tls *libc.TLS, p uintptr, nDigit int32, nFrac int32) {
 13854  	var nAddSig int32
 13855  	var nAddFrac int32
 13856  	if p == uintptr(0) {
 13857  		return
 13858  	}
 13859  	nAddFrac = nFrac - (*Decimal)(unsafe.Pointer(p)).FnFrac
 13860  	nAddSig = nDigit - (*Decimal)(unsafe.Pointer(p)).FnDigit - nAddFrac
 13861  	if nAddFrac == 0 && nAddSig == 0 {
 13862  		return
 13863  	}
 13864  	(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_realloc64(tls, (*Decimal)(unsafe.Pointer(p)).Fa, uint64(nDigit+1))
 13865  	if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 13866  		(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 13867  		return
 13868  	}
 13869  	if nAddSig != 0 {
 13870  		libc.Xmemmove(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr(nAddSig), (*Decimal)(unsafe.Pointer(p)).Fa, uint64((*Decimal)(unsafe.Pointer(p)).FnDigit))
 13871  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa, 0, uint64(nAddSig))
 13872  		*(*int32)(unsafe.Pointer(p + 4)) += nAddSig
 13873  	}
 13874  	if nAddFrac != 0 {
 13875  		libc.Xmemset(tls, (*Decimal)(unsafe.Pointer(p)).Fa+uintptr((*Decimal)(unsafe.Pointer(p)).FnDigit), 0, uint64(nAddFrac))
 13876  		*(*int32)(unsafe.Pointer(p + 4)) += nAddFrac
 13877  		*(*int32)(unsafe.Pointer(p + 8)) += nAddFrac
 13878  	}
 13879  }
 13880  
 13881  func decimal_add(tls *libc.TLS, pA uintptr, pB uintptr) {
 13882  	var nSig int32
 13883  	var nFrac int32
 13884  	var nDigit int32
 13885  	var i int32
 13886  	var rc int32
 13887  	if pA == uintptr(0) {
 13888  		return
 13889  	}
 13890  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 13891  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 13892  		return
 13893  	}
 13894  	if (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0 {
 13895  		(*Decimal)(unsafe.Pointer(pA)).FisNull = int8(1)
 13896  		return
 13897  	}
 13898  	nSig = (*Decimal)(unsafe.Pointer(pA)).FnDigit - (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13899  	if nSig != 0 && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa))) == 0 {
 13900  		nSig--
 13901  	}
 13902  	if nSig < (*Decimal)(unsafe.Pointer(pB)).FnDigit-(*Decimal)(unsafe.Pointer(pB)).FnFrac {
 13903  		nSig = (*Decimal)(unsafe.Pointer(pB)).FnDigit - (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13904  	}
 13905  	nFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 13906  	if nFrac < (*Decimal)(unsafe.Pointer(pB)).FnFrac {
 13907  		nFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 13908  	}
 13909  	nDigit = nSig + nFrac + 1
 13910  	decimal_expand(tls, pA, nDigit, nFrac)
 13911  	decimal_expand(tls, pB, nDigit, nFrac)
 13912  	if (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 {
 13913  		(*Decimal)(unsafe.Pointer(pA)).Foom = int8(1)
 13914  	} else {
 13915  		if int32((*Decimal)(unsafe.Pointer(pA)).Fsign) == int32((*Decimal)(unsafe.Pointer(pB)).Fsign) {
 13916  			var carry int32 = 0
 13917  			for i = nDigit - 1; i >= 0; i-- {
 13918  				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
 13919  				if x >= 10 {
 13920  					carry = 1
 13921  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x - 10)
 13922  				} else {
 13923  					carry = 0
 13924  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 13925  				}
 13926  			}
 13927  		} else {
 13928  			var aA uintptr
 13929  			var aB uintptr
 13930  			var borrow int32 = 0
 13931  			rc = libc.Xmemcmp(tls, (*Decimal)(unsafe.Pointer(pA)).Fa, (*Decimal)(unsafe.Pointer(pB)).Fa, uint64(nDigit))
 13932  			if rc < 0 {
 13933  				aA = (*Decimal)(unsafe.Pointer(pB)).Fa
 13934  				aB = (*Decimal)(unsafe.Pointer(pA)).Fa
 13935  				(*Decimal)(unsafe.Pointer(pA)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pA)).Fsign != 0))
 13936  			} else {
 13937  				aA = (*Decimal)(unsafe.Pointer(pA)).Fa
 13938  				aB = (*Decimal)(unsafe.Pointer(pB)).Fa
 13939  			}
 13940  			for i = nDigit - 1; i >= 0; i-- {
 13941  				var x int32 = int32(*(*int8)(unsafe.Pointer(aA + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(aB + uintptr(i)))) - borrow
 13942  				if x < 0 {
 13943  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x + 10)
 13944  					borrow = 1
 13945  				} else {
 13946  					*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i))) = int8(x)
 13947  					borrow = 0
 13948  				}
 13949  			}
 13950  		}
 13951  	}
 13952  }
 13953  
 13954  func decimalCollFunc(tls *libc.TLS, notUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 13955  	var zA uintptr = pKey1
 13956  	var zB uintptr = pKey2
 13957  	var pA uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey1, zA)
 13958  	var pB uintptr = decimal_new(tls, uintptr(0), uintptr(0), nKey2, zB)
 13959  	var rc int32
 13960  	_ = notUsed
 13961  	if pA == uintptr(0) || pB == uintptr(0) {
 13962  		rc = 0
 13963  	} else {
 13964  		rc = decimal_cmp(tls, pA, pB)
 13965  	}
 13966  	decimal_free(tls, pA)
 13967  	decimal_free(tls, pB)
 13968  	return rc
 13969  }
 13970  
 13971  func decimalAddFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13972  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13973  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13974  	_ = argc
 13975  	decimal_add(tls, pA, pB)
 13976  	decimal_result(tls, context, pA)
 13977  	decimal_free(tls, pA)
 13978  	decimal_free(tls, pB)
 13979  }
 13980  
 13981  func decimalSubFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13982  	var pA uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 13983  	var pB uintptr = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 13984  	_ = argc
 13985  	if pB != 0 {
 13986  		(*Decimal)(unsafe.Pointer(pB)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pB)).Fsign != 0))
 13987  		decimal_add(tls, pA, pB)
 13988  		decimal_result(tls, context, pA)
 13989  	}
 13990  	decimal_free(tls, pA)
 13991  	decimal_free(tls, pB)
 13992  }
 13993  
 13994  func decimalSumStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 13995  	var p uintptr
 13996  	var pArg uintptr
 13997  	_ = argc
 13998  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 13999  	if p == uintptr(0) {
 14000  		return
 14001  	}
 14002  	if !(int32((*Decimal)(unsafe.Pointer(p)).FisInit) != 0) {
 14003  		(*Decimal)(unsafe.Pointer(p)).FisInit = int8(1)
 14004  		(*Decimal)(unsafe.Pointer(p)).Fa = sqlite3.Xsqlite3_malloc(tls, 2)
 14005  		if (*Decimal)(unsafe.Pointer(p)).Fa == uintptr(0) {
 14006  			(*Decimal)(unsafe.Pointer(p)).Foom = int8(1)
 14007  		} else {
 14008  			*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(p)).Fa)) = int8(0)
 14009  		}
 14010  		(*Decimal)(unsafe.Pointer(p)).FnDigit = 1
 14011  		(*Decimal)(unsafe.Pointer(p)).FnFrac = 0
 14012  	}
 14013  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14014  		return
 14015  	}
 14016  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14017  	decimal_add(tls, p, pArg)
 14018  	decimal_free(tls, pArg)
 14019  }
 14020  
 14021  func decimalSumInverse(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14022  	var p uintptr
 14023  	var pArg uintptr
 14024  	_ = argc
 14025  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(Decimal{})))
 14026  	if p == uintptr(0) {
 14027  		return
 14028  	}
 14029  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 14030  		return
 14031  	}
 14032  	pArg = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14033  	if pArg != 0 {
 14034  		(*Decimal)(unsafe.Pointer(pArg)).Fsign = libc.BoolInt8(!((*Decimal)(unsafe.Pointer(pArg)).Fsign != 0))
 14035  	}
 14036  	decimal_add(tls, p, pArg)
 14037  	decimal_free(tls, pArg)
 14038  }
 14039  
 14040  func decimalSumValue(tls *libc.TLS, context uintptr) {
 14041  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14042  	if p == uintptr(0) {
 14043  		return
 14044  	}
 14045  	decimal_result(tls, context, p)
 14046  }
 14047  
 14048  func decimalSumFinalize(tls *libc.TLS, context uintptr) {
 14049  	var p uintptr = sqlite3.Xsqlite3_aggregate_context(tls, context, 0)
 14050  	if p == uintptr(0) {
 14051  		return
 14052  	}
 14053  	decimal_result(tls, context, p)
 14054  	decimal_clear(tls, p)
 14055  }
 14056  
 14057  func decimalMulFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14058  	var pA uintptr
 14059  	var pB uintptr
 14060  	var acc uintptr
 14061  	var i int32
 14062  	var j int32
 14063  	var k int32
 14064  	var minFrac int32
 14065  	var f int8
 14066  	var carry int32
 14067  	var x int32
 14068  	pA = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv)), 0, uintptr(0))
 14069  	pB = decimal_new(tls, context, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, uintptr(0))
 14070  	acc = uintptr(0)
 14071  	_ = argc
 14072  	if !(pA == uintptr(0) || (*Decimal)(unsafe.Pointer(pA)).Foom != 0 || (*Decimal)(unsafe.Pointer(pA)).FisNull != 0 ||
 14073  		pB == uintptr(0) || (*Decimal)(unsafe.Pointer(pB)).Foom != 0 || (*Decimal)(unsafe.Pointer(pB)).FisNull != 0) {
 14074  		goto __1
 14075  	}
 14076  	goto mul_end
 14077  __1:
 14078  	;
 14079  	acc = sqlite3.Xsqlite3_malloc64(tls, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14080  	if !(acc == uintptr(0)) {
 14081  		goto __2
 14082  	}
 14083  	sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14084  	goto mul_end
 14085  __2:
 14086  	;
 14087  	libc.Xmemset(tls, acc, 0, uint64((*Decimal)(unsafe.Pointer(pA)).FnDigit+(*Decimal)(unsafe.Pointer(pB)).FnDigit+2))
 14088  	minFrac = (*Decimal)(unsafe.Pointer(pA)).FnFrac
 14089  	if !((*Decimal)(unsafe.Pointer(pB)).FnFrac < minFrac) {
 14090  		goto __3
 14091  	}
 14092  	minFrac = (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14093  __3:
 14094  	;
 14095  	i = (*Decimal)(unsafe.Pointer(pA)).FnDigit - 1
 14096  __4:
 14097  	if !(i >= 0) {
 14098  		goto __6
 14099  	}
 14100  	f = *(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr(i)))
 14101  	carry = 0
 14102  	j = (*Decimal)(unsafe.Pointer(pB)).FnDigit - 1
 14103  	k = i + j + 3
 14104  __7:
 14105  	if !(j >= 0) {
 14106  		goto __9
 14107  	}
 14108  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + int32(f)*int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pB)).Fa + uintptr(j)))) + carry
 14109  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14110  	carry = x / 10
 14111  	goto __8
 14112  __8:
 14113  	j--
 14114  	k--
 14115  	goto __7
 14116  	goto __9
 14117  __9:
 14118  	;
 14119  	x = int32(*(*int8)(unsafe.Pointer(acc + uintptr(k)))) + carry
 14120  	*(*int8)(unsafe.Pointer(acc + uintptr(k))) = int8(x % 10)
 14121  	*(*int8)(unsafe.Pointer(acc + uintptr(k-1))) += int8(x / 10)
 14122  	goto __5
 14123  __5:
 14124  	i--
 14125  	goto __4
 14126  	goto __6
 14127  __6:
 14128  	;
 14129  	sqlite3.Xsqlite3_free(tls, (*Decimal)(unsafe.Pointer(pA)).Fa)
 14130  	(*Decimal)(unsafe.Pointer(pA)).Fa = acc
 14131  	acc = uintptr(0)
 14132  	*(*int32)(unsafe.Pointer(pA + 4)) += (*Decimal)(unsafe.Pointer(pB)).FnDigit + 2
 14133  	*(*int32)(unsafe.Pointer(pA + 8)) += (*Decimal)(unsafe.Pointer(pB)).FnFrac
 14134  	*(*int8)(unsafe.Pointer(pA)) ^= int8(int32((*Decimal)(unsafe.Pointer(pB)).Fsign))
 14135  __10:
 14136  	if !((*Decimal)(unsafe.Pointer(pA)).FnFrac > minFrac && int32(*(*int8)(unsafe.Pointer((*Decimal)(unsafe.Pointer(pA)).Fa + uintptr((*Decimal)(unsafe.Pointer(pA)).FnDigit-1)))) == 0) {
 14137  		goto __11
 14138  	}
 14139  	(*Decimal)(unsafe.Pointer(pA)).FnFrac--
 14140  	(*Decimal)(unsafe.Pointer(pA)).FnDigit--
 14141  	goto __10
 14142  __11:
 14143  	;
 14144  	decimal_result(tls, context, pA)
 14145  
 14146  mul_end:
 14147  	sqlite3.Xsqlite3_free(tls, acc)
 14148  	decimal_free(tls, pA)
 14149  	decimal_free(tls, pB)
 14150  }
 14151  
 14152  func sqlite3_decimal_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14153  	var rc int32 = SQLITE_OK
 14154  	var i uint32
 14155  	_ = pzErrMsg
 14156  
 14157  	_ = pApi
 14158  
 14159  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc))/uint64(unsafe.Sizeof(struct {
 14160  		FzFuncName   uintptr
 14161  		FnArg        int32
 14162  		F__ccgo_pad1 [4]byte
 14163  		FxFunc       uintptr
 14164  	}{})) && rc == SQLITE_OK; i++ {
 14165  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc[i].FzFuncName, aFunc[i].FnArg,
 14166  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 14167  			uintptr(0), aFunc[i].FxFunc, uintptr(0), uintptr(0))
 14168  	}
 14169  	if rc == SQLITE_OK {
 14170  		rc = sqlite3.Xsqlite3_create_window_function(tls, db, ts+4826, 1,
 14171  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC, uintptr(0),
 14172  			*(*uintptr)(unsafe.Pointer(&struct {
 14173  				f func(*libc.TLS, uintptr, int32, uintptr)
 14174  			}{decimalSumStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumFinalize})),
 14175  			*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{decimalSumValue})), *(*uintptr)(unsafe.Pointer(&struct {
 14176  				f func(*libc.TLS, uintptr, int32, uintptr)
 14177  			}{decimalSumInverse})), uintptr(0))
 14178  	}
 14179  	if rc == SQLITE_OK {
 14180  		rc = sqlite3.Xsqlite3_create_collation(tls, db, ts+4838, SQLITE_UTF8,
 14181  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 14182  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 14183  			}{decimalCollFunc})))
 14184  	}
 14185  	return rc
 14186  }
 14187  
 14188  var aFunc = [5]struct {
 14189  	FzFuncName   uintptr
 14190  	FnArg        int32
 14191  	F__ccgo_pad1 [4]byte
 14192  	FxFunc       uintptr
 14193  }{
 14194  	{FzFuncName: ts + 4838, FnArg: 1, FxFunc: 0},
 14195  	{FzFuncName: ts + 4846, FnArg: 2, FxFunc: 0},
 14196  	{FzFuncName: ts + 4858, FnArg: 2, FxFunc: 0},
 14197  	{FzFuncName: ts + 4870, FnArg: 2, FxFunc: 0},
 14198  	{FzFuncName: ts + 4882, FnArg: 2, FxFunc: 0},
 14199  }
 14200  
 14201  type EvalResult = struct {
 14202  	Fz           uintptr
 14203  	FzSep        uintptr
 14204  	FszSep       int32
 14205  	F__ccgo_pad1 [4]byte
 14206  	FnAlloc      sqlite3_int64
 14207  	FnUsed       sqlite3_int64
 14208  }
 14209  
 14210  func callback(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr, colnames uintptr) int32 {
 14211  	var p uintptr = pCtx
 14212  	var i int32
 14213  	if argv == uintptr(0) {
 14214  		return 0
 14215  	}
 14216  	for i = 0; i < argc; i++ {
 14217  		var z uintptr
 14218  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 14219  			z = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 14220  		} else {
 14221  			z = ts + 584
 14222  		}
 14223  		var sz size_t = libc.Xstrlen(tls, z)
 14224  		if sqlite3_int64(sz)+(*EvalResult)(unsafe.Pointer(p)).FnUsed+sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)+int64(1) > (*EvalResult)(unsafe.Pointer(p)).FnAlloc {
 14225  			var zNew uintptr
 14226  			(*EvalResult)(unsafe.Pointer(p)).FnAlloc = sqlite3_int64(uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc*int64(2)) + sz + uint64((*EvalResult)(unsafe.Pointer(p)).FszSep) + uint64(1))
 14227  
 14228  			if (*EvalResult)(unsafe.Pointer(p)).FnAlloc <= int64(0x7fffffff) {
 14229  				zNew = sqlite3.Xsqlite3_realloc64(tls, (*EvalResult)(unsafe.Pointer(p)).Fz, uint64((*EvalResult)(unsafe.Pointer(p)).FnAlloc))
 14230  			} else {
 14231  				zNew = uintptr(0)
 14232  			}
 14233  			if zNew == uintptr(0) {
 14234  				sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(p)).Fz)
 14235  				libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14236  				return 1
 14237  			}
 14238  			(*EvalResult)(unsafe.Pointer(p)).Fz = zNew
 14239  		}
 14240  		if (*EvalResult)(unsafe.Pointer(p)).FnUsed > int64(0) {
 14241  			libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), (*EvalResult)(unsafe.Pointer(p)).FzSep, uint64((*EvalResult)(unsafe.Pointer(p)).FszSep))
 14242  			*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64((*EvalResult)(unsafe.Pointer(p)).FszSep)
 14243  		}
 14244  		libc.Xmemcpy(tls, (*EvalResult)(unsafe.Pointer(p)).Fz+uintptr((*EvalResult)(unsafe.Pointer(p)).FnUsed), z, sz)
 14245  		*(*sqlite3_int64)(unsafe.Pointer(p + 32)) += sqlite3_int64(sz)
 14246  	}
 14247  	return 0
 14248  }
 14249  
 14250  func sqlEvalFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14251  	bp := tls.Alloc(48)
 14252  	defer tls.Free(48)
 14253  
 14254  	var zSql uintptr
 14255  	var db uintptr
 14256  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 14257  	var rc int32
 14258  
 14259  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(EvalResult{})))
 14260  	(*EvalResult)(unsafe.Pointer(bp)).FzSep = ts + 4894
 14261  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14262  	if zSql == uintptr(0) {
 14263  		return
 14264  	}
 14265  	if argc > 1 {
 14266  		(*EvalResult)(unsafe.Pointer(bp)).FzSep = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 14267  		if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14268  			return
 14269  		}
 14270  	}
 14271  	(*EvalResult)(unsafe.Pointer(bp)).FszSep = int32(libc.Xstrlen(tls, (*EvalResult)(unsafe.Pointer(bp)).FzSep))
 14272  	db = sqlite3.Xsqlite3_context_db_handle(tls, context)
 14273  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, *(*uintptr)(unsafe.Pointer(&struct {
 14274  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 14275  	}{callback})), bp, bp+40)
 14276  	if rc != SQLITE_OK {
 14277  		sqlite3.Xsqlite3_result_error(tls, context, *(*uintptr)(unsafe.Pointer(bp + 40)), -1)
 14278  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 14279  	} else if (*EvalResult)(unsafe.Pointer(bp)).FzSep == uintptr(0) {
 14280  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 14281  		sqlite3.Xsqlite3_free(tls, (*EvalResult)(unsafe.Pointer(bp)).Fz)
 14282  	} else {
 14283  		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})))
 14284  	}
 14285  }
 14286  
 14287  func sqlite3_eval_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14288  	var rc int32 = SQLITE_OK
 14289  	_ = pApi
 14290  
 14291  	_ = pzErrMsg
 14292  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 1,
 14293  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14294  		*(*uintptr)(unsafe.Pointer(&struct {
 14295  			f func(*libc.TLS, uintptr, int32, uintptr)
 14296  		}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14297  	if rc == SQLITE_OK {
 14298  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+4896, 2,
 14299  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 14300  			*(*uintptr)(unsafe.Pointer(&struct {
 14301  				f func(*libc.TLS, uintptr, int32, uintptr)
 14302  			}{sqlEvalFunc})), uintptr(0), uintptr(0))
 14303  	}
 14304  	return rc
 14305  }
 14306  
 14307  type explain_vtab1 = struct {
 14308  	Fbase sqlite3_vtab
 14309  	Fdb   uintptr
 14310  }
 14311  
 14312  type explain_vtab = explain_vtab1
 14313  
 14314  type explain_cursor1 = struct {
 14315  	Fbase        sqlite3_vtab_cursor
 14316  	Fdb          uintptr
 14317  	FzSql        uintptr
 14318  	FpExplain    uintptr
 14319  	Frc          int32
 14320  	F__ccgo_pad1 [4]byte
 14321  }
 14322  
 14323  type explain_cursor = explain_cursor1
 14324  
 14325  func explainConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14326  	var pNew uintptr
 14327  	var rc int32
 14328  
 14329  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 14330  		ts+4901)
 14331  	if rc == SQLITE_OK {
 14332  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_vtab{})))
 14333  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14334  		if pNew == uintptr(0) {
 14335  			return SQLITE_NOMEM
 14336  		}
 14337  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(explain_vtab{})))
 14338  		(*explain_vtab)(unsafe.Pointer(pNew)).Fdb = db
 14339  	}
 14340  	return rc
 14341  }
 14342  
 14343  func explainDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14344  	sqlite3.Xsqlite3_free(tls, pVtab)
 14345  	return SQLITE_OK
 14346  }
 14347  
 14348  func explainOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14349  	var pCur uintptr
 14350  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(explain_cursor{})))
 14351  	if pCur == uintptr(0) {
 14352  		return SQLITE_NOMEM
 14353  	}
 14354  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(explain_cursor{})))
 14355  	(*explain_cursor)(unsafe.Pointer(pCur)).Fdb = (*explain_vtab)(unsafe.Pointer(p)).Fdb
 14356  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14357  	return SQLITE_OK
 14358  }
 14359  
 14360  func explainClose(tls *libc.TLS, cur uintptr) int32 {
 14361  	var pCur uintptr = cur
 14362  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14363  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14364  	sqlite3.Xsqlite3_free(tls, pCur)
 14365  	return SQLITE_OK
 14366  }
 14367  
 14368  func explainNext(tls *libc.TLS, cur uintptr) int32 {
 14369  	var pCur uintptr = cur
 14370  	(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14371  	if (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_DONE && (*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW {
 14372  		return (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14373  	}
 14374  	return SQLITE_OK
 14375  }
 14376  
 14377  func explainColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 14378  	var pCur uintptr = cur
 14379  	if i == EXPLN_COLUMN_SQL {
 14380  		sqlite3.Xsqlite3_result_text(tls, ctx, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql, -1, libc.UintptrFromInt32(-1))
 14381  	} else {
 14382  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, i))
 14383  	}
 14384  	return SQLITE_OK
 14385  }
 14386  
 14387  func explainRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 14388  	var pCur uintptr = cur
 14389  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain, 0)
 14390  	return SQLITE_OK
 14391  }
 14392  
 14393  func explainEof(tls *libc.TLS, cur uintptr) int32 {
 14394  	var pCur uintptr = cur
 14395  	return libc.Bool32((*explain_cursor)(unsafe.Pointer(pCur)).Frc != SQLITE_ROW)
 14396  }
 14397  
 14398  func explainFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 14399  	bp := tls.Alloc(16)
 14400  	defer tls.Free(16)
 14401  
 14402  	var pCur uintptr = pVtabCursor
 14403  	var zSql uintptr = uintptr(0)
 14404  	var rc int32
 14405  	sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14406  	(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14407  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) != SQLITE_TEXT {
 14408  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = SQLITE_DONE
 14409  		return SQLITE_OK
 14410  	}
 14411  	sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14412  	(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 14413  	if (*explain_cursor)(unsafe.Pointer(pCur)).FzSql != 0 {
 14414  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+4963, libc.VaList(bp+8, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql))
 14415  	}
 14416  	if zSql == uintptr(0) {
 14417  		rc = SQLITE_NOMEM
 14418  	} else {
 14419  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*explain_cursor)(unsafe.Pointer(pCur)).Fdb, zSql, -1, pCur+24, uintptr(0))
 14420  		sqlite3.Xsqlite3_free(tls, zSql)
 14421  	}
 14422  	if rc != 0 {
 14423  		sqlite3.Xsqlite3_finalize(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14424  		(*explain_cursor)(unsafe.Pointer(pCur)).FpExplain = uintptr(0)
 14425  		sqlite3.Xsqlite3_free(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FzSql)
 14426  		(*explain_cursor)(unsafe.Pointer(pCur)).FzSql = uintptr(0)
 14427  	} else {
 14428  		(*explain_cursor)(unsafe.Pointer(pCur)).Frc = sqlite3.Xsqlite3_step(tls, (*explain_cursor)(unsafe.Pointer(pCur)).FpExplain)
 14429  		if (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_DONE || (*explain_cursor)(unsafe.Pointer(pCur)).Frc == SQLITE_ROW {
 14430  			rc = SQLITE_OK
 14431  		} else {
 14432  			rc = (*explain_cursor)(unsafe.Pointer(pCur)).Frc
 14433  		}
 14434  	}
 14435  	return rc
 14436  }
 14437  
 14438  func explainBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 14439  	var i int32
 14440  	var idx int32 = -1
 14441  	var unusable int32 = 0
 14442  
 14443  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(500)
 14444  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 14445  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 14446  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != EXPLN_COLUMN_SQL {
 14447  			continue
 14448  		}
 14449  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 14450  			unusable = 1
 14451  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 14452  			idx = i
 14453  		}
 14454  	}
 14455  	if idx >= 0 {
 14456  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 14457  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 14458  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).FargvIndex = 1
 14459  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idx)*8)).Fomit = uint8(1)
 14460  	} else if unusable != 0 {
 14461  		return SQLITE_CONSTRAINT
 14462  	}
 14463  	return SQLITE_OK
 14464  }
 14465  
 14466  var explainModule = sqlite3_module{
 14467  	FxConnect:    0,
 14468  	FxBestIndex:  0,
 14469  	FxDisconnect: 0,
 14470  	FxOpen:       0,
 14471  	FxClose:      0,
 14472  	FxFilter:     0,
 14473  	FxNext:       0,
 14474  	FxEof:        0,
 14475  	FxColumn:     0,
 14476  	FxRowid:      0,
 14477  }
 14478  
 14479  func sqlite3ExplainVtabInit(tls *libc.TLS, db uintptr) int32 {
 14480  	var rc int32 = SQLITE_OK
 14481  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+4974, uintptr(unsafe.Pointer(&explainModule)), uintptr(0))
 14482  	return rc
 14483  }
 14484  
 14485  func sqlite3_explain_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 14486  	var rc int32 = SQLITE_OK
 14487  	_ = pApi
 14488  
 14489  	rc = sqlite3ExplainVtabInit(tls, db)
 14490  	return rc
 14491  }
 14492  
 14493  type timeval = struct {
 14494  	Ftv_sec  time_t
 14495  	Ftv_usec suseconds_t
 14496  }
 14497  
 14498  type timespec = struct {
 14499  	Ftv_sec  time_t
 14500  	Ftv_nsec int64
 14501  }
 14502  
 14503  type fd_set1 = struct{ Ffds_bits [32]uint32 }
 14504  
 14505  type fd_set = fd_set1
 14506  
 14507  type sigset_t = uint32
 14508  
 14509  type timezone = struct {
 14510  	Ftz_minuteswest int32
 14511  	Ftz_dsttime     int32
 14512  }
 14513  
 14514  type itimerval = struct {
 14515  	Fit_interval struct {
 14516  		Ftv_sec  time_t
 14517  		Ftv_usec suseconds_t
 14518  	}
 14519  	Fit_value struct {
 14520  		Ftv_sec  time_t
 14521  		Ftv_usec suseconds_t
 14522  	}
 14523  }
 14524  
 14525  type clockinfo = struct {
 14526  	Fhz     int32
 14527  	Ftick   int32
 14528  	Fstathz int32
 14529  	Fprofhz int32
 14530  }
 14531  
 14532  type itimerspec = struct {
 14533  	Fit_interval struct {
 14534  		Ftv_sec  time_t
 14535  		Ftv_nsec int64
 14536  	}
 14537  	Fit_value struct {
 14538  		Ftv_sec  time_t
 14539  		Ftv_nsec int64
 14540  	}
 14541  }
 14542  
 14543  type tm = struct {
 14544  	Ftm_sec      int32
 14545  	Ftm_min      int32
 14546  	Ftm_hour     int32
 14547  	Ftm_mday     int32
 14548  	Ftm_mon      int32
 14549  	Ftm_year     int32
 14550  	Ftm_wday     int32
 14551  	Ftm_yday     int32
 14552  	Ftm_isdst    int32
 14553  	F__ccgo_pad1 [4]byte
 14554  	Ftm_gmtoff   int64
 14555  	Ftm_zone     uintptr
 14556  }
 14557  
 14558  type flock = struct {
 14559  	Fl_start  off_t
 14560  	Fl_len    off_t
 14561  	Fl_pid    pid_t
 14562  	Fl_type   int16
 14563  	Fl_whence int16
 14564  }
 14565  
 14566  type __tfork = struct {
 14567  	Ftf_tcb   uintptr
 14568  	Ftf_tid   uintptr
 14569  	Ftf_stack uintptr
 14570  }
 14571  
 14572  type __kbind = struct {
 14573  	Fkb_addr uintptr
 14574  	Fkb_size size_t
 14575  }
 14576  
 14577  type intptr_t = int64
 14578  
 14579  type dirent = struct {
 14580  	Fd_fileno    uint64
 14581  	Fd_off       int64
 14582  	Fd_reclen    uint16
 14583  	Fd_type      uint8
 14584  	Fd_namlen    uint8
 14585  	F__d_padding [4]uint8
 14586  	Fd_name      [256]int8
 14587  }
 14588  
 14589  func readFileContents(tls *libc.TLS, ctx uintptr, zName uintptr) {
 14590  	var in uintptr
 14591  	var nIn sqlite3_int64
 14592  	var pBuf uintptr
 14593  	var db uintptr
 14594  	var mxBlob int32
 14595  
 14596  	in = libc.Xfopen(tls, zName, ts+4402)
 14597  	if in == uintptr(0) {
 14598  		return
 14599  	}
 14600  	libc.Xfseek(tls, in, int64(0), SEEK_END)
 14601  	nIn = libc.Xftell(tls, in)
 14602  	libc.Xrewind(tls, in)
 14603  	db = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 14604  	mxBlob = sqlite3.Xsqlite3_limit(tls, db, SQLITE_LIMIT_LENGTH, -1)
 14605  	if nIn > sqlite3_int64(mxBlob) {
 14606  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_TOOBIG)
 14607  		libc.Xfclose(tls, in)
 14608  		return
 14609  	}
 14610  	pBuf = sqlite3.Xsqlite3_malloc64(tls, func() uint64 {
 14611  		if nIn != 0 {
 14612  			return uint64(nIn)
 14613  		}
 14614  		return uint64(1)
 14615  	}())
 14616  	if pBuf == uintptr(0) {
 14617  		sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 14618  		libc.Xfclose(tls, in)
 14619  		return
 14620  	}
 14621  	if nIn == sqlite3_int64(libc.Xfread(tls, pBuf, uint64(1), size_t(nIn), in)) {
 14622  		sqlite3.Xsqlite3_result_blob64(tls, ctx, pBuf, uint64(nIn), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 14623  	} else {
 14624  		sqlite3.Xsqlite3_result_error_code(tls, ctx, SQLITE_IOERR)
 14625  		sqlite3.Xsqlite3_free(tls, pBuf)
 14626  	}
 14627  	libc.Xfclose(tls, in)
 14628  }
 14629  
 14630  func readfileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14631  	var zName uintptr
 14632  	_ = argc
 14633  	zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14634  	if zName == uintptr(0) {
 14635  		return
 14636  	}
 14637  	readFileContents(tls, context, zName)
 14638  }
 14639  
 14640  func ctxErrorMsg(tls *libc.TLS, ctx uintptr, zFmt uintptr, va uintptr) {
 14641  	var zMsg uintptr = uintptr(0)
 14642  	var ap va_list
 14643  	_ = ap
 14644  	ap = va
 14645  	zMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 14646  	sqlite3.Xsqlite3_result_error(tls, ctx, zMsg, -1)
 14647  	sqlite3.Xsqlite3_free(tls, zMsg)
 14648  	_ = ap
 14649  }
 14650  
 14651  func fileStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 14652  	return libc.Xstat(tls, zPath, pStatBuf)
 14653  }
 14654  
 14655  func fileLinkStat(tls *libc.TLS, zPath uintptr, pStatBuf uintptr) int32 {
 14656  	return libc.Xlstat(tls, zPath, pStatBuf)
 14657  }
 14658  
 14659  func makeDirectory(tls *libc.TLS, zFile uintptr) int32 {
 14660  	bp := tls.Alloc(136)
 14661  	defer tls.Free(136)
 14662  
 14663  	var zCopy uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zFile))
 14664  	var rc int32 = SQLITE_OK
 14665  
 14666  	if zCopy == uintptr(0) {
 14667  		rc = SQLITE_NOMEM
 14668  	} else {
 14669  		var nCopy int32 = int32(libc.Xstrlen(tls, zCopy))
 14670  		var i int32 = 1
 14671  
 14672  		for rc == SQLITE_OK {
 14673  			var rc2 int32
 14674  
 14675  			for ; int32(*(*int8)(unsafe.Pointer(zCopy + uintptr(i)))) != '/' && i < nCopy; i++ {
 14676  			}
 14677  			if i == nCopy {
 14678  				break
 14679  			}
 14680  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8(0)
 14681  
 14682  			rc2 = fileStat(tls, zCopy, bp+8)
 14683  			if rc2 != 0 {
 14684  				if libc.Xmkdir(tls, zCopy, uint32(0777)) != 0 {
 14685  					rc = SQLITE_ERROR
 14686  				}
 14687  			} else {
 14688  				if !((*stat)(unsafe.Pointer(bp+8)).Fst_mode&mode_t(0170000) == mode_t(0040000)) {
 14689  					rc = SQLITE_ERROR
 14690  				}
 14691  			}
 14692  			*(*int8)(unsafe.Pointer(zCopy + uintptr(i))) = int8('/')
 14693  			i++
 14694  		}
 14695  
 14696  		sqlite3.Xsqlite3_free(tls, zCopy)
 14697  	}
 14698  
 14699  	return rc
 14700  }
 14701  
 14702  func writeFile(tls *libc.TLS, pCtx uintptr, zFile uintptr, pData uintptr, mode mode_t, mtime sqlite3_int64) int32 {
 14703  	bp := tls.Alloc(160)
 14704  	defer tls.Free(160)
 14705  
 14706  	if zFile == uintptr(0) {
 14707  		return 1
 14708  	}
 14709  	if mode&mode_t(0170000) == mode_t(0120000) {
 14710  		var zTo uintptr = sqlite3.Xsqlite3_value_text(tls, pData)
 14711  		if zTo == uintptr(0) || libc.Xsymlink(tls, zTo, zFile) < 0 {
 14712  			return 1
 14713  		}
 14714  	} else {
 14715  		if mode&mode_t(0170000) == mode_t(0040000) {
 14716  			if libc.Xmkdir(tls, zFile, mode) != 0 {
 14717  				if *(*int32)(unsafe.Pointer(libc.X__errno(tls))) != EEXIST ||
 14718  					0 != fileStat(tls, zFile, bp) ||
 14719  					!((*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0170000) == mode_t(0040000)) ||
 14720  					(*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0777) != mode&mode_t(0777) && 0 != libc.Xchmod(tls, zFile, mode&mode_t(0777)) {
 14721  					return 1
 14722  				}
 14723  			}
 14724  		} else {
 14725  			var nWrite sqlite3_int64 = int64(0)
 14726  			var z uintptr
 14727  			var rc int32 = 0
 14728  			var out uintptr = libc.Xfopen(tls, zFile, ts+4982)
 14729  			if out == uintptr(0) {
 14730  				return 1
 14731  			}
 14732  			z = sqlite3.Xsqlite3_value_blob(tls, pData)
 14733  			if z != 0 {
 14734  				var n sqlite3_int64 = sqlite3_int64(libc.Xfwrite(tls, z, uint64(1), uint64(sqlite3.Xsqlite3_value_bytes(tls, pData)), out))
 14735  				nWrite = sqlite3_int64(sqlite3.Xsqlite3_value_bytes(tls, pData))
 14736  				if nWrite != n {
 14737  					rc = 1
 14738  				}
 14739  			}
 14740  			libc.Xfclose(tls, out)
 14741  			if rc == 0 && mode != 0 && libc.Xchmod(tls, zFile, mode&mode_t(0777)) != 0 {
 14742  				rc = 1
 14743  			}
 14744  			if rc != 0 {
 14745  				return 2
 14746  			}
 14747  			sqlite3.Xsqlite3_result_int64(tls, pCtx, nWrite)
 14748  		}
 14749  	}
 14750  
 14751  	if mtime >= int64(0) {
 14752  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_usec = libc.AssignPtrInt64(bp+128+1*16+8, int64(0))
 14753  		(*timeval)(unsafe.Pointer(bp + 128)).Ftv_sec = libc.Xtime(tls, uintptr(0))
 14754  		(*timeval)(unsafe.Pointer(bp + 128 + 1*16)).Ftv_sec = mtime
 14755  		if libc.Xutimes(tls, zFile, bp+128) != 0 {
 14756  			return 1
 14757  		}
 14758  	}
 14759  
 14760  	return 0
 14761  }
 14762  
 14763  func writefileFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14764  	bp := tls.Alloc(24)
 14765  	defer tls.Free(24)
 14766  
 14767  	var zFile uintptr
 14768  	var mode mode_t = mode_t(0)
 14769  	var res int32
 14770  	var mtime sqlite3_int64 = int64(-1)
 14771  
 14772  	if argc < 2 || argc > 4 {
 14773  		sqlite3.Xsqlite3_result_error(tls, context,
 14774  			ts+4985, -1)
 14775  		return
 14776  	}
 14777  
 14778  	zFile = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14779  	if zFile == uintptr(0) {
 14780  		return
 14781  	}
 14782  	if argc >= 3 {
 14783  		mode = mode_t(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 14784  	}
 14785  	if argc == 4 {
 14786  		mtime = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 14787  	}
 14788  
 14789  	res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 14790  	if res == 1 && *(*int32)(unsafe.Pointer(libc.X__errno(tls))) == ENOENT {
 14791  		if makeDirectory(tls, zFile) == SQLITE_OK {
 14792  			res = writeFile(tls, context, zFile, *(*uintptr)(unsafe.Pointer(argv + 1*8)), mode, mtime)
 14793  		}
 14794  	}
 14795  
 14796  	if argc > 2 && res != 0 {
 14797  		if mode&mode_t(0170000) == mode_t(0120000) {
 14798  			ctxErrorMsg(tls, context, ts+5035, libc.VaList(bp, zFile))
 14799  		} else if mode&mode_t(0170000) == mode_t(0040000) {
 14800  			ctxErrorMsg(tls, context, ts+5064, libc.VaList(bp+8, zFile))
 14801  		} else {
 14802  			ctxErrorMsg(tls, context, ts+5095, libc.VaList(bp+16, zFile))
 14803  		}
 14804  	}
 14805  }
 14806  
 14807  func lsModeFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 14808  	bp := tls.Alloc(16)
 14809  	defer tls.Free(16)
 14810  
 14811  	var i int32
 14812  	var iMode int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 14813  
 14814  	_ = argc
 14815  	if iMode&0170000 == 0120000 {
 14816  		*(*int8)(unsafe.Pointer(bp)) = int8('l')
 14817  	} else if iMode&0170000 == 0100000 {
 14818  		*(*int8)(unsafe.Pointer(bp)) = int8('-')
 14819  	} else if iMode&0170000 == 0040000 {
 14820  		*(*int8)(unsafe.Pointer(bp)) = int8('d')
 14821  	} else {
 14822  		*(*int8)(unsafe.Pointer(bp)) = int8('?')
 14823  	}
 14824  	for i = 0; i < 3; i++ {
 14825  		var m int32 = iMode >> ((2 - i) * 3)
 14826  		var a uintptr = bp + uintptr(1+i*3)
 14827  		*(*int8)(unsafe.Pointer(a)) = func() int8 {
 14828  			if m&0x4 != 0 {
 14829  				return int8('r')
 14830  			}
 14831  			return int8('-')
 14832  		}()
 14833  		*(*int8)(unsafe.Pointer(a + 1)) = func() int8 {
 14834  			if m&0x2 != 0 {
 14835  				return int8('w')
 14836  			}
 14837  			return int8('-')
 14838  		}()
 14839  		*(*int8)(unsafe.Pointer(a + 2)) = func() int8 {
 14840  			if m&0x1 != 0 {
 14841  				return int8('x')
 14842  			}
 14843  			return int8('-')
 14844  		}()
 14845  	}
 14846  	*(*int8)(unsafe.Pointer(bp + 10)) = int8(0)
 14847  	sqlite3.Xsqlite3_result_text(tls, context, bp, -1, libc.UintptrFromInt32(-1))
 14848  }
 14849  
 14850  type fsdir_cursor1 = struct {
 14851  	Fbase        sqlite3_vtab_cursor
 14852  	FnLvl        int32
 14853  	FiLvl        int32
 14854  	FaLvl        uintptr
 14855  	FzBase       uintptr
 14856  	FnBase       int32
 14857  	F__ccgo_pad1 [4]byte
 14858  	FsStat       struct {
 14859  		Fst_mode  mode_t
 14860  		Fst_dev   dev_t
 14861  		Fst_ino   ino_t
 14862  		Fst_nlink nlink_t
 14863  		Fst_uid   uid_t
 14864  		Fst_gid   gid_t
 14865  		Fst_rdev  dev_t
 14866  		Fst_atim  struct {
 14867  			Ftv_sec  time_t
 14868  			Ftv_nsec int64
 14869  		}
 14870  		Fst_mtim struct {
 14871  			Ftv_sec  time_t
 14872  			Ftv_nsec int64
 14873  		}
 14874  		Fst_ctim struct {
 14875  			Ftv_sec  time_t
 14876  			Ftv_nsec int64
 14877  		}
 14878  		Fst_size       off_t
 14879  		Fst_blocks     blkcnt_t
 14880  		Fst_blksize    blksize_t
 14881  		Fst_flags      u_int32_t
 14882  		Fst_gen        u_int32_t
 14883  		F__ccgo_pad1   [4]byte
 14884  		F__st_birthtim struct {
 14885  			Ftv_sec  time_t
 14886  			Ftv_nsec int64
 14887  		}
 14888  	}
 14889  	FzPath  uintptr
 14890  	FiRowid sqlite3_int64
 14891  }
 14892  
 14893  type fsdir_cursor = fsdir_cursor1
 14894  type FsdirLevel1 = struct {
 14895  	FpDir uintptr
 14896  	FzDir uintptr
 14897  }
 14898  
 14899  type FsdirLevel = FsdirLevel1
 14900  
 14901  type fsdir_tab1 = struct{ Fbase sqlite3_vtab }
 14902  
 14903  type fsdir_tab = fsdir_tab1
 14904  
 14905  func fsdirConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 14906  	var pNew uintptr = uintptr(0)
 14907  	var rc int32
 14908  	_ = pAux
 14909  	_ = argc
 14910  	_ = argv
 14911  	_ = pzErr
 14912  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5120)
 14913  	if rc == SQLITE_OK {
 14914  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_tab{})))
 14915  		if pNew == uintptr(0) {
 14916  			return SQLITE_NOMEM
 14917  		}
 14918  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fsdir_tab{})))
 14919  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_DIRECTONLY, 0)
 14920  	}
 14921  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 14922  	return rc
 14923  }
 14924  
 14925  func fsdirDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 14926  	sqlite3.Xsqlite3_free(tls, pVtab)
 14927  	return SQLITE_OK
 14928  }
 14929  
 14930  func fsdirOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 14931  	var pCur uintptr
 14932  	_ = p
 14933  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fsdir_cursor{})))
 14934  	if pCur == uintptr(0) {
 14935  		return SQLITE_NOMEM
 14936  	}
 14937  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fsdir_cursor{})))
 14938  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 14939  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 14940  	return SQLITE_OK
 14941  }
 14942  
 14943  func fsdirResetCursor(tls *libc.TLS, pCur uintptr) {
 14944  	var i int32
 14945  	for i = 0; i <= (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl; i++ {
 14946  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(i)*16
 14947  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir != 0 {
 14948  			libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 14949  		}
 14950  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 14951  	}
 14952  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 14953  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl)
 14954  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = uintptr(0)
 14955  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 14956  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = uintptr(0)
 14957  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = 0
 14958  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = 0
 14959  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = -1
 14960  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 14961  }
 14962  
 14963  func fsdirClose(tls *libc.TLS, cur uintptr) int32 {
 14964  	var pCur uintptr = cur
 14965  
 14966  	fsdirResetCursor(tls, pCur)
 14967  	sqlite3.Xsqlite3_free(tls, pCur)
 14968  	return SQLITE_OK
 14969  }
 14970  
 14971  func fsdirSetErrmsg(tls *libc.TLS, pCur uintptr, zFmt uintptr, va uintptr) {
 14972  	var ap va_list
 14973  	_ = ap
 14974  	ap = va
 14975  	(*sqlite3_vtab)(unsafe.Pointer((*fsdir_cursor)(unsafe.Pointer(pCur)).Fbase.FpVtab)).FzErrMsg = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 14976  	_ = ap
 14977  }
 14978  
 14979  func fsdirNext(tls *libc.TLS, cur uintptr) int32 {
 14980  	bp := tls.Alloc(32)
 14981  	defer tls.Free(32)
 14982  
 14983  	var pCur uintptr = cur
 14984  	var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 14985  
 14986  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid++
 14987  	if m&mode_t(0170000) == mode_t(0040000) {
 14988  		var iNew int32 = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl + 1
 14989  		var pLvl uintptr
 14990  		if iNew >= (*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl {
 14991  			var nNew int32 = iNew + 1
 14992  			var nByte sqlite3_int64 = sqlite3_int64(uint64(nNew) * uint64(unsafe.Sizeof(FsdirLevel{})))
 14993  			var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl, uint64(nByte))
 14994  			if aNew == uintptr(0) {
 14995  				return SQLITE_NOMEM
 14996  			}
 14997  			libc.Xmemset(tls, aNew+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl)*16, 0, uint64(unsafe.Sizeof(FsdirLevel{}))*uint64(nNew-(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl))
 14998  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl = aNew
 14999  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FnLvl = nNew
 15000  		}
 15001  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl = iNew
 15002  		pLvl = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr(iNew)*16
 15003  
 15004  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath
 15005  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15006  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = libc.Xopendir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15007  		if (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir == uintptr(0) {
 15008  			fsdirSetErrmsg(tls, pCur, ts+5180, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15009  			return SQLITE_ERROR
 15010  		}
 15011  	}
 15012  
 15013  	for (*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl >= 0 {
 15014  		var pLvl uintptr = (*fsdir_cursor)(unsafe.Pointer(pCur)).FaLvl + uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl)*16
 15015  		var pEntry uintptr = libc.Xreaddir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15016  		if pEntry != 0 {
 15017  			if int32(*(*int8)(unsafe.Pointer(pEntry + 24))) == '.' {
 15018  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == '.' && int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 2))) == 0 {
 15019  					continue
 15020  				}
 15021  				if int32(*(*int8)(unsafe.Pointer(pEntry + 24 + 1))) == 0 {
 15022  					continue
 15023  				}
 15024  			}
 15025  			sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15026  			(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp+8, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir, pEntry+24))
 15027  			if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15028  				return SQLITE_NOMEM
 15029  			}
 15030  			if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15031  				fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15032  				return SQLITE_ERROR
 15033  			}
 15034  			return SQLITE_OK
 15035  		}
 15036  		libc.Xclosedir(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir)
 15037  		sqlite3.Xsqlite3_free(tls, (*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir)
 15038  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FpDir = uintptr(0)
 15039  		(*FsdirLevel)(unsafe.Pointer(pLvl)).FzDir = uintptr(0)
 15040  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FiLvl--
 15041  	}
 15042  
 15043  	sqlite3.Xsqlite3_free(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15044  	(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = uintptr(0)
 15045  	return SQLITE_OK
 15046  }
 15047  
 15048  func fsdirColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15049  	bp := tls.Alloc(64)
 15050  	defer tls.Free(64)
 15051  
 15052  	var pCur uintptr = cur
 15053  	switch i {
 15054  	case FSDIR_COLUMN_NAME:
 15055  		{
 15056  			sqlite3.Xsqlite3_result_text(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath+uintptr((*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase), -1, libc.UintptrFromInt32(-1))
 15057  			break
 15058  
 15059  		}
 15060  
 15061  	case FSDIR_COLUMN_MODE:
 15062  		sqlite3.Xsqlite3_result_int64(tls, ctx, int64((*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode))
 15063  		break
 15064  
 15065  	case FSDIR_COLUMN_MTIME:
 15066  		sqlite3.Xsqlite3_result_int64(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mtim.Ftv_sec)
 15067  		break
 15068  
 15069  	case FSDIR_COLUMN_DATA:
 15070  		{
 15071  			var m mode_t = (*fsdir_cursor)(unsafe.Pointer(pCur)).FsStat.Fst_mode
 15072  			if m&mode_t(0170000) == mode_t(0040000) {
 15073  				sqlite3.Xsqlite3_result_null(tls, ctx)
 15074  			} else if m&mode_t(0170000) == mode_t(0120000) {
 15075  				var aBuf uintptr = bp
 15076  				var nBuf sqlite3_int64 = int64(64)
 15077  				var n int32
 15078  
 15079  				for 1 != 0 {
 15080  					n = int32(libc.Xreadlink(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, aBuf, uint64(nBuf)))
 15081  					if sqlite3_int64(n) < nBuf {
 15082  						break
 15083  					}
 15084  					if aBuf != bp {
 15085  						sqlite3.Xsqlite3_free(tls, aBuf)
 15086  					}
 15087  					nBuf = nBuf * int64(2)
 15088  					aBuf = sqlite3.Xsqlite3_malloc64(tls, uint64(nBuf))
 15089  					if aBuf == uintptr(0) {
 15090  						sqlite3.Xsqlite3_result_error_nomem(tls, ctx)
 15091  						return SQLITE_NOMEM
 15092  					}
 15093  				}
 15094  
 15095  				sqlite3.Xsqlite3_result_text(tls, ctx, aBuf, n, libc.UintptrFromInt32(-1))
 15096  				if aBuf != bp {
 15097  					sqlite3.Xsqlite3_free(tls, aBuf)
 15098  				}
 15099  			} else {
 15100  				readFileContents(tls, ctx, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath)
 15101  			}
 15102  
 15103  		}
 15104  		fallthrough
 15105  	case FSDIR_COLUMN_PATH:
 15106  		fallthrough
 15107  	default:
 15108  		{
 15109  			break
 15110  
 15111  		}
 15112  	}
 15113  	return SQLITE_OK
 15114  }
 15115  
 15116  func fsdirRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15117  	var pCur uintptr = cur
 15118  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fsdir_cursor)(unsafe.Pointer(pCur)).FiRowid
 15119  	return SQLITE_OK
 15120  }
 15121  
 15122  func fsdirEof(tls *libc.TLS, cur uintptr) int32 {
 15123  	var pCur uintptr = cur
 15124  	return libc.Bool32((*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0))
 15125  }
 15126  
 15127  func fsdirFilter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15128  	bp := tls.Alloc(32)
 15129  	defer tls.Free(32)
 15130  
 15131  	var zDir uintptr = uintptr(0)
 15132  	var pCur uintptr = cur
 15133  	_ = idxStr
 15134  	fsdirResetCursor(tls, pCur)
 15135  
 15136  	if idxNum == 0 {
 15137  		fsdirSetErrmsg(tls, pCur, ts+5233, 0)
 15138  		return SQLITE_ERROR
 15139  	}
 15140  
 15141  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15142  	if zDir == uintptr(0) {
 15143  		fsdirSetErrmsg(tls, pCur, ts+5275, 0)
 15144  		return SQLITE_ERROR
 15145  	}
 15146  	if argc == 2 {
 15147  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 15148  	}
 15149  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase != 0 {
 15150  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FnBase = int32(libc.Xstrlen(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase)) + 1
 15151  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts+5206, libc.VaList(bp, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzBase, zDir))
 15152  	} else {
 15153  		(*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zDir))
 15154  	}
 15155  
 15156  	if (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath == uintptr(0) {
 15157  		return SQLITE_NOMEM
 15158  	}
 15159  	if fileLinkStat(tls, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath, pCur+40) != 0 {
 15160  		fsdirSetErrmsg(tls, pCur, ts+5212, libc.VaList(bp+24, (*fsdir_cursor)(unsafe.Pointer(pCur)).FzPath))
 15161  		return SQLITE_ERROR
 15162  	}
 15163  
 15164  	return SQLITE_OK
 15165  }
 15166  
 15167  func fsdirBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15168  	var i int32
 15169  	var idxPath int32 = -1
 15170  	var idxDir int32 = -1
 15171  	var seenPath int32 = 0
 15172  	var seenDir int32 = 0
 15173  	var pConstraint uintptr
 15174  
 15175  	_ = tab
 15176  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15177  	i = 0
 15178  __1:
 15179  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15180  		goto __3
 15181  	}
 15182  	{
 15183  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 15184  			goto __2
 15185  		}
 15186  		switch (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn {
 15187  		case FSDIR_COLUMN_PATH:
 15188  			{
 15189  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15190  					idxPath = i
 15191  					seenPath = 0
 15192  				} else if idxPath < 0 {
 15193  					seenPath = 1
 15194  				}
 15195  				break
 15196  
 15197  			}
 15198  		case FSDIR_COLUMN_DIR:
 15199  			{
 15200  				if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable != 0 {
 15201  					idxDir = i
 15202  					seenDir = 0
 15203  				} else if idxDir < 0 {
 15204  					seenDir = 1
 15205  				}
 15206  				break
 15207  
 15208  			}
 15209  		}
 15210  
 15211  	}
 15212  	goto __2
 15213  __2:
 15214  	i++
 15215  	pConstraint += 12
 15216  	goto __1
 15217  	goto __3
 15218  __3:
 15219  	;
 15220  	if seenPath != 0 || seenDir != 0 {
 15221  		return SQLITE_CONSTRAINT
 15222  	}
 15223  
 15224  	if idxPath < 0 {
 15225  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 15226  
 15227  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(0x7fffffff)
 15228  	} else {
 15229  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).Fomit = uint8(1)
 15230  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxPath)*8)).FargvIndex = 1
 15231  		if idxDir >= 0 {
 15232  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).Fomit = uint8(1)
 15233  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(idxDir)*8)).FargvIndex = 2
 15234  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 2
 15235  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 15236  		} else {
 15237  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 15238  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100.0
 15239  		}
 15240  	}
 15241  
 15242  	return SQLITE_OK
 15243  }
 15244  
 15245  func fsdirRegister(tls *libc.TLS, db uintptr) int32 {
 15246  	var rc int32 = sqlite3.Xsqlite3_create_module(tls, db, ts+5325, uintptr(unsafe.Pointer(&fsdirModule1)), uintptr(0))
 15247  	return rc
 15248  }
 15249  
 15250  var fsdirModule1 = sqlite3_module{
 15251  	FxConnect:    0,
 15252  	FxBestIndex:  0,
 15253  	FxDisconnect: 0,
 15254  	FxOpen:       0,
 15255  	FxClose:      0,
 15256  	FxFilter:     0,
 15257  	FxNext:       0,
 15258  	FxEof:        0,
 15259  	FxColumn:     0,
 15260  	FxRowid:      0,
 15261  }
 15262  
 15263  func sqlite3_fileio_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 15264  	var rc int32 = SQLITE_OK
 15265  	_ = pApi
 15266  
 15267  	_ = pzErrMsg
 15268  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5331, 1,
 15269  		SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15270  		*(*uintptr)(unsafe.Pointer(&struct {
 15271  			f func(*libc.TLS, uintptr, int32, uintptr)
 15272  		}{readfileFunc})), uintptr(0), uintptr(0))
 15273  	if rc == SQLITE_OK {
 15274  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5340, -1,
 15275  			SQLITE_UTF8|SQLITE_DIRECTONLY, uintptr(0),
 15276  			*(*uintptr)(unsafe.Pointer(&struct {
 15277  				f func(*libc.TLS, uintptr, int32, uintptr)
 15278  			}{writefileFunc})), uintptr(0), uintptr(0))
 15279  	}
 15280  	if rc == SQLITE_OK {
 15281  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5350, 1, SQLITE_UTF8, uintptr(0),
 15282  			*(*uintptr)(unsafe.Pointer(&struct {
 15283  				f func(*libc.TLS, uintptr, int32, uintptr)
 15284  			}{lsModeFunc})), uintptr(0), uintptr(0))
 15285  	}
 15286  	if rc == SQLITE_OK {
 15287  		rc = fsdirRegister(tls, db)
 15288  	}
 15289  	return rc
 15290  }
 15291  
 15292  type fuzzer_vtab1 = struct {
 15293  	Fbase        sqlite3_vtab
 15294  	FzClassName  uintptr
 15295  	FpRule       uintptr
 15296  	FnCursor     int32
 15297  	F__ccgo_pad1 [4]byte
 15298  }
 15299  
 15300  type fuzzer_vtab = fuzzer_vtab1
 15301  type fuzzer_cursor1 = struct {
 15302  	Fbase        sqlite3_vtab_cursor
 15303  	FiRowid      sqlite3_int64
 15304  	FpVtab       uintptr
 15305  	FrLimit      fuzzer_cost
 15306  	F__ccgo_pad1 [4]byte
 15307  	FpStem       uintptr
 15308  	FpDone       uintptr
 15309  	FaQueue      [20]uintptr
 15310  	FmxQueue     int32
 15311  	F__ccgo_pad2 [4]byte
 15312  	FzBuf        uintptr
 15313  	FnBuf        int32
 15314  	FnStem       int32
 15315  	FiRuleset    int32
 15316  	F__ccgo_pad3 [4]byte
 15317  	FnullRule    fuzzer_rule
 15318  	FapHash      [4001]uintptr
 15319  }
 15320  
 15321  type fuzzer_cursor = fuzzer_cursor1
 15322  type fuzzer_rule1 = struct {
 15323  	FpNext       uintptr
 15324  	FzFrom       uintptr
 15325  	FrCost       fuzzer_cost
 15326  	FnFrom       fuzzer_len
 15327  	FnTo         fuzzer_len
 15328  	F__ccgo_pad1 [2]byte
 15329  	FiRuleset    fuzzer_ruleid
 15330  	FzTo         [4]int8
 15331  }
 15332  
 15333  type fuzzer_rule = fuzzer_rule1
 15334  type fuzzer_stem1 = struct {
 15335  	FzBasis      uintptr
 15336  	FpRule       uintptr
 15337  	FpNext       uintptr
 15338  	FpHash       uintptr
 15339  	FrBaseCost   fuzzer_cost
 15340  	FrCostX      fuzzer_cost
 15341  	FnBasis      fuzzer_len
 15342  	Fn           fuzzer_len
 15343  	F__ccgo_pad1 [6]byte
 15344  }
 15345  
 15346  type fuzzer_stem = fuzzer_stem1
 15347  
 15348  type fuzzer_cost = int32
 15349  type fuzzer_len = int8
 15350  type fuzzer_ruleid = int32
 15351  
 15352  func fuzzerMergeRules(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15353  	bp := tls.Alloc(32)
 15354  	defer tls.Free(32)
 15355  
 15356  	var pTail uintptr
 15357  
 15358  	pTail = bp
 15359  	for pA != 0 && pB != 0 {
 15360  		if (*fuzzer_rule)(unsafe.Pointer(pA)).FrCost <= (*fuzzer_rule)(unsafe.Pointer(pB)).FrCost {
 15361  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15362  			pTail = pA
 15363  			pA = (*fuzzer_rule)(unsafe.Pointer(pA)).FpNext
 15364  		} else {
 15365  			(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15366  			pTail = pB
 15367  			pB = (*fuzzer_rule)(unsafe.Pointer(pB)).FpNext
 15368  		}
 15369  	}
 15370  	if pA == uintptr(0) {
 15371  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pB
 15372  	} else {
 15373  		(*fuzzer_rule)(unsafe.Pointer(pTail)).FpNext = pA
 15374  	}
 15375  	return (*fuzzer_rule)(unsafe.Pointer(bp)).FpNext
 15376  }
 15377  
 15378  func fuzzerLoadOneRule(tls *libc.TLS, p uintptr, pStmt uintptr, ppRule uintptr, pzErr uintptr) int32 {
 15379  	bp := tls.Alloc(48)
 15380  	defer tls.Free(48)
 15381  
 15382  	var iRuleset sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 15383  	var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 15384  	var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 2)
 15385  	var nCost int32 = sqlite3.Xsqlite3_column_int(tls, pStmt, 3)
 15386  
 15387  	var rc int32 = SQLITE_OK
 15388  	var nFrom int32
 15389  	var nTo int32
 15390  	var pRule uintptr = uintptr(0)
 15391  
 15392  	if zFrom == uintptr(0) {
 15393  		zFrom = ts + 584
 15394  	}
 15395  	if zTo == uintptr(0) {
 15396  		zTo = ts + 584
 15397  	}
 15398  	nFrom = int32(libc.Xstrlen(tls, zFrom))
 15399  	nTo = int32(libc.Xstrlen(tls, zTo))
 15400  
 15401  	if libc.Xstrcmp(tls, zFrom, zTo) == 0 {
 15402  		*(*uintptr)(unsafe.Pointer(ppRule)) = uintptr(0)
 15403  		return SQLITE_OK
 15404  	}
 15405  
 15406  	if nCost <= 0 || nCost > FUZZER_MX_COST {
 15407  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3304,
 15408  			libc.VaList(bp, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_COST))
 15409  		rc = SQLITE_ERROR
 15410  	} else if nFrom > FUZZER_MX_LENGTH || nTo > FUZZER_MX_LENGTH {
 15411  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3338,
 15412  			libc.VaList(bp+16, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_LENGTH))
 15413  		rc = SQLITE_ERROR
 15414  	} else if iRuleset < int64(0) || iRuleset > int64(FUZZER_MX_RULEID) {
 15415  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+5357,
 15416  			libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, FUZZER_MX_RULEID))
 15417  		rc = SQLITE_ERROR
 15418  	} else {
 15419  		pRule = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_rule{}))+uint64(nFrom)+uint64(nTo))
 15420  		if pRule == uintptr(0) {
 15421  			rc = SQLITE_NOMEM
 15422  		} else {
 15423  			libc.Xmemset(tls, pRule, 0, uint64(unsafe.Sizeof(fuzzer_rule{})))
 15424  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom = pRule + 28
 15425  			*(*uintptr)(unsafe.Pointer(pRule + 8)) += uintptr(nTo + 1)
 15426  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom = fuzzer_len(nFrom)
 15427  			libc.Xmemcpy(tls, (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, zFrom, uint64(nFrom+1))
 15428  			libc.Xmemcpy(tls, pRule+28, zTo, uint64(nTo+1))
 15429  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo = fuzzer_len(nTo)
 15430  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FrCost = nCost
 15431  			(*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset = int32(iRuleset)
 15432  		}
 15433  	}
 15434  
 15435  	*(*uintptr)(unsafe.Pointer(ppRule)) = pRule
 15436  	return rc
 15437  }
 15438  
 15439  func fuzzerLoadRules(tls *libc.TLS, db uintptr, p uintptr, zDb uintptr, zData uintptr, pzErr uintptr) int32 {
 15440  	bp := tls.Alloc(192)
 15441  	defer tls.Free(192)
 15442  
 15443  	var rc int32 = SQLITE_OK
 15444  	var zSql uintptr
 15445  	var pHead uintptr = uintptr(0)
 15446  
 15447  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+3407, libc.VaList(bp, zDb, zData))
 15448  	if zSql == uintptr(0) {
 15449  		rc = SQLITE_NOMEM
 15450  	} else {
 15451  		var rc2 int32
 15452  		*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 15453  		rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+56, uintptr(0))
 15454  		if rc != SQLITE_OK {
 15455  			*(*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)))
 15456  		} else if sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) != 4 {
 15457  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+3434,
 15458  				libc.VaList(bp+32, (*fuzzer_vtab)(unsafe.Pointer(p)).FzClassName, zData, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 15459  			rc = SQLITE_ERROR
 15460  		} else {
 15461  			for rc == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 56))) {
 15462  				*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 15463  				rc = fuzzerLoadOneRule(tls, p, *(*uintptr)(unsafe.Pointer(bp + 56)), bp+64, pzErr)
 15464  				if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 15465  					(*fuzzer_rule)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 64)))).FpNext = pHead
 15466  					pHead = *(*uintptr)(unsafe.Pointer(bp + 64))
 15467  				}
 15468  			}
 15469  		}
 15470  		rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 15471  		if rc == SQLITE_OK {
 15472  			rc = rc2
 15473  		}
 15474  	}
 15475  	sqlite3.Xsqlite3_free(tls, zSql)
 15476  
 15477  	if rc == SQLITE_OK {
 15478  		var i uint32
 15479  		var pX uintptr
 15480  
 15481  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15482  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15483  		}
 15484  		for libc.AssignUintptr(&pX, pHead) != uintptr(0) {
 15485  			pHead = (*fuzzer_rule)(unsafe.Pointer(pX)).FpNext
 15486  			(*fuzzer_rule)(unsafe.Pointer(pX)).FpNext = uintptr(0)
 15487  			for i = uint32(0); *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) != 0 && uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0)))-uint64(1); i++ {
 15488  				pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15489  				*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = uintptr(0)
 15490  			}
 15491  			*(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)) = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15492  		}
 15493  		pX = *(*uintptr)(unsafe.Pointer(bp + 72))
 15494  		i = uint32(1)
 15495  		for ; uint64(i) < uint64(unsafe.Sizeof([15]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 15496  			pX = fuzzerMergeRules(tls, *(*uintptr)(unsafe.Pointer(bp + 72 + uintptr(i)*8)), pX)
 15497  		}
 15498  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = fuzzerMergeRules(tls, (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule, pX)
 15499  	} else {
 15500  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = pHead
 15501  	}
 15502  
 15503  	return rc
 15504  }
 15505  
 15506  func fuzzerDequote(tls *libc.TLS, zIn uintptr) uintptr {
 15507  	var nIn sqlite3_int64
 15508  	var zOut uintptr
 15509  
 15510  	nIn = sqlite3_int64(libc.Xstrlen(tls, zIn))
 15511  	zOut = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+int64(1)))
 15512  	if zOut != 0 {
 15513  		var q int8 = *(*int8)(unsafe.Pointer(zIn))
 15514  
 15515  		if int32(q) != '[' && int32(q) != '\'' && int32(q) != '"' && int32(q) != '`' {
 15516  			libc.Xmemcpy(tls, zOut, zIn, size_t(nIn+int64(1)))
 15517  		} else {
 15518  			var iOut int32 = 0
 15519  			var iIn int32
 15520  
 15521  			if int32(q) == '[' {
 15522  				q = int8(']')
 15523  			}
 15524  			for iIn = 1; sqlite3_int64(iIn) < nIn; iIn++ {
 15525  				if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))) == int32(q) {
 15526  					iIn++
 15527  				}
 15528  				*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(zIn + uintptr(iIn)))
 15529  			}
 15530  		}
 15531  
 15532  	}
 15533  	return zOut
 15534  }
 15535  
 15536  func fuzzerDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 15537  	var p uintptr = pVtab
 15538  
 15539  	for (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule != 0 {
 15540  		var pRule uintptr = (*fuzzer_vtab)(unsafe.Pointer(p)).FpRule
 15541  		(*fuzzer_vtab)(unsafe.Pointer(p)).FpRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15542  		sqlite3.Xsqlite3_free(tls, pRule)
 15543  	}
 15544  	sqlite3.Xsqlite3_free(tls, p)
 15545  	return SQLITE_OK
 15546  }
 15547  
 15548  func fuzzerConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 15549  	bp := tls.Alloc(8)
 15550  	defer tls.Free(8)
 15551  
 15552  	var rc int32 = SQLITE_OK
 15553  	var pNew uintptr = uintptr(0)
 15554  	var zModule uintptr = *(*uintptr)(unsafe.Pointer(argv))
 15555  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 15556  
 15557  	if argc != 4 {
 15558  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 15559  			ts+5394, libc.VaList(bp, zModule))
 15560  		rc = SQLITE_ERROR
 15561  	} else {
 15562  		var nModule sqlite3_int64
 15563  
 15564  		nModule = sqlite3_int64(libc.Xstrlen(tls, zModule))
 15565  		pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_vtab{}))+uint64(nModule)+uint64(1))
 15566  		if pNew == uintptr(0) {
 15567  			rc = SQLITE_NOMEM
 15568  		} else {
 15569  			var zTab uintptr
 15570  
 15571  			libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_vtab{})))
 15572  			(*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName = pNew + 1*48
 15573  			libc.Xmemcpy(tls, (*fuzzer_vtab)(unsafe.Pointer(pNew)).FzClassName, zModule, size_t(nModule+int64(1)))
 15574  
 15575  			zTab = fuzzerDequote(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 15576  			if zTab == uintptr(0) {
 15577  				rc = SQLITE_NOMEM
 15578  			} else {
 15579  				rc = fuzzerLoadRules(tls, db, pNew, zDb, zTab, pzErr)
 15580  				sqlite3.Xsqlite3_free(tls, zTab)
 15581  			}
 15582  
 15583  			if rc == SQLITE_OK {
 15584  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+5445)
 15585  			}
 15586  			if rc != SQLITE_OK {
 15587  				fuzzerDisconnect(tls, pNew)
 15588  				pNew = uintptr(0)
 15589  			} else {
 15590  				sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 15591  			}
 15592  		}
 15593  	}
 15594  
 15595  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 15596  	return rc
 15597  }
 15598  
 15599  func fuzzerOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 15600  	var p uintptr = pVTab
 15601  	var pCur uintptr
 15602  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(fuzzer_cursor{})))
 15603  	if pCur == uintptr(0) {
 15604  		return SQLITE_NOMEM
 15605  	}
 15606  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(fuzzer_cursor{})))
 15607  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab = p
 15608  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 15609  	(*fuzzer_vtab)(unsafe.Pointer(p)).FnCursor++
 15610  	return SQLITE_OK
 15611  }
 15612  
 15613  func fuzzerClearStemList(tls *libc.TLS, pStem uintptr) {
 15614  	for pStem != 0 {
 15615  		var pNext uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext
 15616  		sqlite3.Xsqlite3_free(tls, pStem)
 15617  		pStem = pNext
 15618  	}
 15619  }
 15620  
 15621  func fuzzerClearCursor(tls *libc.TLS, pCur uintptr, clearHash int32) {
 15622  	var i int32
 15623  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 15624  	fuzzerClearStemList(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone)
 15625  	for i = 0; i < FUZZER_NQUEUE; i++ {
 15626  		fuzzerClearStemList(tls, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 15627  	}
 15628  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15629  	if clearHash != 0 && (*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem != 0 {
 15630  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = 0
 15631  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15632  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = uintptr(0)
 15633  		libc.Xmemset(tls, pCur+48, 0, uint64(unsafe.Sizeof([20]uintptr{})))
 15634  		libc.Xmemset(tls, pCur+272, 0, uint64(unsafe.Sizeof([4001]uintptr{})))
 15635  	}
 15636  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem = 0
 15637  }
 15638  
 15639  func fuzzerClose(tls *libc.TLS, cur uintptr) int32 {
 15640  	var pCur uintptr = cur
 15641  	fuzzerClearCursor(tls, pCur, 0)
 15642  	sqlite3.Xsqlite3_free(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 15643  	(*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FnCursor--
 15644  	sqlite3.Xsqlite3_free(tls, pCur)
 15645  	return SQLITE_OK
 15646  }
 15647  
 15648  func fuzzerRender(tls *libc.TLS, pStem uintptr, pzBuf uintptr, pnBuf uintptr) int32 {
 15649  	var pRule uintptr = (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule
 15650  	var n int32
 15651  	var z uintptr
 15652  
 15653  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis) + int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo) - int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)
 15654  	if *(*int32)(unsafe.Pointer(pnBuf)) < n+1 {
 15655  		*(*uintptr)(unsafe.Pointer(pzBuf)) = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(pzBuf)), n+100)
 15656  		if *(*uintptr)(unsafe.Pointer(pzBuf)) == uintptr(0) {
 15657  			return SQLITE_NOMEM
 15658  		}
 15659  		*(*int32)(unsafe.Pointer(pnBuf)) = n + 100
 15660  	}
 15661  	n = int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn)
 15662  	z = *(*uintptr)(unsafe.Pointer(pzBuf))
 15663  	if n < 0 {
 15664  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)+1))
 15665  	} else {
 15666  		libc.Xmemcpy(tls, z, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis, uint64(n))
 15667  		libc.Xmemcpy(tls, z+uintptr(n), pRule+28, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnTo))
 15668  		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)),
 15669  			uint64(int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-n-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)+1))
 15670  	}
 15671  
 15672  	return SQLITE_OK
 15673  }
 15674  
 15675  func fuzzerHash(tls *libc.TLS, z uintptr) uint32 {
 15676  	var h uint32 = uint32(0)
 15677  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 15678  		h = h<<3 ^ h>>29 ^ uint32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 15679  	}
 15680  	return h % uint32(FUZZER_HASH)
 15681  }
 15682  
 15683  func fuzzerCost(tls *libc.TLS, pStem uintptr) fuzzer_cost {
 15684  	return libc.AssignPtrInt32(pStem+36, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrBaseCost+(*fuzzer_rule)(unsafe.Pointer((*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule)).FrCost)
 15685  }
 15686  
 15687  func fuzzerSeen(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 15688  	var h uint32
 15689  	var pLookup uintptr
 15690  
 15691  	if fuzzerRender(tls, pStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 15692  		return -1
 15693  	}
 15694  	h = fuzzerHash(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf)
 15695  	pLookup = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 15696  	for pLookup != 0 && libc.Xstrcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pLookup)).FzBasis, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf) != 0 {
 15697  		pLookup = (*fuzzer_stem)(unsafe.Pointer(pLookup)).FpHash
 15698  	}
 15699  	return libc.Bool32(pLookup != uintptr(0))
 15700  }
 15701  
 15702  func fuzzerSkipRule(tls *libc.TLS, pRule uintptr, pStem uintptr, iRuleset int32) int32 {
 15703  	return libc.Bool32(pRule != 0 && ((*fuzzer_rule)(unsafe.Pointer(pRule)).FiRuleset != iRuleset ||
 15704  		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))
 15705  }
 15706  
 15707  func fuzzerAdvance(tls *libc.TLS, pCur uintptr, pStem uintptr) int32 {
 15708  	var pRule uintptr
 15709  	for libc.AssignUintptr(&pRule, (*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule) != uintptr(0) {
 15710  		for int32((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn) < int32((*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis)-int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) {
 15711  			(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn++
 15712  			if int32((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom) == 0 ||
 15713  				libc.Xmemcmp(tls, (*fuzzer_stem)(unsafe.Pointer(pStem)).FzBasis+uintptr((*fuzzer_stem)(unsafe.Pointer(pStem)).Fn), (*fuzzer_rule)(unsafe.Pointer(pRule)).FzFrom, uint64((*fuzzer_rule)(unsafe.Pointer(pRule)).FnFrom)) == 0 {
 15714  				var rc int32 = fuzzerSeen(tls, pCur, pStem)
 15715  				if rc < 0 {
 15716  					return -1
 15717  				}
 15718  				if rc == 0 {
 15719  					fuzzerCost(tls, pStem)
 15720  					return 1
 15721  				}
 15722  			}
 15723  		}
 15724  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = int8(-1)
 15725  		for __ccgo := true; __ccgo; __ccgo = fuzzerSkipRule(tls, pRule, pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 15726  			pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15727  		}
 15728  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pRule
 15729  		if pRule != 0 && fuzzerCost(tls, pStem) > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit {
 15730  			(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = uintptr(0)
 15731  		}
 15732  	}
 15733  	return 0
 15734  }
 15735  
 15736  func fuzzerMergeStems(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 15737  	bp := tls.Alloc(48)
 15738  	defer tls.Free(48)
 15739  
 15740  	var pTail uintptr
 15741  
 15742  	pTail = bp
 15743  	for pA != 0 && pB != 0 {
 15744  		if (*fuzzer_stem)(unsafe.Pointer(pA)).FrCostX <= (*fuzzer_stem)(unsafe.Pointer(pB)).FrCostX {
 15745  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 15746  			pTail = pA
 15747  			pA = (*fuzzer_stem)(unsafe.Pointer(pA)).FpNext
 15748  		} else {
 15749  			(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 15750  			pTail = pB
 15751  			pB = (*fuzzer_stem)(unsafe.Pointer(pB)).FpNext
 15752  		}
 15753  	}
 15754  	if pA == uintptr(0) {
 15755  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pB
 15756  	} else {
 15757  		(*fuzzer_stem)(unsafe.Pointer(pTail)).FpNext = pA
 15758  	}
 15759  	return (*fuzzer_stem)(unsafe.Pointer(bp)).FpNext
 15760  }
 15761  
 15762  func fuzzerLowestCostStem(tls *libc.TLS, pCur uintptr) uintptr {
 15763  	var pBest uintptr
 15764  	var pX uintptr
 15765  	var iBest int32
 15766  	var i int32
 15767  
 15768  	if (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem == uintptr(0) {
 15769  		iBest = -1
 15770  		pBest = uintptr(0)
 15771  		for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 15772  			pX = *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8))
 15773  			if pX == uintptr(0) {
 15774  				continue
 15775  			}
 15776  			if pBest == uintptr(0) || (*fuzzer_stem)(unsafe.Pointer(pBest)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX {
 15777  				pBest = pX
 15778  				iBest = i
 15779  			}
 15780  		}
 15781  		if pBest != 0 {
 15782  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(iBest)*8)) = (*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext
 15783  			(*fuzzer_stem)(unsafe.Pointer(pBest)).FpNext = uintptr(0)
 15784  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pBest
 15785  		}
 15786  	}
 15787  	return (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 15788  }
 15789  
 15790  func fuzzerInsert(tls *libc.TLS, pCur uintptr, pNew uintptr) uintptr {
 15791  	var pX uintptr
 15792  	var i int32
 15793  
 15794  	if libc.AssignUintptr(&pX, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) && (*fuzzer_stem)(unsafe.Pointer(pX)).FrCostX > (*fuzzer_stem)(unsafe.Pointer(pNew)).FrCostX {
 15795  		(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 15796  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = pNew
 15797  		pNew = pX
 15798  	}
 15799  
 15800  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = uintptr(0)
 15801  	pX = pNew
 15802  	for i = 0; i <= (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue; i++ {
 15803  		if *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) != 0 {
 15804  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)))
 15805  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = uintptr(0)
 15806  		} else {
 15807  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 15808  			break
 15809  		}
 15810  	}
 15811  	if i > (*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue {
 15812  		if i < FUZZER_NQUEUE {
 15813  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FmxQueue = i
 15814  			*(*uintptr)(unsafe.Pointer(pCur + 48 + uintptr(i)*8)) = pX
 15815  		} else {
 15816  			pX = fuzzerMergeStems(tls, pX, *(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)))
 15817  			*(*uintptr)(unsafe.Pointer(pCur + 48 + 19*8)) = pX
 15818  		}
 15819  	}
 15820  
 15821  	return fuzzerLowestCostStem(tls, pCur)
 15822  }
 15823  
 15824  func fuzzerNewStem(tls *libc.TLS, pCur uintptr, zWord uintptr, rBaseCost fuzzer_cost) uintptr {
 15825  	var pNew uintptr
 15826  	var pRule uintptr
 15827  	var h uint32
 15828  
 15829  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(fuzzer_stem{}))+libc.Xstrlen(tls, zWord)+uint64(1))
 15830  	if pNew == uintptr(0) {
 15831  		return uintptr(0)
 15832  	}
 15833  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(fuzzer_stem{})))
 15834  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis = pNew + 1*48
 15835  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis = fuzzer_len(libc.Xstrlen(tls, zWord))
 15836  	libc.Xmemcpy(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis, zWord, uint64(int32((*fuzzer_stem)(unsafe.Pointer(pNew)).FnBasis)+1))
 15837  	pRule = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 15838  	for fuzzerSkipRule(tls, pRule, pNew, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset) != 0 {
 15839  		pRule = (*fuzzer_rule)(unsafe.Pointer(pRule)).FpNext
 15840  	}
 15841  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpRule = pRule
 15842  	(*fuzzer_stem)(unsafe.Pointer(pNew)).Fn = int8(-1)
 15843  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FrBaseCost = libc.AssignPtrInt32(pNew+36, rBaseCost)
 15844  	h = fuzzerHash(tls, (*fuzzer_stem)(unsafe.Pointer(pNew)).FzBasis)
 15845  	(*fuzzer_stem)(unsafe.Pointer(pNew)).FpHash = *(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8))
 15846  	*(*uintptr)(unsafe.Pointer(pCur + 272 + uintptr(h)*8)) = pNew
 15847  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnStem++
 15848  	return pNew
 15849  }
 15850  
 15851  func fuzzerNext(tls *libc.TLS, cur uintptr) int32 {
 15852  	var pCur uintptr = cur
 15853  	var rc int32
 15854  	var pStem uintptr
 15855  	var pNew uintptr
 15856  
 15857  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid++
 15858  
 15859  	pStem = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem
 15860  	if (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX > 0 {
 15861  		rc = fuzzerRender(tls, pStem, pCur+216, pCur+224)
 15862  		if rc == SQLITE_NOMEM {
 15863  			return SQLITE_NOMEM
 15864  		}
 15865  		pNew = fuzzerNewStem(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, (*fuzzer_stem)(unsafe.Pointer(pStem)).FrCostX)
 15866  		if pNew != 0 {
 15867  			if fuzzerAdvance(tls, pCur, pNew) == 0 {
 15868  				(*fuzzer_stem)(unsafe.Pointer(pNew)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 15869  				(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pNew
 15870  			} else {
 15871  				if fuzzerInsert(tls, pCur, pNew) == pNew {
 15872  					return SQLITE_OK
 15873  				}
 15874  			}
 15875  		} else {
 15876  			return SQLITE_NOMEM
 15877  		}
 15878  	}
 15879  
 15880  	for libc.AssignUintptr(&pStem, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem) != uintptr(0) {
 15881  		var res int32 = fuzzerAdvance(tls, pCur, pStem)
 15882  		if res < 0 {
 15883  			return SQLITE_NOMEM
 15884  		} else if res > 0 {
 15885  			(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15886  			pStem = fuzzerInsert(tls, pCur, pStem)
 15887  			if libc.AssignInt32(&rc, fuzzerSeen(tls, pCur, pStem)) != 0 {
 15888  				if rc < 0 {
 15889  					return SQLITE_NOMEM
 15890  				}
 15891  				continue
 15892  			}
 15893  			return SQLITE_OK
 15894  		}
 15895  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = uintptr(0)
 15896  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpNext = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone
 15897  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpDone = pStem
 15898  		if fuzzerLowestCostStem(tls, pCur) != 0 {
 15899  			rc = fuzzerSeen(tls, pCur, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)
 15900  			if rc < 0 {
 15901  				return SQLITE_NOMEM
 15902  			}
 15903  			if rc == 0 {
 15904  				return SQLITE_OK
 15905  			}
 15906  		}
 15907  	}
 15908  
 15909  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15910  	return SQLITE_OK
 15911  }
 15912  
 15913  func fuzzerFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 15914  	var pCur uintptr = pVtabCursor
 15915  	var zWord uintptr = ts + 584
 15916  	var pStem uintptr
 15917  	var idx int32
 15918  
 15919  	fuzzerClearCursor(tls, pCur, 1)
 15920  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 2147483647
 15921  	idx = 0
 15922  	if idxNum&1 != 0 {
 15923  		zWord = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 15924  		idx++
 15925  	}
 15926  	if idxNum&2 != 0 {
 15927  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 15928  		idx++
 15929  	}
 15930  	if idxNum&4 != 0 {
 15931  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRuleset = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(idx)*8)))
 15932  		idx++
 15933  	}
 15934  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FpNext = (*fuzzer_vtab)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpVtab)).FpRule
 15935  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FrCost = 0
 15936  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnFrom = int8(0)
 15937  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FnTo = int8(0)
 15938  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FnullRule.FzFrom = ts + 584
 15939  	(*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 15940  
 15941  	if int32(libc.Xstrlen(tls, zWord)) < FUZZER_MX_OUTPUT_LENGTH {
 15942  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem = libc.AssignUintptr(&pStem, fuzzerNewStem(tls, pCur, zWord, 0))
 15943  		if pStem == uintptr(0) {
 15944  			return SQLITE_NOMEM
 15945  		}
 15946  		(*fuzzer_stem)(unsafe.Pointer(pStem)).FpRule = pCur + 240
 15947  		(*fuzzer_stem)(unsafe.Pointer(pStem)).Fn = (*fuzzer_stem)(unsafe.Pointer(pStem)).FnBasis
 15948  	} else {
 15949  		(*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit = 0
 15950  	}
 15951  
 15952  	return SQLITE_OK
 15953  }
 15954  
 15955  func fuzzerColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 15956  	var pCur uintptr = cur
 15957  	if i == 0 {
 15958  		if fuzzerRender(tls, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem, pCur+216, pCur+224) == SQLITE_NOMEM {
 15959  			return SQLITE_NOMEM
 15960  		}
 15961  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fuzzer_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 15962  	} else if i == 1 {
 15963  		sqlite3.Xsqlite3_result_int(tls, ctx, (*fuzzer_stem)(unsafe.Pointer((*fuzzer_cursor)(unsafe.Pointer(pCur)).FpStem)).FrCostX)
 15964  	} else {
 15965  		sqlite3.Xsqlite3_result_null(tls, ctx)
 15966  	}
 15967  	return SQLITE_OK
 15968  }
 15969  
 15970  func fuzzerRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 15971  	var pCur uintptr = cur
 15972  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*fuzzer_cursor)(unsafe.Pointer(pCur)).FiRowid
 15973  	return SQLITE_OK
 15974  }
 15975  
 15976  func fuzzerEof(tls *libc.TLS, cur uintptr) int32 {
 15977  	var pCur uintptr = cur
 15978  	return libc.Bool32((*fuzzer_cursor)(unsafe.Pointer(pCur)).FrLimit <= 0)
 15979  }
 15980  
 15981  func fuzzerBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 15982  	var iPlan int32 = 0
 15983  	var iDistTerm int32 = -1
 15984  	var iRulesetTerm int32 = -1
 15985  	var i int32
 15986  	var seenMatch int32 = 0
 15987  	var pConstraint uintptr
 15988  	var rCost float64 = 1e12
 15989  
 15990  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 15991  	i = 0
 15992  __1:
 15993  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 15994  		goto __3
 15995  	}
 15996  	{
 15997  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 15998  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 15999  			seenMatch = 1
 16000  		}
 16001  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 16002  			goto __2
 16003  		}
 16004  		if iPlan&1 == 0 &&
 16005  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 0 &&
 16006  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 16007  			iPlan = iPlan | 1
 16008  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 16009  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16010  			rCost = rCost / 1e6
 16011  		}
 16012  		if iPlan&2 == 0 &&
 16013  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 1 &&
 16014  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 16015  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 16016  			iPlan = iPlan | 2
 16017  			iDistTerm = i
 16018  			rCost = rCost / 10.0
 16019  		}
 16020  		if iPlan&4 == 0 &&
 16021  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == 2 &&
 16022  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 16023  			iPlan = iPlan | 4
 16024  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 16025  			iRulesetTerm = i
 16026  			rCost = rCost / 10.0
 16027  		}
 16028  
 16029  	}
 16030  	goto __2
 16031  __2:
 16032  	i++
 16033  	pConstraint += 12
 16034  	goto __1
 16035  	goto __3
 16036  __3:
 16037  	;
 16038  	if iPlan&2 != 0 {
 16039  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = 1 + libc.Bool32(iPlan&1 != 0)
 16040  	}
 16041  	if iPlan&4 != 0 {
 16042  		var idx int32 = 1
 16043  		if iPlan&1 != 0 {
 16044  			idx++
 16045  		}
 16046  		if iPlan&2 != 0 {
 16047  			idx++
 16048  		}
 16049  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRulesetTerm)*8)).FargvIndex = idx
 16050  	}
 16051  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 16052  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 16053  		(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 1 &&
 16054  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 16055  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 16056  	}
 16057  	if seenMatch != 0 && iPlan&1 == 0 {
 16058  		rCost = 1e99
 16059  	}
 16060  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = rCost
 16061  
 16062  	return SQLITE_OK
 16063  }
 16064  
 16065  var fuzzerModule = sqlite3_module{
 16066  	FxCreate:     0,
 16067  	FxConnect:    0,
 16068  	FxBestIndex:  0,
 16069  	FxDisconnect: 0,
 16070  	FxDestroy:    0,
 16071  	FxOpen:       0,
 16072  	FxClose:      0,
 16073  	FxFilter:     0,
 16074  	FxNext:       0,
 16075  	FxEof:        0,
 16076  	FxColumn:     0,
 16077  	FxRowid:      0,
 16078  }
 16079  
 16080  func sqlite3_fuzzer_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16081  	var rc int32 = SQLITE_OK
 16082  	_ = pApi
 16083  
 16084  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+5483, uintptr(unsafe.Pointer(&fuzzerModule)), uintptr(0))
 16085  	return rc
 16086  }
 16087  
 16088  func ieee754func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16089  	bp := tls.Alloc(160)
 16090  	defer tls.Free(160)
 16091  
 16092  	if argc == 1 {
 16093  		var m sqlite3_int64
 16094  
 16095  		var e int32
 16096  		var isNeg int32
 16097  
 16098  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16099  			uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16100  			var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16101  			var i uint32
 16102  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = uint64(0)
 16103  			for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16104  				*(*sqlite3_uint64)(unsafe.Pointer(bp + 24)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 24))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16105  			}
 16106  			libc.Xmemcpy(tls, bp+16, bp+24, uint64(unsafe.Sizeof(float64(0))))
 16107  		} else {
 16108  			*(*float64)(unsafe.Pointer(bp + 16)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16109  		}
 16110  		if *(*float64)(unsafe.Pointer(bp + 16)) < 0.0 {
 16111  			isNeg = 1
 16112  			*(*float64)(unsafe.Pointer(bp + 16)) = -*(*float64)(unsafe.Pointer(bp + 16))
 16113  		} else {
 16114  			isNeg = 0
 16115  		}
 16116  		libc.Xmemcpy(tls, bp+32, bp+16, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 16117  		if *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) == int64(0) {
 16118  			e = 0
 16119  			m = int64(0)
 16120  		} else {
 16121  			e = int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) >> 52)
 16122  			m = *(*sqlite3_int64)(unsafe.Pointer(bp + 32)) & (int64(1)<<52 - int64(1))
 16123  			if e == 0 {
 16124  				m <<= 1
 16125  			} else {
 16126  				m = m | int64(1)<<52
 16127  			}
 16128  			for e < 1075 && m > int64(0) && m&int64(1) == int64(0) {
 16129  				m >>= 1
 16130  				e++
 16131  			}
 16132  			if isNeg != 0 {
 16133  				m = -m
 16134  			}
 16135  		}
 16136  		switch *(*int32)(unsafe.Pointer(sqlite3.Xsqlite3_user_data(tls, context))) {
 16137  		case 0:
 16138  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+5490,
 16139  				libc.VaList(bp, m, e-1075))
 16140  			sqlite3.Xsqlite3_result_text(tls, context, bp+40, -1, libc.UintptrFromInt32(-1))
 16141  			break
 16142  			fallthrough
 16143  		case 1:
 16144  			sqlite3.Xsqlite3_result_int64(tls, context, m)
 16145  			break
 16146  			fallthrough
 16147  		case 2:
 16148  			sqlite3.Xsqlite3_result_int(tls, context, e-1075)
 16149  			break
 16150  		}
 16151  	} else {
 16152  		var m sqlite3_int64
 16153  		var e sqlite3_int64
 16154  
 16155  		var isNeg int32 = 0
 16156  		m = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16157  		e = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16158  
 16159  		if e > int64(10000) {
 16160  			e = int64(10000)
 16161  		} else if e < int64(-10000) {
 16162  			e = int64(-10000)
 16163  		}
 16164  
 16165  		if m < int64(0) {
 16166  			isNeg = 1
 16167  			m = -m
 16168  			if m < int64(0) {
 16169  				return
 16170  			}
 16171  		} else if m == int64(0) && e > int64(-1000) && e < int64(1000) {
 16172  			sqlite3.Xsqlite3_result_double(tls, context, 0.0)
 16173  			return
 16174  		}
 16175  		for m>>32&int64(0xffe00000) != 0 {
 16176  			m >>= 1
 16177  			e++
 16178  		}
 16179  		for m != int64(0) && m>>32&int64(0xfff00000) == int64(0) {
 16180  			m <<= 1
 16181  			e--
 16182  		}
 16183  		e = e + int64(1075)
 16184  		if e <= int64(0) {
 16185  			if int64(1)-e >= int64(64) {
 16186  				m = int64(0)
 16187  			} else {
 16188  				m >>= int64(1) - e
 16189  			}
 16190  			e = int64(0)
 16191  		} else if e > int64(0x7ff) {
 16192  			e = int64(0x7ff)
 16193  		}
 16194  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) = m & (int64(1)<<52 - int64(1))
 16195  		*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= e << 52
 16196  		if isNeg != 0 {
 16197  			*(*sqlite3_int64)(unsafe.Pointer(bp + 152)) |= libc.Int64FromUint64(uint64(1) << 63)
 16198  		}
 16199  		libc.Xmemcpy(tls, bp+144, bp+152, uint64(unsafe.Sizeof(float64(0))))
 16200  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 144)))
 16201  	}
 16202  }
 16203  
 16204  func ieee754func_from_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16205  	bp := tls.Alloc(16)
 16206  	defer tls.Free(16)
 16207  
 16208  	_ = argc
 16209  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_BLOB &&
 16210  		uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))) == uint64(unsafe.Sizeof(float64(0))) {
 16211  		var x uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16212  		var i uint32
 16213  		*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = uint64(0)
 16214  		for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 16215  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 8)) = *(*sqlite3_uint64)(unsafe.Pointer(bp + 8))<<8 | sqlite3_uint64(*(*uint8)(unsafe.Pointer(x + uintptr(i))))
 16216  		}
 16217  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16218  		sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp)))
 16219  	}
 16220  }
 16221  
 16222  func ieee754func_to_blob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16223  	bp := tls.Alloc(24)
 16224  	defer tls.Free(24)
 16225  
 16226  	_ = argc
 16227  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_FLOAT ||
 16228  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_INTEGER {
 16229  		*(*float64)(unsafe.Pointer(bp + 8)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16230  
 16231  		var i uint32
 16232  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(float64(0))))
 16233  		for i = uint32(1); uint64(i) <= uint64(unsafe.Sizeof(float64(0))); i++ {
 16234  			*(*uint8)(unsafe.Pointer(bp + 16 + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(i)))) = uint8(*(*sqlite3_uint64)(unsafe.Pointer(bp)) & uint64(0xff))
 16235  			*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 8
 16236  		}
 16237  		sqlite3.Xsqlite3_result_blob(tls, context, bp+16, int32(unsafe.Sizeof(float64(0))), libc.UintptrFromInt32(-1))
 16238  	}
 16239  }
 16240  
 16241  func sqlite3_ieee_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16242  	var i uint32
 16243  	var rc int32 = SQLITE_OK
 16244  	_ = pApi
 16245  
 16246  	_ = pzErrMsg
 16247  	for i = uint32(0); uint64(i) < uint64(unsafe.Sizeof(aFunc1))/uint64(unsafe.Sizeof(struct {
 16248  		FzFName uintptr
 16249  		FnArg   int32
 16250  		FiAux   int32
 16251  		FxFunc  uintptr
 16252  	}{})) && rc == SQLITE_OK; i++ {
 16253  		rc = sqlite3.Xsqlite3_create_function(tls, db, aFunc1[i].FzFName, aFunc1[i].FnArg,
 16254  			SQLITE_UTF8|SQLITE_INNOCUOUS,
 16255  			uintptr(unsafe.Pointer(&aFunc1))+uintptr(i)*24+12,
 16256  			aFunc1[i].FxFunc, uintptr(0), uintptr(0))
 16257  	}
 16258  	return rc
 16259  }
 16260  
 16261  var aFunc1 = [6]struct {
 16262  	FzFName uintptr
 16263  	FnArg   int32
 16264  	FiAux   int32
 16265  	FxFunc  uintptr
 16266  }{
 16267  	{FzFName: ts + 5507, FnArg: 1, FxFunc: 0},
 16268  	{FzFName: ts + 5507, FnArg: 2, FxFunc: 0},
 16269  	{FzFName: ts + 5515, FnArg: 1, FiAux: 1, FxFunc: 0},
 16270  	{FzFName: ts + 5532, FnArg: 1, FiAux: 2, FxFunc: 0},
 16271  	{FzFName: ts + 5549, FnArg: 1, FxFunc: 0},
 16272  	{FzFName: ts + 5565, FnArg: 1, FxFunc: 0},
 16273  }
 16274  
 16275  func sqlite3_mmap_warm(tls *libc.TLS, db uintptr, zDb uintptr) int32 {
 16276  	bp := tls.Alloc(88)
 16277  	defer tls.Free(88)
 16278  
 16279  	var rc int32 = SQLITE_OK
 16280  	var zSql uintptr = uintptr(0)
 16281  	var pgsz int32 = 0
 16282  	var nTotal int32 = 0
 16283  
 16284  	if 0 == sqlite3.Xsqlite3_get_autocommit(tls, db) {
 16285  		return SQLITE_MISUSE
 16286  	}
 16287  
 16288  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5583,
 16289  		libc.VaList(bp, func() uintptr {
 16290  			if zDb != 0 {
 16291  				return ts + 5624
 16292  			}
 16293  			return ts + 584
 16294  		}(), func() uintptr {
 16295  			if zDb != 0 {
 16296  				return zDb
 16297  			}
 16298  			return ts + 584
 16299  		}(), func() uintptr {
 16300  			if zDb != 0 {
 16301  				return ts + 5626
 16302  			}
 16303  			return ts + 584
 16304  		}()))
 16305  	if zSql == uintptr(0) {
 16306  		return SQLITE_NOMEM
 16307  	}
 16308  	rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 16309  	sqlite3.Xsqlite3_free(tls, zSql)
 16310  
 16311  	if rc == SQLITE_OK {
 16312  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+5629,
 16313  			libc.VaList(bp+24, func() uintptr {
 16314  				if zDb != 0 {
 16315  					return ts + 5624
 16316  				}
 16317  				return ts + 584
 16318  			}(), func() uintptr {
 16319  				if zDb != 0 {
 16320  					return zDb
 16321  				}
 16322  				return ts + 584
 16323  			}(), func() uintptr {
 16324  				if zDb != 0 {
 16325  					return ts + 5626
 16326  				}
 16327  				return ts + 584
 16328  			}()))
 16329  		if zSql == uintptr(0) {
 16330  			rc = SQLITE_NOMEM
 16331  		} else {
 16332  			*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 16333  			rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 16334  			sqlite3.Xsqlite3_free(tls, zSql)
 16335  			if rc == SQLITE_OK {
 16336  				if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 16337  					pgsz = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 16338  				}
 16339  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 16340  			}
 16341  			if rc == SQLITE_OK && pgsz == 0 {
 16342  				rc = SQLITE_ERROR
 16343  			}
 16344  		}
 16345  	}
 16346  
 16347  	if rc == SQLITE_OK {
 16348  		var rc2 int32
 16349  		*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 16350  		rc = sqlite3.Xsqlite3_file_control(tls, db, zDb, SQLITE_FCNTL_FILE_POINTER, bp+72)
 16351  		if rc == SQLITE_OK && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods)).FiVersion >= 3 {
 16352  			var iPg sqlite3_int64 = int64(1)
 16353  			var p uintptr = (*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)))).FpMethods
 16354  			for 1 != 0 {
 16355  				rc = (*struct {
 16356  					f func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32
 16357  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods)(unsafe.Pointer(p)).FxFetch})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), sqlite3_int64(pgsz)*iPg, pgsz, bp+80)
 16358  				if rc != SQLITE_OK || *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 16359  					break
 16360  				}
 16361  
 16362  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))))
 16363  				nTotal = nTotal + int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(pgsz-1))))
 16364  
 16365  				rc = (*struct {
 16366  					f func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32
 16367  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods)(unsafe.Pointer(p)).FxUnfetch})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), sqlite3_int64(pgsz)*iPg, *(*uintptr)(unsafe.Pointer(bp + 80)))
 16368  				if rc != SQLITE_OK {
 16369  					break
 16370  				}
 16371  				iPg++
 16372  			}
 16373  			sqlite3.Xsqlite3_log(tls, SQLITE_OK,
 16374  				ts+5652, libc.VaList(bp+48, func() int64 {
 16375  					if iPg == int64(1) {
 16376  						return int64(0)
 16377  					}
 16378  					return iPg
 16379  				}(),
 16380  					sqlite3.Xsqlite3_db_filename(tls, db, zDb)))
 16381  		}
 16382  
 16383  		rc2 = sqlite3.Xsqlite3_exec(tls, db, ts+5702, uintptr(0), uintptr(0), uintptr(0))
 16384  		if rc == SQLITE_OK {
 16385  			rc = rc2
 16386  		}
 16387  	}
 16388  
 16389  	return rc
 16390  }
 16391  
 16392  type nextCharContext1 = struct {
 16393  	Fdb           uintptr
 16394  	FpStmt        uintptr
 16395  	FzPrefix      uintptr
 16396  	FnPrefix      int32
 16397  	FnAlloc       int32
 16398  	FnUsed        int32
 16399  	F__ccgo_pad1  [4]byte
 16400  	FaResult      uintptr
 16401  	FmallocFailed int32
 16402  	FotherError   int32
 16403  }
 16404  
 16405  type nextCharContext = nextCharContext1
 16406  
 16407  func nextCharAppend(tls *libc.TLS, p uintptr, c uint32) {
 16408  	var i int32
 16409  	for i = 0; i < (*nextCharContext)(unsafe.Pointer(p)).FnUsed; i++ {
 16410  		if *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(i)*4)) == c {
 16411  			return
 16412  		}
 16413  	}
 16414  	if (*nextCharContext)(unsafe.Pointer(p)).FnUsed+1 > (*nextCharContext)(unsafe.Pointer(p)).FnAlloc {
 16415  		var aNew uintptr
 16416  		var n int32 = (*nextCharContext)(unsafe.Pointer(p)).FnAlloc*2 + 30
 16417  		aNew = sqlite3.Xsqlite3_realloc64(tls, (*nextCharContext)(unsafe.Pointer(p)).FaResult, uint64(n)*uint64(unsafe.Sizeof(uint32(0))))
 16418  		if aNew == uintptr(0) {
 16419  			(*nextCharContext)(unsafe.Pointer(p)).FmallocFailed = 1
 16420  			return
 16421  		} else {
 16422  			(*nextCharContext)(unsafe.Pointer(p)).FaResult = aNew
 16423  			(*nextCharContext)(unsafe.Pointer(p)).FnAlloc = n
 16424  		}
 16425  	}
 16426  	*(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(p)).FaResult + uintptr(libc.PostIncInt32(&(*nextCharContext)(unsafe.Pointer(p)).FnUsed, 1))*4)) = c
 16427  }
 16428  
 16429  func writeUtf8(tls *libc.TLS, z uintptr, c uint32) int32 {
 16430  	if c < uint32(0x00080) {
 16431  		*(*uint8)(unsafe.Pointer(z)) = uint8(c & uint32(0xff))
 16432  		return 1
 16433  	}
 16434  	if c < uint32(0x00800) {
 16435  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xC0 + int32(uint8(c>>6&uint32(0x1F))))
 16436  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16437  		return 2
 16438  	}
 16439  	if c < uint32(0x10000) {
 16440  		*(*uint8)(unsafe.Pointer(z)) = uint8(0xE0 + int32(uint8(c>>12&uint32(0x0F))))
 16441  		*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16442  		*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16443  		return 3
 16444  	}
 16445  	*(*uint8)(unsafe.Pointer(z)) = uint8(0xF0 + int32(uint8(c>>18&uint32(0x07))))
 16446  	*(*uint8)(unsafe.Pointer(z + 1)) = uint8(0x80 + int32(uint8(c>>12&uint32(0x3F))))
 16447  	*(*uint8)(unsafe.Pointer(z + 2)) = uint8(0x80 + int32(uint8(c>>6&uint32(0x3F))))
 16448  	*(*uint8)(unsafe.Pointer(z + 3)) = uint8(0x80 + int32(uint8(c&uint32(0x3F))))
 16449  	return 4
 16450  }
 16451  
 16452  func readUtf8(tls *libc.TLS, z uintptr, pOut uintptr) int32 {
 16453  	var c uint32 = uint32(*(*uint8)(unsafe.Pointer(z)))
 16454  	if c < uint32(0xc0) {
 16455  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16456  		return 1
 16457  	} else {
 16458  		var n int32 = 1
 16459  		c = uint32(validBits[c-uint32(0xc0)])
 16460  		for int32(*(*uint8)(unsafe.Pointer(z + uintptr(n))))&0xc0 == 0x80 {
 16461  			c = c<<6 + uint32(0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&n, 1))))))
 16462  		}
 16463  		if c < uint32(0x80) || c&0xFFFFF800 == uint32(0xD800) || c&0xFFFFFFFE == uint32(0xFFFE) {
 16464  			c = uint32(0xFFFD)
 16465  		}
 16466  		*(*uint32)(unsafe.Pointer(pOut)) = c
 16467  		return n
 16468  	}
 16469  	return int32(0)
 16470  }
 16471  
 16472  var validBits = [64]uint8{
 16473  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16474  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16475  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 16476  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 16477  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16478  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 16479  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 16480  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 16481  }
 16482  
 16483  func findNextChars(tls *libc.TLS, p uintptr) {
 16484  	bp := tls.Alloc(12)
 16485  	defer tls.Free(12)
 16486  
 16487  	var cPrev uint32 = uint32(0)
 16488  
 16489  	var n int32
 16490  	var rc int32
 16491  
 16492  	for {
 16493  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 1, (*nextCharContext)(unsafe.Pointer(p)).FzPrefix, (*nextCharContext)(unsafe.Pointer(p)).FnPrefix,
 16494  			uintptr(0))
 16495  		n = writeUtf8(tls, bp, cPrev+uint32(1))
 16496  		sqlite3.Xsqlite3_bind_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 2, bp, n, uintptr(0))
 16497  		rc = sqlite3.Xsqlite3_step(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16498  		if rc == SQLITE_DONE {
 16499  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16500  			return
 16501  		} else if rc != SQLITE_ROW {
 16502  			(*nextCharContext)(unsafe.Pointer(p)).FotherError = rc
 16503  			return
 16504  		} else {
 16505  			var zOut uintptr = sqlite3.Xsqlite3_column_text(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt, 0)
 16506  
 16507  			n = readUtf8(tls, zOut+uintptr((*nextCharContext)(unsafe.Pointer(p)).FnPrefix), bp+8)
 16508  			sqlite3.Xsqlite3_reset(tls, (*nextCharContext)(unsafe.Pointer(p)).FpStmt)
 16509  			nextCharAppend(tls, p, *(*uint32)(unsafe.Pointer(bp + 8)))
 16510  			cPrev = *(*uint32)(unsafe.Pointer(bp + 8))
 16511  			if (*nextCharContext)(unsafe.Pointer(p)).FmallocFailed != 0 {
 16512  				return
 16513  			}
 16514  		}
 16515  	}
 16516  }
 16517  
 16518  func nextCharFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 16519  	bp := tls.Alloc(136)
 16520  	defer tls.Free(136)
 16521  
 16522  	var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 16523  	var zField uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 16524  	var zWhere uintptr
 16525  	var zCollName uintptr
 16526  	var zWhereClause uintptr = uintptr(0)
 16527  	var zColl uintptr = uintptr(0)
 16528  	var zSql uintptr
 16529  	var rc int32
 16530  
 16531  	libc.Xmemset(tls, bp+80, 0, uint64(unsafe.Sizeof(nextCharContext{})))
 16532  	(*nextCharContext)(unsafe.Pointer(bp + 80)).Fdb = sqlite3.Xsqlite3_context_db_handle(tls, context)
 16533  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FzPrefix = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16534  	(*nextCharContext)(unsafe.Pointer(bp + 80)).FnPrefix = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 16535  	if zTable == uintptr(0) || zField == uintptr(0) || (*nextCharContext)(unsafe.Pointer(bp+80)).FzPrefix == uintptr(0) {
 16536  		return
 16537  	}
 16538  	if argc >= 4 &&
 16539  		libc.AssignUintptr(&zWhere, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))) != uintptr(0) &&
 16540  		int32(*(*uint8)(unsafe.Pointer(zWhere))) != 0 {
 16541  		zWhereClause = sqlite3.Xsqlite3_mprintf(tls, ts+5706, libc.VaList(bp, zWhere))
 16542  		if zWhereClause == uintptr(0) {
 16543  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16544  			return
 16545  		}
 16546  	} else {
 16547  		zWhereClause = ts + 584
 16548  	}
 16549  	if argc >= 5 &&
 16550  		libc.AssignUintptr(&zCollName, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))) != uintptr(0) &&
 16551  		int32(*(*uint8)(unsafe.Pointer(zCollName))) != 0 {
 16552  		zColl = sqlite3.Xsqlite3_mprintf(tls, ts+5715, libc.VaList(bp+8, zCollName))
 16553  		if zColl == uintptr(0) {
 16554  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16555  			if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 16556  				sqlite3.Xsqlite3_free(tls, zWhereClause)
 16557  			}
 16558  			return
 16559  		}
 16560  	} else {
 16561  		zColl = ts + 584
 16562  	}
 16563  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 16564  		ts+5728,
 16565  		libc.VaList(bp+16, zField, zTable, zField, zColl, zField, zColl, zWhereClause, zColl))
 16566  	if *(*int8)(unsafe.Pointer(zWhereClause)) != 0 {
 16567  		sqlite3.Xsqlite3_free(tls, zWhereClause)
 16568  	}
 16569  	if *(*int8)(unsafe.Pointer(zColl)) != 0 {
 16570  		sqlite3.Xsqlite3_free(tls, zColl)
 16571  	}
 16572  	if zSql == uintptr(0) {
 16573  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16574  		return
 16575  	}
 16576  
 16577  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb, zSql, -1, bp+80+8, uintptr(0))
 16578  	sqlite3.Xsqlite3_free(tls, zSql)
 16579  	if rc != 0 {
 16580  		sqlite3.Xsqlite3_result_error(tls, context, sqlite3.Xsqlite3_errmsg(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).Fdb), -1)
 16581  		return
 16582  	}
 16583  	findNextChars(tls, bp+80)
 16584  	if (*nextCharContext)(unsafe.Pointer(bp+80)).FmallocFailed != 0 {
 16585  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16586  	} else {
 16587  		var pRes uintptr
 16588  		pRes = sqlite3.Xsqlite3_malloc64(tls, uint64((*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed*4+1))
 16589  		if pRes == uintptr(0) {
 16590  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 16591  		} else {
 16592  			var i int32
 16593  			var n int32 = 0
 16594  			for i = 0; i < (*nextCharContext)(unsafe.Pointer(bp+80)).FnUsed; i++ {
 16595  				n = n + writeUtf8(tls, pRes+uintptr(n), *(*uint32)(unsafe.Pointer((*nextCharContext)(unsafe.Pointer(bp+80)).FaResult + uintptr(i)*4)))
 16596  			}
 16597  			*(*uint8)(unsafe.Pointer(pRes + uintptr(n))) = uint8(0)
 16598  			sqlite3.Xsqlite3_result_text(tls, context, pRes, n, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 16599  		}
 16600  	}
 16601  	sqlite3.Xsqlite3_finalize(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FpStmt)
 16602  	sqlite3.Xsqlite3_free(tls, (*nextCharContext)(unsafe.Pointer(bp+80)).FaResult)
 16603  }
 16604  
 16605  func sqlite3_nextchar_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 16606  	var rc int32 = SQLITE_OK
 16607  	_ = pApi
 16608  
 16609  	_ = pzErrMsg
 16610  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 3,
 16611  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16612  		*(*uintptr)(unsafe.Pointer(&struct {
 16613  			f func(*libc.TLS, uintptr, int32, uintptr)
 16614  		}{nextCharFunc})), uintptr(0), uintptr(0))
 16615  	if rc == SQLITE_OK {
 16616  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 4,
 16617  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16618  			*(*uintptr)(unsafe.Pointer(&struct {
 16619  				f func(*libc.TLS, uintptr, int32, uintptr)
 16620  			}{nextCharFunc})), uintptr(0), uintptr(0))
 16621  	}
 16622  	if rc == SQLITE_OK {
 16623  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+5836, 5,
 16624  			SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 16625  			*(*uintptr)(unsafe.Pointer(&struct {
 16626  				f func(*libc.TLS, uintptr, int32, uintptr)
 16627  			}{nextCharFunc})), uintptr(0), uintptr(0))
 16628  	}
 16629  	return rc
 16630  }
 16631  
 16632  var aiClass = [256]uint8{
 16633  	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),
 16634  	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),
 16635  	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),
 16636  	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),
 16637  	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),
 16638  	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),
 16639  	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),
 16640  	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),
 16641  	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),
 16642  	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),
 16643  	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),
 16644  	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),
 16645  	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),
 16646  	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),
 16647  	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),
 16648  	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),
 16649  }
 16650  
 16651  var sqlite3UpperToLower = [256]uint8{
 16652  	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),
 16653  	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),
 16654  	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),
 16655  	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),
 16656  	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),
 16657  	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),
 16658  	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),
 16659  	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),
 16660  	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),
 16661  	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),
 16662  	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),
 16663  	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),
 16664  	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),
 16665  	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),
 16666  	uint8(252), uint8(253), uint8(254), uint8(255),
 16667  }
 16668  
 16669  var sqlite3CtypeMap = [256]uint8{
 16670  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16671  	uint8(0x00), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x01), uint8(0x00), uint8(0x00),
 16672  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16673  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16674  	uint8(0x01), uint8(0x00), uint8(0x80), uint8(0x00), uint8(0x40), uint8(0x00), uint8(0x00), uint8(0x80),
 16675  	uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16676  	uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c), uint8(0x0c),
 16677  	uint8(0x0c), uint8(0x0c), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16678  	uint8(0x00), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x0a), uint8(0x02),
 16679  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 16680  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x02),
 16681  	uint8(0x02), uint8(0x02), uint8(0x02), uint8(0x80), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x40),
 16682  	uint8(0x80), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x2a), uint8(0x22),
 16683  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 16684  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x22),
 16685  	uint8(0x22), uint8(0x22), uint8(0x22), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00), uint8(0x00),
 16686  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16687  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16688  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16689  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16690  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16691  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16692  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16693  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16694  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16695  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16696  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16697  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16698  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16699  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16700  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16701  	uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40), uint8(0x40),
 16702  }
 16703  
 16704  func sqlite3GetToken(tls *libc.TLS, z uintptr, tokenType uintptr) int32 {
 16705  	var i int32
 16706  	var c int32
 16707  	switch int32(aiClass[*(*uint8)(unsafe.Pointer(z))]) {
 16708  	case CC_SPACE:
 16709  		{
 16710  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x01 != 0; i++ {
 16711  			}
 16712  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16713  			return i
 16714  
 16715  		}
 16716  	case CC_MINUS:
 16717  		{
 16718  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '-' {
 16719  				for i = 2; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && c != '\n'; i++ {
 16720  				}
 16721  				*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16722  				return i
 16723  			}
 16724  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16725  			return 1
 16726  
 16727  		}
 16728  	case CC_LP:
 16729  		{
 16730  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16731  			return 1
 16732  
 16733  		}
 16734  	case CC_RP:
 16735  		{
 16736  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16737  			return 1
 16738  
 16739  		}
 16740  	case CC_SEMI:
 16741  		{
 16742  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16743  			return 1
 16744  
 16745  		}
 16746  	case CC_PLUS:
 16747  		{
 16748  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16749  			return 1
 16750  
 16751  		}
 16752  	case CC_STAR:
 16753  		{
 16754  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16755  			return 1
 16756  
 16757  		}
 16758  	case CC_SLASH:
 16759  		{
 16760  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '*' || int32(*(*uint8)(unsafe.Pointer(z + 2))) == 0 {
 16761  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16762  				return 1
 16763  			}
 16764  			i = 3
 16765  			c = int32(*(*uint8)(unsafe.Pointer(z + 2)))
 16766  			for ; (c != '*' || int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '/') && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16767  			}
 16768  			if c != 0 {
 16769  				i++
 16770  			}
 16771  			*(*int32)(unsafe.Pointer(tokenType)) = TK_SPACE
 16772  			return i
 16773  
 16774  		}
 16775  	case CC_PERCENT:
 16776  		{
 16777  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16778  			return 1
 16779  
 16780  		}
 16781  	case CC_EQ:
 16782  		{
 16783  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16784  			return 1 + libc.Bool32(int32(*(*uint8)(unsafe.Pointer(z + 1))) == '=')
 16785  
 16786  		}
 16787  	case CC_LT:
 16788  		{
 16789  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 16790  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16791  				return 2
 16792  			} else if c == '>' {
 16793  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16794  				return 2
 16795  			} else if c == '<' {
 16796  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16797  				return 2
 16798  			} else {
 16799  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16800  				return 1
 16801  			}
 16802  
 16803  		}
 16804  		fallthrough
 16805  	case CC_GT:
 16806  		{
 16807  			if libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + 1)))) == '=' {
 16808  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16809  				return 2
 16810  			} else if c == '>' {
 16811  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16812  				return 2
 16813  			} else {
 16814  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16815  				return 1
 16816  			}
 16817  
 16818  		}
 16819  		fallthrough
 16820  	case CC_BANG:
 16821  		{
 16822  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '=' {
 16823  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16824  				return 1
 16825  			} else {
 16826  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16827  				return 2
 16828  			}
 16829  
 16830  		}
 16831  		fallthrough
 16832  	case CC_PIPE:
 16833  		{
 16834  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) != '|' {
 16835  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16836  				return 1
 16837  			} else {
 16838  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16839  				return 2
 16840  			}
 16841  
 16842  		}
 16843  		fallthrough
 16844  	case CC_COMMA:
 16845  		{
 16846  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16847  			return 1
 16848  
 16849  		}
 16850  	case CC_AND:
 16851  		{
 16852  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16853  			return 1
 16854  
 16855  		}
 16856  	case CC_TILDA:
 16857  		{
 16858  			*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16859  			return 1
 16860  
 16861  		}
 16862  	case CC_QUOTE:
 16863  		{
 16864  			var delim int32 = int32(*(*uint8)(unsafe.Pointer(z)))
 16865  
 16866  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16867  				if c == delim {
 16868  					if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == delim {
 16869  						i++
 16870  					} else {
 16871  						break
 16872  					}
 16873  				}
 16874  			}
 16875  			if c == '\'' {
 16876  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16877  				return i + 1
 16878  			} else if c != 0 {
 16879  				*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 16880  				return i + 1
 16881  			} else {
 16882  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16883  				return i
 16884  			}
 16885  
 16886  		}
 16887  		fallthrough
 16888  	case CC_DOT:
 16889  		{
 16890  			if !(int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + 1))])&0x04 != 0) {
 16891  				*(*int32)(unsafe.Pointer(tokenType)) = TK_PUNCT
 16892  				return 1
 16893  			}
 16894  
 16895  		}
 16896  		fallthrough
 16897  	case CC_DIGIT:
 16898  		{
 16899  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16900  			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 {
 16901  				for i = 3; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 16902  				}
 16903  				return i
 16904  			}
 16905  			for i = 0; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 16906  			}
 16907  			if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) == '.' {
 16908  				i++
 16909  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 16910  					i++
 16911  				}
 16912  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16913  			}
 16914  			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 ||
 16915  				(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) {
 16916  				i = i + 2
 16917  				for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0 {
 16918  					i++
 16919  				}
 16920  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16921  			}
 16922  			for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 16923  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16924  				i++
 16925  			}
 16926  			return i
 16927  
 16928  		}
 16929  	case CC_QUOTE2:
 16930  		{
 16931  			i = 1
 16932  			c = int32(*(*uint8)(unsafe.Pointer(z)))
 16933  			for ; c != ']' && libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16934  			}
 16935  			*(*int32)(unsafe.Pointer(tokenType)) = func() int32 {
 16936  				if c == ']' {
 16937  					return TK_NAME
 16938  				}
 16939  				return TK_ERROR
 16940  			}()
 16941  			return i
 16942  
 16943  		}
 16944  	case CC_VARNUM:
 16945  		{
 16946  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16947  			for i = 1; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x04 != 0; i++ {
 16948  			}
 16949  			return i
 16950  
 16951  		}
 16952  	case CC_DOLLAR:
 16953  		fallthrough
 16954  	case CC_VARALPHA:
 16955  		{
 16956  			var n int32 = 0
 16957  
 16958  			*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 16959  			for i = 1; libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0; i++ {
 16960  				if int32(sqlite3CtypeMap[uint8(c)])&0x46 != 0 {
 16961  					n++
 16962  				} else if c == '(' && n > 0 {
 16963  					for __ccgo := true; __ccgo; __ccgo = libc.AssignInt32(&c, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))) != 0 && !(int32(sqlite3CtypeMap[uint8(c)])&0x01 != 0) && c != ')' {
 16964  						i++
 16965  					}
 16966  					if c == ')' {
 16967  						i++
 16968  					} else {
 16969  						*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16970  					}
 16971  					break
 16972  				} else if c == ':' && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i+1)))) == ':' {
 16973  					i++
 16974  				} else {
 16975  					break
 16976  				}
 16977  			}
 16978  			if n == 0 {
 16979  				*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 16980  			}
 16981  			return i
 16982  
 16983  		}
 16984  	case CC_KYWD:
 16985  		{
 16986  			for i = 1; int32(aiClass[*(*uint8)(unsafe.Pointer(z + uintptr(i)))]) <= CC_KYWD; i++ {
 16987  			}
 16988  			if int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 16989  				i++
 16990  				break
 16991  			}
 16992  			*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 16993  			return i
 16994  
 16995  		}
 16996  	case CC_X:
 16997  		{
 16998  			if int32(*(*uint8)(unsafe.Pointer(z + 1))) == '\'' {
 16999  				*(*int32)(unsafe.Pointer(tokenType)) = TK_LITERAL
 17000  				for i = 2; int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x08 != 0; i++ {
 17001  				}
 17002  				if int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' || i%2 != 0 {
 17003  					*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17004  					for *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) != '\'' {
 17005  						i++
 17006  					}
 17007  				}
 17008  				if *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0 {
 17009  					i++
 17010  				}
 17011  				return i
 17012  			}
 17013  
 17014  		}
 17015  		fallthrough
 17016  	case CC_ID:
 17017  		{
 17018  			i = 1
 17019  			break
 17020  
 17021  		}
 17022  	default:
 17023  		{
 17024  			*(*int32)(unsafe.Pointer(tokenType)) = TK_ERROR
 17025  			return 1
 17026  
 17027  		}
 17028  	}
 17029  	for int32(sqlite3CtypeMap[*(*uint8)(unsafe.Pointer(z + uintptr(i)))])&0x46 != 0 {
 17030  		i++
 17031  	}
 17032  	*(*int32)(unsafe.Pointer(tokenType)) = TK_NAME
 17033  	return i
 17034  }
 17035  
 17036  func sqlite3_normalize(tls *libc.TLS, zSql uintptr) uintptr {
 17037  	bp := tls.Alloc(4)
 17038  	defer tls.Free(4)
 17039  
 17040  	var z uintptr
 17041  	var nZ sqlite3_int64
 17042  	var nSql sqlite3_int64
 17043  	var i int32
 17044  	var j int32
 17045  
 17046  	var n int32
 17047  	var k int32
 17048  
 17049  	nSql = sqlite3_int64(libc.Xstrlen(tls, zSql))
 17050  	nZ = nSql
 17051  	z = sqlite3.Xsqlite3_malloc64(tls, uint64(nZ+int64(2)))
 17052  	if z == uintptr(0) {
 17053  		return uintptr(0)
 17054  	}
 17055  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; i = i + n {
 17056  		n = sqlite3GetToken(tls, zSql+uintptr(i), bp)
 17057  		switch *(*int32)(unsafe.Pointer(bp)) {
 17058  		case TK_SPACE:
 17059  			{
 17060  				break
 17061  
 17062  			}
 17063  		case TK_ERROR:
 17064  			{
 17065  				sqlite3.Xsqlite3_free(tls, z)
 17066  				return uintptr(0)
 17067  
 17068  			}
 17069  		case TK_LITERAL:
 17070  			{
 17071  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17072  				break
 17073  
 17074  			}
 17075  		case TK_PUNCT:
 17076  			fallthrough
 17077  		case TK_NAME:
 17078  			{
 17079  				if n == 4 && sqlite3.Xsqlite3_strnicmp(tls, zSql+uintptr(i), ts+5846, 4) == 0 {
 17080  					if j >= 3 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(2), ts+5851, uint64(2)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-3))))])&0x46 != 0) ||
 17081  						j >= 4 && libc.Xstrncmp(tls, z+uintptr(j)-uintptr(3), ts+5854, uint64(3)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z + uintptr(j-4))))])&0x46 != 0) {
 17082  					} else {
 17083  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 17084  						break
 17085  					}
 17086  				}
 17087  				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 {
 17088  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(' ')
 17089  				}
 17090  				for k = 0; k < n; k++ {
 17091  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(sqlite3UpperToLower[uint8(*(*int8)(unsafe.Pointer(zSql + uintptr(i+k))))])
 17092  				}
 17093  				break
 17094  
 17095  			}
 17096  		}
 17097  	}
 17098  	for j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) == ' ' {
 17099  		j--
 17100  	}
 17101  	if j > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(j-1)))) != ';' {
 17102  		*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(';')
 17103  	}
 17104  	*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17105  
 17106  	for i = 0; i < j; i = n {
 17107  		var zIn uintptr = libc.Xstrstr(tls, z+uintptr(i), ts+5858)
 17108  		var nParen int32
 17109  		if zIn == uintptr(0) {
 17110  			break
 17111  		}
 17112  		n = int32((int64(zIn)-int64(z))/1) + 3
 17113  		if n != 0 && int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + libc.UintptrFromInt32(-1))))])&0x46 != 0 {
 17114  			continue
 17115  		}
 17116  		if libc.Xstrncmp(tls, zIn, ts+5862, uint64(9)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 9)))])&0x46 != 0) {
 17117  			continue
 17118  		}
 17119  		if libc.Xstrncmp(tls, zIn, ts+5872, uint64(7)) == 0 && !(int32(sqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(zIn + 7)))])&0x46 != 0) {
 17120  			continue
 17121  		}
 17122  		nParen = 1
 17123  		k = 0
 17124  		for ; *(*int8)(unsafe.Pointer(z + uintptr(n+k))) != 0; k++ {
 17125  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == '(' {
 17126  				nParen++
 17127  			}
 17128  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(n+k)))) == ')' {
 17129  				nParen--
 17130  				if nParen == 0 {
 17131  					break
 17132  				}
 17133  			}
 17134  		}
 17135  
 17136  		if k < 5 {
 17137  			z = sqlite3.Xsqlite3_realloc64(tls, z, uint64(j+(5-k)+1))
 17138  			if z == uintptr(0) {
 17139  				return uintptr(0)
 17140  			}
 17141  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17142  		} else if k > 5 {
 17143  			libc.Xmemmove(tls, z+uintptr(n)+uintptr(5), z+uintptr(n)+uintptr(k), uint64(j-(n+k)))
 17144  		}
 17145  		j = j - k + 5
 17146  		*(*int8)(unsafe.Pointer(z + uintptr(j))) = int8(0)
 17147  		libc.Xmemcpy(tls, z+uintptr(n), ts+5880, uint64(5))
 17148  	}
 17149  	return z
 17150  }
 17151  
 17152  type Percentile1 = struct {
 17153  	FnAlloc uint32
 17154  	FnUsed  uint32
 17155  	FrPct   float64
 17156  	Fa      uintptr
 17157  }
 17158  
 17159  type Percentile = Percentile1
 17160  
 17161  func isInfinity(tls *libc.TLS, r float64) int32 {
 17162  	bp := tls.Alloc(16)
 17163  	defer tls.Free(16)
 17164  	*(*float64)(unsafe.Pointer(bp + 8)) = r
 17165  
 17166  	libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 17167  	return libc.Bool32(*(*sqlite3_uint64)(unsafe.Pointer(bp))>>52&uint64(0x7ff) == uint64(0x7ff))
 17168  }
 17169  
 17170  func sameValue(tls *libc.TLS, a float64, b float64) int32 {
 17171  	a = a - b
 17172  	return libc.Bool32(a >= -0.001 && a <= 0.001)
 17173  }
 17174  
 17175  func percentStep(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 17176  	var p uintptr
 17177  	var rPct float64
 17178  	var eType int32
 17179  	var y float64
 17180  
 17181  	eType = sqlite3.Xsqlite3_value_numeric_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17182  	rPct = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 17183  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT ||
 17184  		rPct < 0.0 || rPct > 100.0 {
 17185  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17186  			ts+5886, -1)
 17187  		return
 17188  	}
 17189  
 17190  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, int32(unsafe.Sizeof(Percentile{})))
 17191  	if p == uintptr(0) {
 17192  		return
 17193  	}
 17194  
 17195  	if (*Percentile)(unsafe.Pointer(p)).FrPct == 0.0 {
 17196  		(*Percentile)(unsafe.Pointer(p)).FrPct = rPct + 1.0
 17197  	} else if !(sameValue(tls, (*Percentile)(unsafe.Pointer(p)).FrPct, rPct+1.0) != 0) {
 17198  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17199  			ts+5953, -1)
 17200  		return
 17201  	}
 17202  
 17203  	eType = sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17204  	if eType == SQLITE_NULL {
 17205  		return
 17206  	}
 17207  
 17208  	if eType != SQLITE_INTEGER && eType != SQLITE_FLOAT {
 17209  		sqlite3.Xsqlite3_result_error(tls, pCtx,
 17210  			ts+6017, -1)
 17211  		return
 17212  	}
 17213  
 17214  	y = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 17215  	if isInfinity(tls, y) != 0 {
 17216  		sqlite3.Xsqlite3_result_error(tls, pCtx, ts+6061, -1)
 17217  		return
 17218  	}
 17219  
 17220  	if (*Percentile)(unsafe.Pointer(p)).FnUsed >= (*Percentile)(unsafe.Pointer(p)).FnAlloc {
 17221  		var n uint32 = (*Percentile)(unsafe.Pointer(p)).FnAlloc*uint32(2) + uint32(250)
 17222  		var a uintptr = sqlite3.Xsqlite3_realloc64(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64(unsafe.Sizeof(float64(0)))*uint64(n))
 17223  		if a == uintptr(0) {
 17224  			sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17225  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17226  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 17227  			return
 17228  		}
 17229  		(*Percentile)(unsafe.Pointer(p)).FnAlloc = n
 17230  		(*Percentile)(unsafe.Pointer(p)).Fa = a
 17231  	}
 17232  	*(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(libc.PostIncUint32(&(*Percentile)(unsafe.Pointer(p)).FnUsed, 1))*8)) = y
 17233  }
 17234  
 17235  func doubleCmp(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 17236  	var a float64 = *(*float64)(unsafe.Pointer(pA))
 17237  	var b float64 = *(*float64)(unsafe.Pointer(pB))
 17238  	if a == b {
 17239  		return 0
 17240  	}
 17241  	if a < b {
 17242  		return -1
 17243  	}
 17244  	return +1
 17245  }
 17246  
 17247  func percentFinal(tls *libc.TLS, pCtx uintptr) {
 17248  	var p uintptr
 17249  	var i1 uint32
 17250  	var i2 uint32
 17251  	var v1 float64
 17252  	var v2 float64
 17253  	var ix float64
 17254  	var vx float64
 17255  	p = sqlite3.Xsqlite3_aggregate_context(tls, pCtx, 0)
 17256  	if p == uintptr(0) {
 17257  		return
 17258  	}
 17259  	if (*Percentile)(unsafe.Pointer(p)).Fa == uintptr(0) {
 17260  		return
 17261  	}
 17262  	if (*Percentile)(unsafe.Pointer(p)).FnUsed != 0 {
 17263  		libc.Xqsort(tls, (*Percentile)(unsafe.Pointer(p)).Fa, uint64((*Percentile)(unsafe.Pointer(p)).FnUsed), uint64(unsafe.Sizeof(float64(0))), *(*uintptr)(unsafe.Pointer(&struct {
 17264  			f func(*libc.TLS, uintptr, uintptr) int32
 17265  		}{doubleCmp})))
 17266  		ix = ((*Percentile)(unsafe.Pointer(p)).FrPct - 1.0) * float64((*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1)) * 0.01
 17267  		i1 = uint32(ix)
 17268  		if ix == float64(i1) || i1 == (*Percentile)(unsafe.Pointer(p)).FnUsed-uint32(1) {
 17269  			i2 = i1
 17270  		} else {
 17271  			i2 = i1 + uint32(1)
 17272  		}
 17273  		v1 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i1)*8))
 17274  		v2 = *(*float64)(unsafe.Pointer((*Percentile)(unsafe.Pointer(p)).Fa + uintptr(i2)*8))
 17275  		vx = v1 + (v2-v1)*(ix-float64(i1))
 17276  		sqlite3.Xsqlite3_result_double(tls, pCtx, vx)
 17277  	}
 17278  	sqlite3.Xsqlite3_free(tls, (*Percentile)(unsafe.Pointer(p)).Fa)
 17279  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Percentile{})))
 17280  }
 17281  
 17282  func sqlite3_percentile_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17283  	var rc int32 = SQLITE_OK
 17284  	_ = pApi
 17285  
 17286  	_ = pzErrMsg
 17287  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6087, 2,
 17288  		SQLITE_UTF8|SQLITE_INNOCUOUS, uintptr(0),
 17289  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17290  			f func(*libc.TLS, uintptr, int32, uintptr)
 17291  		}{percentStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{percentFinal})))
 17292  	return rc
 17293  }
 17294  
 17295  type prefixes_vtab1 = struct{ Fbase sqlite3_vtab }
 17296  
 17297  type prefixes_vtab = prefixes_vtab1
 17298  
 17299  type prefixes_cursor1 = struct {
 17300  	Fbase        sqlite3_vtab_cursor
 17301  	FiRowid      sqlite3_int64
 17302  	FzStr        uintptr
 17303  	FnStr        int32
 17304  	F__ccgo_pad1 [4]byte
 17305  }
 17306  
 17307  type prefixes_cursor = prefixes_cursor1
 17308  
 17309  func prefixesConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17310  	var pNew uintptr
 17311  	var rc int32
 17312  
 17313  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17314  		ts+6098)
 17315  	if rc == SQLITE_OK {
 17316  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_vtab{})))
 17317  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17318  		if pNew == uintptr(0) {
 17319  			return SQLITE_NOMEM
 17320  		}
 17321  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(prefixes_vtab{})))
 17322  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 17323  	}
 17324  	return rc
 17325  }
 17326  
 17327  func prefixesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17328  	var p uintptr = pVtab
 17329  	sqlite3.Xsqlite3_free(tls, p)
 17330  	return SQLITE_OK
 17331  }
 17332  
 17333  func prefixesOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17334  	var pCur uintptr
 17335  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(prefixes_cursor{})))
 17336  	if pCur == uintptr(0) {
 17337  		return SQLITE_NOMEM
 17338  	}
 17339  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(prefixes_cursor{})))
 17340  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17341  	return SQLITE_OK
 17342  }
 17343  
 17344  func prefixesClose(tls *libc.TLS, cur uintptr) int32 {
 17345  	var pCur uintptr = cur
 17346  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17347  	sqlite3.Xsqlite3_free(tls, pCur)
 17348  	return SQLITE_OK
 17349  }
 17350  
 17351  func prefixesNext(tls *libc.TLS, cur uintptr) int32 {
 17352  	var pCur uintptr = cur
 17353  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid++
 17354  	return SQLITE_OK
 17355  }
 17356  
 17357  func prefixesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17358  	var pCur uintptr = cur
 17359  	switch i {
 17360  	case 0:
 17361  		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),
 17362  			uintptr(0))
 17363  		break
 17364  	default:
 17365  		sqlite3.Xsqlite3_result_text(tls, ctx, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr, (*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr, uintptr(0))
 17366  		break
 17367  	}
 17368  	return SQLITE_OK
 17369  }
 17370  
 17371  func prefixesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17372  	var pCur uintptr = cur
 17373  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid
 17374  	return SQLITE_OK
 17375  }
 17376  
 17377  func prefixesEof(tls *libc.TLS, cur uintptr) int32 {
 17378  	var pCur uintptr = cur
 17379  	return libc.Bool32((*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid > sqlite3_int64((*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr))
 17380  }
 17381  
 17382  func prefixesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17383  	bp := tls.Alloc(8)
 17384  	defer tls.Free(8)
 17385  
 17386  	var pCur uintptr = pVtabCursor
 17387  	sqlite3.Xsqlite3_free(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr)
 17388  	if argc > 0 {
 17389  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 17390  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = func() int32 {
 17391  			if (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr != 0 {
 17392  				return int32(libc.Xstrlen(tls, (*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr))
 17393  			}
 17394  			return 0
 17395  		}()
 17396  	} else {
 17397  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FzStr = uintptr(0)
 17398  		(*prefixes_cursor)(unsafe.Pointer(pCur)).FnStr = 0
 17399  	}
 17400  	(*prefixes_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17401  	return SQLITE_OK
 17402  }
 17403  
 17404  func prefixesBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17405  	var i int32
 17406  	var p uintptr
 17407  
 17408  	i = 0
 17409  	p = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 17410  __1:
 17411  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 17412  		goto __3
 17413  	}
 17414  	{
 17415  		if (*sqlite3_index_constraint)(unsafe.Pointer(p)).FiColumn != 1 {
 17416  			goto __2
 17417  		}
 17418  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) != SQLITE_INDEX_CONSTRAINT_EQ {
 17419  			goto __2
 17420  		}
 17421  		if !(int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fusable) != 0) {
 17422  			goto __2
 17423  		}
 17424  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 17425  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17426  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17427  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17428  		return SQLITE_OK
 17429  
 17430  	}
 17431  	goto __2
 17432  __2:
 17433  	i++
 17434  	p += 12
 17435  	goto __1
 17436  	goto __3
 17437  __3:
 17438  	;
 17439  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1000000000)
 17440  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000000000)
 17441  	return SQLITE_OK
 17442  }
 17443  
 17444  var prefixesModule = sqlite3_module{
 17445  	FxConnect:    0,
 17446  	FxBestIndex:  0,
 17447  	FxDisconnect: 0,
 17448  	FxOpen:       0,
 17449  	FxClose:      0,
 17450  	FxFilter:     0,
 17451  	FxNext:       0,
 17452  	FxEof:        0,
 17453  	FxColumn:     0,
 17454  	FxRowid:      0,
 17455  }
 17456  
 17457  func prefixLengthFunc(tls *libc.TLS, ctx uintptr, nVal int32, apVal uintptr) {
 17458  	var nByte int32
 17459  	var nRet int32 = 0
 17460  	var zL uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17461  	var zR uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17462  	var nL int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 17463  	var nR int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal + 1*8)))
 17464  	var i int32
 17465  
 17466  	nByte = func() int32 {
 17467  		if nL > nR {
 17468  			return nL
 17469  		}
 17470  		return nR
 17471  	}()
 17472  	for i = 0; i < nByte; i++ {
 17473  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i)))) != int32(*(*uint8)(unsafe.Pointer(zR + uintptr(i)))) {
 17474  			break
 17475  		}
 17476  		if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 != 0x80 {
 17477  			nRet++
 17478  		}
 17479  	}
 17480  
 17481  	if int32(*(*uint8)(unsafe.Pointer(zL + uintptr(i))))&0xC0 == 0x80 {
 17482  		nRet--
 17483  	}
 17484  	sqlite3.Xsqlite3_result_int(tls, ctx, nRet)
 17485  }
 17486  
 17487  func sqlite3_prefixes_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17488  	var rc int32 = SQLITE_OK
 17489  	_ = pApi
 17490  
 17491  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6162, uintptr(unsafe.Pointer(&prefixesModule)), uintptr(0))
 17492  	if rc == SQLITE_OK {
 17493  		rc = sqlite3.Xsqlite3_create_function(tls,
 17494  			db, ts+6171, 2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 17495  				f func(*libc.TLS, uintptr, int32, uintptr)
 17496  			}{prefixLengthFunc})), uintptr(0), uintptr(0))
 17497  	}
 17498  	return rc
 17499  }
 17500  
 17501  type qpvtab_vtab1 = struct{ Fbase sqlite3_vtab }
 17502  
 17503  type qpvtab_vtab = qpvtab_vtab1
 17504  
 17505  type qpvtab_cursor1 = struct {
 17506  	Fbase   sqlite3_vtab_cursor
 17507  	FiRowid sqlite3_int64
 17508  	FzData  uintptr
 17509  	FnData  int32
 17510  	Fflags  int32
 17511  }
 17512  
 17513  type qpvtab_cursor = qpvtab_cursor1
 17514  
 17515  var azColname = [13]uintptr{
 17516  	ts + 6185,
 17517  	ts + 6188,
 17518  	ts + 6191,
 17519  	ts + 6194,
 17520  	ts + 6197,
 17521  	ts + 6200,
 17522  	ts + 6204, ts + 6206, ts + 6208, ts + 6210, ts + 6212,
 17523  	ts + 6214,
 17524  	ts + 584,
 17525  }
 17526  
 17527  func qpvtabConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 17528  	var pNew uintptr
 17529  	var rc int32
 17530  
 17531  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 17532  		ts+6220)
 17533  	if rc == SQLITE_OK {
 17534  		pNew = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_vtab{})))
 17535  		*(*uintptr)(unsafe.Pointer(ppVtab)) = pNew
 17536  		if pNew == uintptr(0) {
 17537  			return SQLITE_NOMEM
 17538  		}
 17539  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(qpvtab_vtab{})))
 17540  	}
 17541  	return rc
 17542  }
 17543  
 17544  func qpvtabDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 17545  	var p uintptr = pVtab
 17546  	sqlite3.Xsqlite3_free(tls, p)
 17547  	return SQLITE_OK
 17548  }
 17549  
 17550  func qpvtabOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 17551  	var pCur uintptr
 17552  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(qpvtab_cursor{})))
 17553  	if pCur == uintptr(0) {
 17554  		return SQLITE_NOMEM
 17555  	}
 17556  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(qpvtab_cursor{})))
 17557  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 17558  	return SQLITE_OK
 17559  }
 17560  
 17561  func qpvtabClose(tls *libc.TLS, cur uintptr) int32 {
 17562  	var pCur uintptr = cur
 17563  	sqlite3.Xsqlite3_free(tls, pCur)
 17564  	return SQLITE_OK
 17565  }
 17566  
 17567  func qpvtabNext(tls *libc.TLS, cur uintptr) int32 {
 17568  	var pCur uintptr = cur
 17569  	if (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 17570  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 17571  		var zEnd uintptr = libc.Xstrchr(tls, z, '\n')
 17572  		if zEnd != 0 {
 17573  			zEnd++
 17574  		}
 17575  		(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = sqlite3_int64(int32((int64(zEnd) - int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData)) / 1))
 17576  	}
 17577  	return SQLITE_OK
 17578  }
 17579  
 17580  func qpvtabColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 17581  	bp := tls.Alloc(1)
 17582  	defer tls.Free(1)
 17583  
 17584  	var pCur uintptr = cur
 17585  	if i >= QPVTAB_VN && i <= QPVTAB_RHS && (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid < sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData) {
 17586  		var z uintptr = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData + uintptr((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid)
 17587  		var zEnd uintptr
 17588  		var j int32
 17589  		j = QPVTAB_VN
 17590  		for 1 != 0 {
 17591  			zEnd = libc.Xstrchr(tls, z, func() int32 {
 17592  				if j == QPVTAB_RHS {
 17593  					return '\n'
 17594  				}
 17595  				return ','
 17596  			}())
 17597  			if j == i || zEnd == uintptr(0) {
 17598  				break
 17599  			}
 17600  			z = zEnd + uintptr(1)
 17601  			j++
 17602  		}
 17603  		if zEnd == z {
 17604  			sqlite3.Xsqlite3_result_null(tls, ctx)
 17605  		} else if i == QPVTAB_IX || i == QPVTAB_OP || i == QPVTAB_UX {
 17606  			sqlite3.Xsqlite3_result_int(tls, ctx, libc.Xatoi(tls, z))
 17607  		} else {
 17608  			sqlite3.Xsqlite3_result_text64(tls, ctx, z, uint64((int64(zEnd)-int64(z))/1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 17609  		}
 17610  	} else if i >= QPVTAB_A && i <= QPVTAB_E {
 17611  		if (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags&0x001 != 0 {
 17612  			sqlite3.Xsqlite3_result_int(tls, ctx, i-QPVTAB_A+1)
 17613  		} else {
 17614  			*(*int8)(unsafe.Pointer(bp)) = int8('a' + i - QPVTAB_A)
 17615  			sqlite3.Xsqlite3_result_text64(tls, ctx, bp, uint64(1), libc.UintptrFromInt32(-1), uint8(SQLITE_UTF8))
 17616  		}
 17617  	} else if i == QPVTAB_FLAGS {
 17618  		sqlite3.Xsqlite3_result_int(tls, ctx, (*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags)
 17619  	}
 17620  	return SQLITE_OK
 17621  }
 17622  
 17623  func qpvtabRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 17624  	var pCur uintptr = cur
 17625  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid
 17626  	return SQLITE_OK
 17627  }
 17628  
 17629  func qpvtabEof(tls *libc.TLS, cur uintptr) int32 {
 17630  	var pCur uintptr = cur
 17631  	return libc.Bool32((*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid >= sqlite3_int64((*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData))
 17632  }
 17633  
 17634  func qpvtabFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 17635  	var pCur uintptr = pVtabCursor
 17636  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(0)
 17637  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FzData = idxStr
 17638  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).FnData = int32(libc.Xstrlen(tls, idxStr))
 17639  	(*qpvtab_cursor)(unsafe.Pointer(pCur)).Fflags = idxNum
 17640  	return SQLITE_OK
 17641  }
 17642  
 17643  func qpvtabStrAppendValue(tls *libc.TLS, pStr uintptr, pVal uintptr) {
 17644  	bp := tls.Alloc(25)
 17645  	defer tls.Free(25)
 17646  
 17647  	switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 17648  	case SQLITE_NULL:
 17649  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+5846, 0)
 17650  		break
 17651  	case SQLITE_INTEGER:
 17652  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6325, libc.VaList(bp, sqlite3.Xsqlite3_value_int64(tls, pVal)))
 17653  		break
 17654  	case SQLITE_FLOAT:
 17655  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6330, libc.VaList(bp+8, sqlite3.Xsqlite3_value_double(tls, pVal)))
 17656  		break
 17657  	case SQLITE_TEXT:
 17658  		{
 17659  			var i int32
 17660  			var a uintptr = sqlite3.Xsqlite3_value_text(tls, pVal)
 17661  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 17662  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17663  			for i = 0; i < n; i++ {
 17664  				*(*int8)(unsafe.Pointer(bp + 24)) = *(*int8)(unsafe.Pointer(a + uintptr(i)))
 17665  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\n' {
 17666  					*(*int8)(unsafe.Pointer(bp + 24)) = int8(' ')
 17667  				}
 17668  				sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 17669  				if int32(*(*int8)(unsafe.Pointer(bp + 24))) == '\'' {
 17670  					sqlite3.Xsqlite3_str_append(tls, pStr, bp+24, 1)
 17671  				}
 17672  			}
 17673  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17674  			break
 17675  
 17676  		}
 17677  	case SQLITE_BLOB:
 17678  		{
 17679  			var i int32
 17680  			var a uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 17681  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 17682  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+6334, 2)
 17683  			for i = 0; i < n; i++ {
 17684  				sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6337, libc.VaList(bp+16, int32(*(*uint8)(unsafe.Pointer(a + uintptr(i))))))
 17685  			}
 17686  			sqlite3.Xsqlite3_str_append(tls, pStr, ts+5624, 1)
 17687  			break
 17688  
 17689  		}
 17690  	}
 17691  }
 17692  
 17693  func qpvtabBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 17694  	bp := tls.Alloc(120)
 17695  	defer tls.Free(120)
 17696  
 17697  	var pStr uintptr = sqlite3.Xsqlite3_str_new(tls, uintptr(0))
 17698  	var i int32
 17699  	var k int32 = 0
 17700  	var rc int32
 17701  	_ = rc
 17702  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6342, libc.VaList(bp, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint))
 17703  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 17704  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 17705  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 17706  		if iCol == QPVTAB_FLAGS && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 17707  			*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 17708  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 17709  
 17710  			if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 17711  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(bp + 112)))
 17712  				if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x002 != 0 {
 17713  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 17714  				}
 17715  			}
 17716  		}
 17717  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 17718  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 17719  			iCol = QPVTAB_NONE
 17720  		}
 17721  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6362,
 17722  			libc.VaList(bp+8, i,
 17723  				azColname[iCol],
 17724  				op,
 17725  				int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable)))
 17726  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 17727  		rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, i, bp+112)
 17728  
 17729  		if *(*uintptr)(unsafe.Pointer(bp + 112)) != 0 {
 17730  			qpvtabStrAppendValue(tls, pStr, *(*uintptr)(unsafe.Pointer(bp + 112)))
 17731  		}
 17732  		sqlite3.Xsqlite3_str_append(tls, pStr, ts+6387, 1)
 17733  	}
 17734  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 17735  		var iCol int32 = (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).FiColumn
 17736  		var op int32 = int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12)).Fop)
 17737  		if op == SQLITE_INDEX_CONSTRAINT_LIMIT ||
 17738  			op == SQLITE_INDEX_CONSTRAINT_OFFSET {
 17739  			iCol = QPVTAB_NONE
 17740  		}
 17741  		if iCol >= QPVTAB_A && (*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(i)*12)).Fusable != 0 {
 17742  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = libc.PreIncInt32(&k, 1)
 17743  			if iCol <= QPVTAB_FLAGS || (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum&0x004 != 0 {
 17744  				(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 17745  			}
 17746  		}
 17747  	}
 17748  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6389, libc.VaList(bp+40, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy))
 17749  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; i++ {
 17750  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(i)*8)).FiColumn
 17751  		sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6406, libc.VaList(bp+48, i,
 17752  			func() uintptr {
 17753  				if iCol >= 0 {
 17754  					return azColname[iCol]
 17755  				}
 17756  				return ts + 6427
 17757  			}(),
 17758  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy+uintptr(i)*8)).Fdesc)))
 17759  	}
 17760  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6433,
 17761  		libc.VaList(bp+72, sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)))
 17762  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6463, libc.VaList(bp+80, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags))
 17763  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6480, libc.VaList(bp+88, int32((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 17764  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(10)
 17765  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(10)
 17766  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6496, libc.VaList(bp+96, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum))
 17767  	sqlite3.Xsqlite3_str_appendf(tls, pStr, ts+6511,
 17768  		libc.VaList(bp+104, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed))
 17769  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_str_finish(tls, pStr)
 17770  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 17771  	return SQLITE_OK
 17772  }
 17773  
 17774  var qpvtabModule = sqlite3_module{
 17775  	FxConnect:    0,
 17776  	FxBestIndex:  0,
 17777  	FxDisconnect: 0,
 17778  	FxOpen:       0,
 17779  	FxClose:      0,
 17780  	FxFilter:     0,
 17781  	FxNext:       0,
 17782  	FxEof:        0,
 17783  	FxColumn:     0,
 17784  	FxRowid:      0,
 17785  }
 17786  
 17787  func sqlite3_qpvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 17788  	var rc int32 = SQLITE_OK
 17789  	_ = pApi
 17790  
 17791  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+6535, uintptr(unsafe.Pointer(&qpvtabModule)), uintptr(0))
 17792  	return rc
 17793  }
 17794  
 17795  type ReStateNumber = uint16
 17796  
 17797  type ReStateSet1 = struct {
 17798  	FnState      uint32
 17799  	F__ccgo_pad1 [4]byte
 17800  	FaState      uintptr
 17801  }
 17802  
 17803  type ReStateSet = ReStateSet1
 17804  
 17805  type ReInput1 = struct {
 17806  	Fz  uintptr
 17807  	Fi  int32
 17808  	Fmx int32
 17809  }
 17810  
 17811  type ReInput = ReInput1
 17812  
 17813  type ReCompiled1 = struct {
 17814  	FsIn       ReInput
 17815  	FzErr      uintptr
 17816  	FaOp       uintptr
 17817  	FaArg      uintptr
 17818  	FxNextChar uintptr
 17819  	FzInit     [12]uint8
 17820  	FnInit     int32
 17821  	FnState    uint32
 17822  	FnAlloc    uint32
 17823  }
 17824  
 17825  type ReCompiled = ReCompiled1
 17826  
 17827  func re_add_state(tls *libc.TLS, pSet uintptr, newState int32) {
 17828  	var i uint32
 17829  	for i = uint32(0); i < (*ReStateSet)(unsafe.Pointer(pSet)).FnState; i++ {
 17830  		if int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(i)*2))) == newState {
 17831  			return
 17832  		}
 17833  	}
 17834  	*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pSet)).FaState + uintptr(libc.PostIncUint32(&(*ReStateSet)(unsafe.Pointer(pSet)).FnState, 1))*2)) = ReStateNumber(newState)
 17835  }
 17836  
 17837  func re_next_char(tls *libc.TLS, p uintptr) uint32 {
 17838  	var c uint32
 17839  	if (*ReInput)(unsafe.Pointer(p)).Fi >= (*ReInput)(unsafe.Pointer(p)).Fmx {
 17840  		return uint32(0)
 17841  	}
 17842  	c = uint32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*ReInput)(unsafe.Pointer(p)).Fi, 1)))))
 17843  	if c >= uint32(0x80) {
 17844  		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 {
 17845  			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)
 17846  			if c < uint32(0x80) {
 17847  				c = uint32(0xfffd)
 17848  			}
 17849  		} 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 &&
 17850  			int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+1))))&0xc0 == 0x80 {
 17851  			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)
 17852  			*(*int32)(unsafe.Pointer(p + 8)) += 2
 17853  			if c <= uint32(0x7ff) || c >= uint32(0xd800) && c <= uint32(0xdfff) {
 17854  				c = uint32(0xfffd)
 17855  			}
 17856  		} 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 &&
 17857  			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 {
 17858  			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) |
 17859  				uint32(int32(*(*uint8)(unsafe.Pointer((*ReInput)(unsafe.Pointer(p)).Fz + uintptr((*ReInput)(unsafe.Pointer(p)).Fi+2))))&0x3f)
 17860  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 17861  			if c <= uint32(0xffff) || c > uint32(0x10ffff) {
 17862  				c = uint32(0xfffd)
 17863  			}
 17864  		} else {
 17865  			c = uint32(0xfffd)
 17866  		}
 17867  	}
 17868  	return c
 17869  }
 17870  
 17871  func re_next_char_nocase(tls *libc.TLS, p uintptr) uint32 {
 17872  	var c uint32 = re_next_char(tls, p)
 17873  	if c >= uint32('A') && c <= uint32('Z') {
 17874  		c = c + uint32('a'-'A')
 17875  	}
 17876  	return c
 17877  }
 17878  
 17879  func re_word_char(tls *libc.TLS, c int32) int32 {
 17880  	return libc.Bool32(c >= '0' && c <= '9' || c >= 'a' && c <= 'z' ||
 17881  		c >= 'A' && c <= 'Z' || c == '_')
 17882  }
 17883  
 17884  func re_digit_char(tls *libc.TLS, c int32) int32 {
 17885  	return libc.Bool32(c >= '0' && c <= '9')
 17886  }
 17887  
 17888  func re_space_char(tls *libc.TLS, c int32) int32 {
 17889  	return libc.Bool32(c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '\v' || c == '\f')
 17890  }
 17891  
 17892  func sqlite3re_match(tls *libc.TLS, pRe uintptr, zIn uintptr, nIn int32) int32 {
 17893  	bp := tls.Alloc(248)
 17894  	defer tls.Free(248)
 17895  
 17896  	var pThis uintptr
 17897  	var pNext uintptr
 17898  
 17899  	var pToFree uintptr
 17900  	var i uint32
 17901  	var iSwap uint32
 17902  	var c int32
 17903  	var cPrev int32
 17904  	var rc int32
 17905  
 17906  	var x uint8
 17907  	var j int32
 17908  	var n int32
 17909  	var hit int32
 17910  	var x1 int32
 17911  	i = uint32(0)
 17912  	iSwap = uint32(0)
 17913  	c = RE_EOF + 1
 17914  	cPrev = 0
 17915  	rc = 0
 17916  
 17917  	(*ReInput)(unsafe.Pointer(bp + 232)).Fz = zIn
 17918  	(*ReInput)(unsafe.Pointer(bp + 232)).Fi = 0
 17919  	(*ReInput)(unsafe.Pointer(bp + 232)).Fmx = func() int32 {
 17920  		if nIn >= 0 {
 17921  			return nIn
 17922  		}
 17923  		return int32(libc.Xstrlen(tls, zIn))
 17924  	}()
 17925  
 17926  	if !((*ReCompiled)(unsafe.Pointer(pRe)).FnInit != 0) {
 17927  		goto __1
 17928  	}
 17929  	x = *(*uint8)(unsafe.Pointer(pRe + 48))
 17930  __2:
 17931  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit <= (*ReInput)(unsafe.Pointer(bp+232)).Fmx &&
 17932  		(int32(*(*uint8)(unsafe.Pointer(zIn + uintptr((*ReInput)(unsafe.Pointer(bp+232)).Fi)))) != int32(x) || libc.Xstrncmp(tls, zIn+uintptr((*ReInput)(unsafe.Pointer(bp+232)).Fi), pRe+48, uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnInit)) != 0)) {
 17933  		goto __3
 17934  	}
 17935  	(*ReInput)(unsafe.Pointer(bp+232)).Fi++
 17936  	goto __2
 17937  __3:
 17938  	;
 17939  	if !((*ReInput)(unsafe.Pointer(bp+232)).Fi+(*ReCompiled)(unsafe.Pointer(pRe)).FnInit > (*ReInput)(unsafe.Pointer(bp+232)).Fmx) {
 17940  		goto __4
 17941  	}
 17942  	return 0
 17943  __4:
 17944  	;
 17945  __1:
 17946  	;
 17947  	if !(uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState) <= uint64(unsafe.Sizeof([100]ReStateNumber{}))/(uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2))) {
 17948  		goto __5
 17949  	}
 17950  	pToFree = uintptr(0)
 17951  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = bp + 32
 17952  	goto __6
 17953  __5:
 17954  	pToFree = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(ReStateNumber(0)))*uint64(2)*uint64((*ReCompiled)(unsafe.Pointer(pRe)).FnState))
 17955  	if !(pToFree == uintptr(0)) {
 17956  		goto __7
 17957  	}
 17958  	return -1
 17959  __7:
 17960  	;
 17961  	(*ReStateSet)(unsafe.Pointer(bp)).FaState = pToFree
 17962  __6:
 17963  	;
 17964  	(*ReStateSet)(unsafe.Pointer(bp + 1*16)).FaState = (*ReStateSet)(unsafe.Pointer(bp)).FaState + uintptr((*ReCompiled)(unsafe.Pointer(pRe)).FnState)*2
 17965  	pNext = bp + 1*16
 17966  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 17967  	re_add_state(tls, pNext, 0)
 17968  __8:
 17969  	if !(c != RE_EOF && (*ReStateSet)(unsafe.Pointer(pNext)).FnState > uint32(0)) {
 17970  		goto __9
 17971  	}
 17972  	cPrev = c
 17973  	c = int32((*struct {
 17974  		f func(*libc.TLS, uintptr) uint32
 17975  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar})).f(tls, bp+232))
 17976  	pThis = pNext
 17977  	pNext = bp + uintptr(iSwap)*16
 17978  	iSwap = uint32(1) - iSwap
 17979  	(*ReStateSet)(unsafe.Pointer(pNext)).FnState = uint32(0)
 17980  	i = uint32(0)
 17981  __10:
 17982  	if !(i < (*ReStateSet)(unsafe.Pointer(pThis)).FnState) {
 17983  		goto __12
 17984  	}
 17985  	x1 = int32(*(*ReStateNumber)(unsafe.Pointer((*ReStateSet)(unsafe.Pointer(pThis)).FaState + uintptr(i)*2)))
 17986  	switch int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) {
 17987  	case RE_OP_MATCH:
 17988  		goto __14
 17989  	case RE_OP_ANY:
 17990  		goto __15
 17991  	case RE_OP_WORD:
 17992  		goto __16
 17993  	case RE_OP_NOTWORD:
 17994  		goto __17
 17995  	case RE_OP_DIGIT:
 17996  		goto __18
 17997  	case RE_OP_NOTDIGIT:
 17998  		goto __19
 17999  	case RE_OP_SPACE:
 18000  		goto __20
 18001  	case RE_OP_NOTSPACE:
 18002  		goto __21
 18003  	case RE_OP_BOUNDARY:
 18004  		goto __22
 18005  	case RE_OP_ANYSTAR:
 18006  		goto __23
 18007  	case RE_OP_FORK:
 18008  		goto __24
 18009  	case RE_OP_GOTO:
 18010  		goto __25
 18011  	case RE_OP_ACCEPT:
 18012  		goto __26
 18013  	case RE_OP_CC_EXC:
 18014  		goto __27
 18015  	case RE_OP_CC_INC:
 18016  		goto __28
 18017  	}
 18018  	goto __13
 18019  __14:
 18020  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)) == c) {
 18021  		goto __29
 18022  	}
 18023  	re_add_state(tls, pNext, x1+1)
 18024  __29:
 18025  	;
 18026  	goto __13
 18027  
 18028  __15:
 18029  	if !(c != 0) {
 18030  		goto __30
 18031  	}
 18032  	re_add_state(tls, pNext, x1+1)
 18033  __30:
 18034  	;
 18035  	goto __13
 18036  
 18037  __16:
 18038  	if !(re_word_char(tls, c) != 0) {
 18039  		goto __31
 18040  	}
 18041  	re_add_state(tls, pNext, x1+1)
 18042  __31:
 18043  	;
 18044  	goto __13
 18045  
 18046  __17:
 18047  	if !(!(re_word_char(tls, c) != 0) && c != 0) {
 18048  		goto __32
 18049  	}
 18050  	re_add_state(tls, pNext, x1+1)
 18051  __32:
 18052  	;
 18053  	goto __13
 18054  
 18055  __18:
 18056  	if !(re_digit_char(tls, c) != 0) {
 18057  		goto __33
 18058  	}
 18059  	re_add_state(tls, pNext, x1+1)
 18060  __33:
 18061  	;
 18062  	goto __13
 18063  
 18064  __19:
 18065  	if !(!(re_digit_char(tls, c) != 0) && c != 0) {
 18066  		goto __34
 18067  	}
 18068  	re_add_state(tls, pNext, x1+1)
 18069  __34:
 18070  	;
 18071  	goto __13
 18072  
 18073  __20:
 18074  	if !(re_space_char(tls, c) != 0) {
 18075  		goto __35
 18076  	}
 18077  	re_add_state(tls, pNext, x1+1)
 18078  __35:
 18079  	;
 18080  	goto __13
 18081  
 18082  __21:
 18083  	if !(!(re_space_char(tls, c) != 0) && c != 0) {
 18084  		goto __36
 18085  	}
 18086  	re_add_state(tls, pNext, x1+1)
 18087  __36:
 18088  	;
 18089  	goto __13
 18090  
 18091  __22:
 18092  	if !(re_word_char(tls, c) != re_word_char(tls, cPrev)) {
 18093  		goto __37
 18094  	}
 18095  	re_add_state(tls, pThis, x1+1)
 18096  __37:
 18097  	;
 18098  	goto __13
 18099  
 18100  __23:
 18101  	re_add_state(tls, pNext, x1)
 18102  	re_add_state(tls, pThis, x1+1)
 18103  	goto __13
 18104  
 18105  __24:
 18106  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18107  	re_add_state(tls, pThis, x1+1)
 18108  	goto __13
 18109  
 18110  __25:
 18111  	re_add_state(tls, pThis, x1+*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4)))
 18112  	goto __13
 18113  
 18114  __26:
 18115  	rc = 1
 18116  	goto re_match_end
 18117  
 18118  __27:
 18119  	if !(c == 0) {
 18120  		goto __38
 18121  	}
 18122  	goto __13
 18123  __38:
 18124  	;
 18125  	goto re_op_cc_inc
 18126  
 18127  __28:
 18128  re_op_cc_inc:
 18129  	j = 1
 18130  	n = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1)*4))
 18131  	hit = 0
 18132  	j = 1
 18133  __39:
 18134  	if !(j > 0 && j < n) {
 18135  		goto __41
 18136  	}
 18137  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1+j)))) == RE_OP_CC_VALUE) {
 18138  		goto __42
 18139  	}
 18140  	if !(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(x1+j)*4)) == c) {
 18141  		goto __44
 18142  	}
 18143  	hit = 1
 18144  	j = -1
 18145  __44:
 18146  	;
 18147  	goto __43
 18148  __42:
 18149  	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) {
 18150  		goto __45
 18151  	}
 18152  	hit = 1
 18153  	j = -1
 18154  	goto __46
 18155  __45:
 18156  	j++
 18157  __46:
 18158  	;
 18159  __43:
 18160  	;
 18161  	goto __40
 18162  __40:
 18163  	j++
 18164  	goto __39
 18165  	goto __41
 18166  __41:
 18167  	;
 18168  	if !(int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(x1)))) == RE_OP_CC_EXC) {
 18169  		goto __47
 18170  	}
 18171  	hit = libc.BoolInt32(!(hit != 0))
 18172  __47:
 18173  	;
 18174  	if !(hit != 0) {
 18175  		goto __48
 18176  	}
 18177  	re_add_state(tls, pNext, x1+n)
 18178  __48:
 18179  	;
 18180  	goto __13
 18181  
 18182  __13:
 18183  	;
 18184  	goto __11
 18185  __11:
 18186  	i++
 18187  	goto __10
 18188  	goto __12
 18189  __12:
 18190  	;
 18191  	goto __8
 18192  __9:
 18193  	;
 18194  	i = uint32(0)
 18195  __49:
 18196  	if !(i < (*ReStateSet)(unsafe.Pointer(pNext)).FnState) {
 18197  		goto __51
 18198  	}
 18199  	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) {
 18200  		goto __52
 18201  	}
 18202  	rc = 1
 18203  	goto __51
 18204  __52:
 18205  	;
 18206  	goto __50
 18207  __50:
 18208  	i++
 18209  	goto __49
 18210  	goto __51
 18211  __51:
 18212  	;
 18213  re_match_end:
 18214  	sqlite3.Xsqlite3_free(tls, pToFree)
 18215  	return rc
 18216  }
 18217  
 18218  func re_resize(tls *libc.TLS, p uintptr, N int32) int32 {
 18219  	var aOp uintptr
 18220  	var aArg uintptr
 18221  	aOp = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp, uint64(N)*uint64(unsafe.Sizeof(int8(0))))
 18222  	if aOp == uintptr(0) {
 18223  		return 1
 18224  	}
 18225  	(*ReCompiled)(unsafe.Pointer(p)).FaOp = aOp
 18226  	aArg = sqlite3.Xsqlite3_realloc64(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 18227  	if aArg == uintptr(0) {
 18228  		return 1
 18229  	}
 18230  	(*ReCompiled)(unsafe.Pointer(p)).FaArg = aArg
 18231  	(*ReCompiled)(unsafe.Pointer(p)).FnAlloc = uint32(N)
 18232  	return 0
 18233  }
 18234  
 18235  func re_insert(tls *libc.TLS, p uintptr, iBefore int32, op int32, arg int32) int32 {
 18236  	var i int32
 18237  	if (*ReCompiled)(unsafe.Pointer(p)).FnAlloc <= (*ReCompiled)(unsafe.Pointer(p)).FnState && re_resize(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnAlloc*uint32(2))) != 0 {
 18238  		return 0
 18239  	}
 18240  	for i = int32((*ReCompiled)(unsafe.Pointer(p)).FnState); i > iBefore; i-- {
 18241  		*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i))) = *(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(i-1)))
 18242  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i)*4)) = *(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(i-1)*4))
 18243  	}
 18244  	(*ReCompiled)(unsafe.Pointer(p)).FnState++
 18245  	*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaOp + uintptr(iBefore))) = int8(op)
 18246  	*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iBefore)*4)) = arg
 18247  	return iBefore
 18248  }
 18249  
 18250  func re_append(tls *libc.TLS, p uintptr, op int32, arg int32) int32 {
 18251  	return re_insert(tls, p, int32((*ReCompiled)(unsafe.Pointer(p)).FnState), op, arg)
 18252  }
 18253  
 18254  func re_copy(tls *libc.TLS, p uintptr, iStart int32, N int32) {
 18255  	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 {
 18256  		return
 18257  	}
 18258  	libc.Xmemcpy(tls, (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState), (*ReCompiled)(unsafe.Pointer(p)).FaOp+uintptr(iStart), uint64(N)*uint64(unsafe.Sizeof(int8(0))))
 18259  	libc.Xmemcpy(tls, (*ReCompiled)(unsafe.Pointer(p)).FaArg+uintptr((*ReCompiled)(unsafe.Pointer(p)).FnState)*4, (*ReCompiled)(unsafe.Pointer(p)).FaArg+uintptr(iStart)*4, uint64(N)*uint64(unsafe.Sizeof(int32(0))))
 18260  	*(*uint32)(unsafe.Pointer(p + 64)) += uint32(N)
 18261  }
 18262  
 18263  func re_hex(tls *libc.TLS, c int32, pV uintptr) int32 {
 18264  	if c >= '0' && c <= '9' {
 18265  		c = c - '0'
 18266  	} else if c >= 'a' && c <= 'f' {
 18267  		c = c - ('a' - 10)
 18268  	} else if c >= 'A' && c <= 'F' {
 18269  		c = c - ('A' - 10)
 18270  	} else {
 18271  		return 0
 18272  	}
 18273  	*(*int32)(unsafe.Pointer(pV)) = *(*int32)(unsafe.Pointer(pV))*16 + c&0xff
 18274  	return 1
 18275  }
 18276  
 18277  func re_esc_char(tls *libc.TLS, p uintptr) uint32 {
 18278  	bp := tls.Alloc(4)
 18279  	defer tls.Free(4)
 18280  
 18281  	var i int32
 18282  	*(*int32)(unsafe.Pointer(bp)) = 0
 18283  	var c int8
 18284  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18285  		return uint32(0)
 18286  	}
 18287  	c = int8(*(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi))))
 18288  	if int32(c) == 'u' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+4 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18289  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18290  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18291  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 &&
 18292  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 3))), bp) != 0 &&
 18293  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 4))), bp) != 0 {
 18294  			*(*int32)(unsafe.Pointer(p + 8)) += 5
 18295  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18296  		}
 18297  	}
 18298  	if int32(c) == 'x' && (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi+2 < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18299  		var zIn uintptr = (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)
 18300  		if re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 1))), bp) != 0 &&
 18301  			re_hex(tls, int32(*(*uint8)(unsafe.Pointer(zIn + 2))), bp) != 0 {
 18302  			*(*int32)(unsafe.Pointer(p + 8)) += 3
 18303  			return uint32(*(*int32)(unsafe.Pointer(bp)))
 18304  		}
 18305  	}
 18306  	for i = 0; zEsc[i] != 0 && int32(zEsc[i]) != int32(c); i++ {
 18307  	}
 18308  	if zEsc[i] != 0 {
 18309  		if i < 6 {
 18310  			c = zTrans[i]
 18311  		}
 18312  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18313  	} else {
 18314  		(*ReCompiled)(unsafe.Pointer(p)).FzErr = ts + 6542
 18315  	}
 18316  	return uint32(c)
 18317  }
 18318  
 18319  var zEsc = *(*[21]int8)(unsafe.Pointer(ts + 6559))
 18320  var zTrans = *(*[7]int8)(unsafe.Pointer(ts + 6580))
 18321  
 18322  func rePeek(tls *libc.TLS, p uintptr) uint8 {
 18323  	if (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi < (*ReCompiled)(unsafe.Pointer(p)).FsIn.Fmx {
 18324  		return *(*uint8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fz + uintptr((*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi)))
 18325  	}
 18326  	return uint8(0)
 18327  }
 18328  
 18329  func re_subcompile_re(tls *libc.TLS, p uintptr) uintptr {
 18330  	var zErr uintptr
 18331  	var iStart int32
 18332  	var iEnd int32
 18333  	var iGoto int32
 18334  	iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18335  	zErr = re_subcompile_string(tls, p)
 18336  	if zErr != 0 {
 18337  		return zErr
 18338  	}
 18339  	for int32(rePeek(tls, p)) == '|' {
 18340  		iEnd = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18341  		re_insert(tls, p, iStart, RE_OP_FORK, iEnd+2-iStart)
 18342  		iGoto = re_append(tls, p, RE_OP_GOTO, 0)
 18343  		(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18344  		zErr = re_subcompile_string(tls, p)
 18345  		if zErr != 0 {
 18346  			return zErr
 18347  		}
 18348  		*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iGoto)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iGoto))
 18349  	}
 18350  	return uintptr(0)
 18351  }
 18352  
 18353  func re_subcompile_string(tls *libc.TLS, p uintptr) uintptr {
 18354  	var iPrev int32 = -1
 18355  	var iStart int32
 18356  	var c uint32
 18357  	var zErr uintptr
 18358  	for libc.AssignUint32(&c, (*struct {
 18359  		f func(*libc.TLS, uintptr) uint32
 18360  	})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18361  		iStart = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18362  		switch c {
 18363  		case uint32('|'):
 18364  			fallthrough
 18365  		case uint32('$'):
 18366  			fallthrough
 18367  		case uint32(')'):
 18368  			{
 18369  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi--
 18370  				return uintptr(0)
 18371  
 18372  			}
 18373  		case uint32('('):
 18374  			{
 18375  				zErr = re_subcompile_re(tls, p)
 18376  				if zErr != 0 {
 18377  					return zErr
 18378  				}
 18379  				if int32(rePeek(tls, p)) != ')' {
 18380  					return ts + 6587
 18381  				}
 18382  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18383  				break
 18384  
 18385  			}
 18386  		case uint32('.'):
 18387  			{
 18388  				if int32(rePeek(tls, p)) == '*' {
 18389  					re_append(tls, p, RE_OP_ANYSTAR, 0)
 18390  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18391  				} else {
 18392  					re_append(tls, p, RE_OP_ANY, 0)
 18393  				}
 18394  				break
 18395  
 18396  			}
 18397  		case uint32('*'):
 18398  			{
 18399  				if iPrev < 0 {
 18400  					return ts + 6601
 18401  				}
 18402  				re_insert(tls, p, iPrev, RE_OP_GOTO, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18403  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState+uint32(1)))
 18404  				break
 18405  
 18406  			}
 18407  		case uint32('+'):
 18408  			{
 18409  				if iPrev < 0 {
 18410  					return ts + 6621
 18411  				}
 18412  				re_append(tls, p, RE_OP_FORK, int32(uint32(iPrev)-(*ReCompiled)(unsafe.Pointer(p)).FnState))
 18413  				break
 18414  
 18415  			}
 18416  		case uint32('?'):
 18417  			{
 18418  				if iPrev < 0 {
 18419  					return ts + 6641
 18420  				}
 18421  				re_insert(tls, p, iPrev, RE_OP_FORK, int32((*ReCompiled)(unsafe.Pointer(p)).FnState-uint32(iPrev)+uint32(1)))
 18422  				break
 18423  
 18424  			}
 18425  		case uint32('{'):
 18426  			{
 18427  				var m int32 = 0
 18428  				var n int32 = 0
 18429  				var sz int32
 18430  				var j int32
 18431  				if iPrev < 0 {
 18432  					return ts + 6661
 18433  				}
 18434  				for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18435  					m = int32(uint32(m*10) + c - uint32('0'))
 18436  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18437  				}
 18438  				n = m
 18439  				if c == uint32(',') {
 18440  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18441  					n = 0
 18442  					for libc.AssignUint32(&c, uint32(rePeek(tls, p))) >= uint32('0') && c <= uint32('9') {
 18443  						n = int32(uint32(n*10) + c - uint32('0'))
 18444  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18445  					}
 18446  				}
 18447  				if c != uint32('}') {
 18448  					return ts + 6685
 18449  				}
 18450  				if n > 0 && n < m {
 18451  					return ts + 6699
 18452  				}
 18453  				(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18454  				sz = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iPrev))
 18455  				if m == 0 {
 18456  					if n == 0 {
 18457  						return ts + 6724
 18458  					}
 18459  					re_insert(tls, p, iPrev, RE_OP_FORK, sz+1)
 18460  					n--
 18461  				} else {
 18462  					for j = 1; j < m; j++ {
 18463  						re_copy(tls, p, iPrev, sz)
 18464  					}
 18465  				}
 18466  				for j = m; j < n; j++ {
 18467  					re_append(tls, p, RE_OP_FORK, sz+1)
 18468  					re_copy(tls, p, iPrev, sz)
 18469  				}
 18470  				if n == 0 && m > 0 {
 18471  					re_append(tls, p, RE_OP_FORK, -sz)
 18472  				}
 18473  				break
 18474  
 18475  			}
 18476  		case uint32('['):
 18477  			{
 18478  				var iFirst int32 = int32((*ReCompiled)(unsafe.Pointer(p)).FnState)
 18479  				if int32(rePeek(tls, p)) == '^' {
 18480  					re_append(tls, p, RE_OP_CC_EXC, 0)
 18481  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18482  				} else {
 18483  					re_append(tls, p, RE_OP_CC_INC, 0)
 18484  				}
 18485  				for libc.AssignUint32(&c, (*struct {
 18486  					f func(*libc.TLS, uintptr) uint32
 18487  				})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)) != uint32(0) {
 18488  					if c == uint32('[') && int32(rePeek(tls, p)) == ':' {
 18489  						return ts + 6757
 18490  					}
 18491  					if c == uint32('\\') {
 18492  						c = re_esc_char(tls, p)
 18493  					}
 18494  					if int32(rePeek(tls, p)) == '-' {
 18495  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18496  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18497  						c = (*struct {
 18498  							f func(*libc.TLS, uintptr) uint32
 18499  						})(unsafe.Pointer(&struct{ uintptr }{(*ReCompiled)(unsafe.Pointer(p)).FxNextChar})).f(tls, p)
 18500  						if c == uint32('\\') {
 18501  							c = re_esc_char(tls, p)
 18502  						}
 18503  						re_append(tls, p, RE_OP_CC_RANGE, int32(c))
 18504  					} else {
 18505  						re_append(tls, p, RE_OP_CC_VALUE, int32(c))
 18506  					}
 18507  					if int32(rePeek(tls, p)) == ']' {
 18508  						(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18509  						break
 18510  					}
 18511  				}
 18512  				if c == uint32(0) {
 18513  					return ts + 6795
 18514  				}
 18515  				*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(p)).FaArg + uintptr(iFirst)*4)) = int32((*ReCompiled)(unsafe.Pointer(p)).FnState - uint32(iFirst))
 18516  				break
 18517  
 18518  			}
 18519  		case uint32('\\'):
 18520  			{
 18521  				var specialOp int32 = 0
 18522  				switch int32(rePeek(tls, p)) {
 18523  				case 'b':
 18524  					specialOp = RE_OP_BOUNDARY
 18525  					break
 18526  				case 'd':
 18527  					specialOp = RE_OP_DIGIT
 18528  					break
 18529  				case 'D':
 18530  					specialOp = RE_OP_NOTDIGIT
 18531  					break
 18532  				case 's':
 18533  					specialOp = RE_OP_SPACE
 18534  					break
 18535  				case 'S':
 18536  					specialOp = RE_OP_NOTSPACE
 18537  					break
 18538  				case 'w':
 18539  					specialOp = RE_OP_WORD
 18540  					break
 18541  				case 'W':
 18542  					specialOp = RE_OP_NOTWORD
 18543  					break
 18544  				}
 18545  				if specialOp != 0 {
 18546  					(*ReCompiled)(unsafe.Pointer(p)).FsIn.Fi++
 18547  					re_append(tls, p, specialOp, 0)
 18548  				} else {
 18549  					c = re_esc_char(tls, p)
 18550  					re_append(tls, p, RE_OP_MATCH, int32(c))
 18551  				}
 18552  				break
 18553  
 18554  			}
 18555  		default:
 18556  			{
 18557  				re_append(tls, p, RE_OP_MATCH, int32(c))
 18558  				break
 18559  
 18560  			}
 18561  		}
 18562  		iPrev = iStart
 18563  	}
 18564  	return uintptr(0)
 18565  }
 18566  
 18567  func sqlite3re_free(tls *libc.TLS, pRe uintptr) {
 18568  	if pRe != 0 {
 18569  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaOp)
 18570  		sqlite3.Xsqlite3_free(tls, (*ReCompiled)(unsafe.Pointer(pRe)).FaArg)
 18571  		sqlite3.Xsqlite3_free(tls, pRe)
 18572  	}
 18573  }
 18574  
 18575  func sqlite3re_compile(tls *libc.TLS, ppRe uintptr, zIn uintptr, noCase int32) uintptr {
 18576  	var pRe uintptr
 18577  	var zErr uintptr
 18578  	var i int32
 18579  	var j int32
 18580  
 18581  	*(*uintptr)(unsafe.Pointer(ppRe)) = uintptr(0)
 18582  	pRe = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(ReCompiled{})))
 18583  	if pRe == uintptr(0) {
 18584  		return ts + 2069
 18585  	}
 18586  	libc.Xmemset(tls, pRe, 0, uint64(unsafe.Sizeof(ReCompiled{})))
 18587  	(*ReCompiled)(unsafe.Pointer(pRe)).FxNextChar = func() uintptr {
 18588  		if noCase != 0 {
 18589  			return *(*uintptr)(unsafe.Pointer(&struct {
 18590  				f func(*libc.TLS, uintptr) uint32
 18591  			}{re_next_char_nocase}))
 18592  		}
 18593  		return *(*uintptr)(unsafe.Pointer(&struct {
 18594  			f func(*libc.TLS, uintptr) uint32
 18595  		}{re_next_char}))
 18596  	}()
 18597  	if re_resize(tls, pRe, 30) != 0 {
 18598  		sqlite3re_free(tls, pRe)
 18599  		return ts + 2069
 18600  	}
 18601  	if int32(*(*int8)(unsafe.Pointer(zIn))) == '^' {
 18602  		zIn++
 18603  	} else {
 18604  		re_append(tls, pRe, RE_OP_ANYSTAR, 0)
 18605  	}
 18606  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fz = zIn
 18607  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi = 0
 18608  	(*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx = int32(libc.Xstrlen(tls, zIn))
 18609  	zErr = re_subcompile_re(tls, pRe)
 18610  	if zErr != 0 {
 18611  		sqlite3re_free(tls, pRe)
 18612  		return zErr
 18613  	}
 18614  	if int32(rePeek(tls, pRe)) == '$' && (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi+1 >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 18615  		re_append(tls, pRe, RE_OP_MATCH, RE_EOF)
 18616  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 18617  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 18618  	} else if (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fi >= (*ReCompiled)(unsafe.Pointer(pRe)).FsIn.Fmx {
 18619  		re_append(tls, pRe, RE_OP_ACCEPT, 0)
 18620  		*(*uintptr)(unsafe.Pointer(ppRe)) = pRe
 18621  	} else {
 18622  		sqlite3re_free(tls, pRe)
 18623  		return ts + 6808
 18624  	}
 18625  
 18626  	if int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp))) == RE_OP_ANYSTAR && !(noCase != 0) {
 18627  		j = 0
 18628  		i = 1
 18629  		for ; j < int32(unsafe.Sizeof([12]uint8{}))-2 && int32(*(*int8)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaOp + uintptr(i)))) == RE_OP_MATCH; i++ {
 18630  			var x uint32 = uint32(*(*int32)(unsafe.Pointer((*ReCompiled)(unsafe.Pointer(pRe)).FaArg + uintptr(i)*4)))
 18631  			if x <= uint32(127) {
 18632  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(x)
 18633  			} else if x <= uint32(0xfff) {
 18634  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xc0) | x>>6)
 18635  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 18636  			} else if x <= uint32(0xffff) {
 18637  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0xe0) | x>>12)
 18638  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x>>6&uint32(0x3f))
 18639  				*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(libc.PostIncInt32(&j, 1)))) = uint8(uint32(0x80) | x&uint32(0x3f))
 18640  			} else {
 18641  				break
 18642  			}
 18643  		}
 18644  		if j > 0 && int32(*(*uint8)(unsafe.Pointer(pRe + 48 + uintptr(j-1)))) == 0 {
 18645  			j--
 18646  		}
 18647  		(*ReCompiled)(unsafe.Pointer(pRe)).FnInit = j
 18648  	}
 18649  	return (*ReCompiled)(unsafe.Pointer(pRe)).FzErr
 18650  }
 18651  
 18652  func re_sql_func(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 18653  	bp := tls.Alloc(8)
 18654  	defer tls.Free(8)
 18655  
 18656  	var zPattern uintptr
 18657  	var zStr uintptr
 18658  	var zErr uintptr
 18659  	var setAux int32 = 0
 18660  
 18661  	_ = argc
 18662  	*(*uintptr)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_get_auxdata(tls, context, 0)
 18663  	if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 18664  		zPattern = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18665  		if zPattern == uintptr(0) {
 18666  			return
 18667  		}
 18668  		zErr = sqlite3re_compile(tls, bp, zPattern, libc.Bool32(sqlite3.Xsqlite3_user_data(tls, context) != uintptr(0)))
 18669  		if zErr != 0 {
 18670  			sqlite3re_free(tls, *(*uintptr)(unsafe.Pointer(bp)))
 18671  			sqlite3.Xsqlite3_result_error(tls, context, zErr, -1)
 18672  			return
 18673  		}
 18674  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 18675  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 18676  			return
 18677  		}
 18678  		setAux = 1
 18679  	}
 18680  	zStr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 18681  	if zStr != uintptr(0) {
 18682  		sqlite3.Xsqlite3_result_int(tls, context, sqlite3re_match(tls, *(*uintptr)(unsafe.Pointer(bp)), zStr, -1))
 18683  	}
 18684  	if setAux != 0 {
 18685  		sqlite3.Xsqlite3_set_auxdata(tls, context, 0, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3re_free})))
 18686  	}
 18687  }
 18688  
 18689  func sqlite3_regexp_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18690  	var rc int32 = SQLITE_OK
 18691  	_ = pApi
 18692  
 18693  	_ = pzErrMsg
 18694  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6831, 2,
 18695  		SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 18696  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 18697  			f func(*libc.TLS, uintptr, int32, uintptr)
 18698  		}{re_sql_func})), uintptr(0), uintptr(0))
 18699  	if rc == SQLITE_OK {
 18700  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6838, 2,
 18701  			SQLITE_UTF8|SQLITE_INNOCUOUS|SQLITE_DETERMINISTIC,
 18702  			db, *(*uintptr)(unsafe.Pointer(&struct {
 18703  				f func(*libc.TLS, uintptr, int32, uintptr)
 18704  			}{re_sql_func})), uintptr(0), uintptr(0))
 18705  	}
 18706  	return rc
 18707  }
 18708  
 18709  func rememberFunc(tls *libc.TLS, pCtx uintptr, argc int32, argv uintptr) {
 18710  	var v sqlite3_int64
 18711  	var ptr uintptr
 18712  
 18713  	v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 18714  	ptr = sqlite3.Xsqlite3_value_pointer(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4060)
 18715  	if ptr != 0 {
 18716  		*(*sqlite3_int64)(unsafe.Pointer(ptr)) = v
 18717  	}
 18718  	sqlite3.Xsqlite3_result_int64(tls, pCtx, v)
 18719  }
 18720  
 18721  func sqlite3_remember_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18722  	var rc int32 = SQLITE_OK
 18723  	_ = pApi
 18724  
 18725  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+6846, 2, SQLITE_UTF8, uintptr(0),
 18726  		*(*uintptr)(unsafe.Pointer(&struct {
 18727  			f func(*libc.TLS, uintptr, int32, uintptr)
 18728  		}{rememberFunc})), uintptr(0), uintptr(0))
 18729  	return rc
 18730  }
 18731  
 18732  type series_cursor1 = struct {
 18733  	Fbase        sqlite3_vtab_cursor
 18734  	FisDesc      int32
 18735  	F__ccgo_pad1 [4]byte
 18736  	FiRowid      sqlite3_int64
 18737  	FiValue      sqlite3_int64
 18738  	FmnValue     sqlite3_int64
 18739  	FmxValue     sqlite3_int64
 18740  	FiStep       sqlite3_int64
 18741  }
 18742  
 18743  type series_cursor = series_cursor1
 18744  
 18745  func seriesConnect(tls *libc.TLS, db uintptr, pUnused uintptr, argcUnused int32, argvUnused uintptr, ppVtab uintptr, pzErrUnused uintptr) int32 {
 18746  	var pNew uintptr
 18747  	var rc int32
 18748  
 18749  	_ = pUnused
 18750  	_ = argcUnused
 18751  	_ = argvUnused
 18752  	_ = pzErrUnused
 18753  	rc = sqlite3.Xsqlite3_declare_vtab(tls, db,
 18754  		ts+6855)
 18755  	if rc == SQLITE_OK {
 18756  		pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 18757  		if pNew == uintptr(0) {
 18758  			return SQLITE_NOMEM
 18759  		}
 18760  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 18761  		sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 18762  	}
 18763  	return rc
 18764  }
 18765  
 18766  func seriesDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 18767  	sqlite3.Xsqlite3_free(tls, pVtab)
 18768  	return SQLITE_OK
 18769  }
 18770  
 18771  func seriesOpen(tls *libc.TLS, pUnused uintptr, ppCursor uintptr) int32 {
 18772  	var pCur uintptr
 18773  	_ = pUnused
 18774  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(series_cursor{})))
 18775  	if pCur == uintptr(0) {
 18776  		return SQLITE_NOMEM
 18777  	}
 18778  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(series_cursor{})))
 18779  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 18780  	return SQLITE_OK
 18781  }
 18782  
 18783  func seriesClose(tls *libc.TLS, cur uintptr) int32 {
 18784  	sqlite3.Xsqlite3_free(tls, cur)
 18785  	return SQLITE_OK
 18786  }
 18787  
 18788  func seriesNext(tls *libc.TLS, cur uintptr) int32 {
 18789  	var pCur uintptr = cur
 18790  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 18791  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18792  	} else {
 18793  		*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) += (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18794  	}
 18795  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid++
 18796  	return SQLITE_OK
 18797  }
 18798  
 18799  func seriesColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 18800  	var pCur uintptr = cur
 18801  	var x sqlite3_int64 = int64(0)
 18802  	switch i {
 18803  	case SERIES_COLUMN_START:
 18804  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 18805  		break
 18806  	case SERIES_COLUMN_STOP:
 18807  		x = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 18808  		break
 18809  	case SERIES_COLUMN_STEP:
 18810  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18811  		break
 18812  	default:
 18813  		x = (*series_cursor)(unsafe.Pointer(pCur)).FiValue
 18814  		break
 18815  	}
 18816  	sqlite3.Xsqlite3_result_int64(tls, ctx, x)
 18817  	return SQLITE_OK
 18818  }
 18819  
 18820  func seriesRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 18821  	var pCur uintptr = cur
 18822  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*series_cursor)(unsafe.Pointer(pCur)).FiRowid
 18823  	return SQLITE_OK
 18824  }
 18825  
 18826  func seriesEof(tls *libc.TLS, cur uintptr) int32 {
 18827  	var pCur uintptr = cur
 18828  	if (*series_cursor)(unsafe.Pointer(pCur)).FisDesc != 0 {
 18829  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue < (*series_cursor)(unsafe.Pointer(pCur)).FmnValue)
 18830  	} else {
 18831  		return libc.Bool32((*series_cursor)(unsafe.Pointer(pCur)).FiValue > (*series_cursor)(unsafe.Pointer(pCur)).FmxValue)
 18832  	}
 18833  	return int32(0)
 18834  }
 18835  
 18836  func seriesFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStrUnused uintptr, argc int32, argv uintptr) int32 {
 18837  	var pCur uintptr = pVtabCursor
 18838  	var i int32 = 0
 18839  	_ = idxStrUnused
 18840  	if idxNum&1 != 0 {
 18841  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18842  	} else {
 18843  		(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(0)
 18844  	}
 18845  	if idxNum&2 != 0 {
 18846  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18847  	} else {
 18848  		(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 18849  	}
 18850  	if idxNum&4 != 0 {
 18851  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&i, 1))*8)))
 18852  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep == int64(0) {
 18853  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 18854  		} else if (*series_cursor)(unsafe.Pointer(pCur)).FiStep < int64(0) {
 18855  			(*series_cursor)(unsafe.Pointer(pCur)).FiStep = -(*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18856  			if idxNum&16 == 0 {
 18857  				idxNum = idxNum | 8
 18858  			}
 18859  		}
 18860  	} else {
 18861  		(*series_cursor)(unsafe.Pointer(pCur)).FiStep = int64(1)
 18862  	}
 18863  	for i = 0; i < argc; i++ {
 18864  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) == SQLITE_NULL {
 18865  			(*series_cursor)(unsafe.Pointer(pCur)).FmnValue = int64(1)
 18866  			(*series_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0)
 18867  			break
 18868  		}
 18869  	}
 18870  	if idxNum&8 != 0 {
 18871  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 1
 18872  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmxValue
 18873  		if (*series_cursor)(unsafe.Pointer(pCur)).FiStep > int64(0) {
 18874  			*(*sqlite3_int64)(unsafe.Pointer(pCur + 24)) -= ((*series_cursor)(unsafe.Pointer(pCur)).FmxValue - (*series_cursor)(unsafe.Pointer(pCur)).FmnValue) % (*series_cursor)(unsafe.Pointer(pCur)).FiStep
 18875  		}
 18876  	} else {
 18877  		(*series_cursor)(unsafe.Pointer(pCur)).FisDesc = 0
 18878  		(*series_cursor)(unsafe.Pointer(pCur)).FiValue = (*series_cursor)(unsafe.Pointer(pCur)).FmnValue
 18879  	}
 18880  	(*series_cursor)(unsafe.Pointer(pCur)).FiRowid = int64(1)
 18881  	return SQLITE_OK
 18882  }
 18883  
 18884  func seriesBestIndex(tls *libc.TLS, pVTab uintptr, pIdxInfo uintptr) int32 {
 18885  	bp := tls.Alloc(12)
 18886  	defer tls.Free(12)
 18887  
 18888  	var i int32
 18889  	var j int32
 18890  	var idxNum int32 = 0
 18891  	var bStartSeen int32 = 0
 18892  	var unusableMask int32 = 0
 18893  	var nArg int32 = 0
 18894  
 18895  	var pConstraint uintptr
 18896  
 18897  	*(*int32)(unsafe.Pointer(bp)) = libc.AssignPtrInt32(bp+1*4, libc.AssignPtrInt32(bp+2*4, -1))
 18898  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 18899  	i = 0
 18900  __1:
 18901  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 18902  		goto __3
 18903  	}
 18904  	{
 18905  		var iCol int32
 18906  		var iMask int32
 18907  		if (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < SERIES_COLUMN_START {
 18908  			goto __2
 18909  		}
 18910  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn - SERIES_COLUMN_START
 18911  
 18912  		iMask = int32(1) << iCol
 18913  		if iCol == 0 {
 18914  			bStartSeen = 1
 18915  		}
 18916  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 18917  			unusableMask = unusableMask | iMask
 18918  			goto __2
 18919  		} else if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 18920  			idxNum = idxNum | iMask
 18921  			*(*int32)(unsafe.Pointer(bp + uintptr(iCol)*4)) = i
 18922  		}
 18923  
 18924  	}
 18925  	goto __2
 18926  __2:
 18927  	i++
 18928  	pConstraint += 12
 18929  	goto __1
 18930  	goto __3
 18931  __3:
 18932  	;
 18933  	for i = 0; i < 3; i++ {
 18934  		if libc.AssignInt32(&j, *(*int32)(unsafe.Pointer(bp + uintptr(i)*4))) >= 0 {
 18935  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 18936  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(j)*8)).Fomit = libc.BoolUint8(!(1 != 0))
 18937  		}
 18938  	}
 18939  
 18940  	if !(bStartSeen != 0) {
 18941  		sqlite3.Xsqlite3_free(tls, (*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg)
 18942  		(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls,
 18943  			ts+6914, 0)
 18944  		return SQLITE_ERROR
 18945  	}
 18946  	if unusableMask & ^idxNum != 0 {
 18947  		return SQLITE_CONSTRAINT
 18948  	}
 18949  	if idxNum&3 == 3 {
 18950  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(2 - libc.Bool32(idxNum&4 != 0))
 18951  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1000)
 18952  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy >= 1 && (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == 0 {
 18953  			if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 18954  				idxNum = idxNum | 8
 18955  			} else {
 18956  				idxNum = idxNum | 16
 18957  			}
 18958  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 18959  		}
 18960  	} else {
 18961  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(2147483647)
 18962  	}
 18963  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 18964  	return SQLITE_OK
 18965  }
 18966  
 18967  var seriesModule = sqlite3_module{
 18968  	FxConnect:    0,
 18969  	FxBestIndex:  0,
 18970  	FxDisconnect: 0,
 18971  	FxOpen:       0,
 18972  	FxClose:      0,
 18973  	FxFilter:     0,
 18974  	FxNext:       0,
 18975  	FxEof:        0,
 18976  	FxColumn:     0,
 18977  	FxRowid:      0,
 18978  }
 18979  
 18980  func sqlite3_series_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 18981  	var rc int32 = SQLITE_OK
 18982  	_ = pApi
 18983  
 18984  	if sqlite3.Xsqlite3_libversion_number(tls) < 3008012 && pzErrMsg != uintptr(0) {
 18985  		*(*uintptr)(unsafe.Pointer(pzErrMsg)) = sqlite3.Xsqlite3_mprintf(tls,
 18986  			ts+6972, 0)
 18987  		return SQLITE_ERROR
 18988  	}
 18989  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+7022, uintptr(unsafe.Pointer(&seriesModule)), uintptr(0))
 18990  	return rc
 18991  }
 18992  
 18993  type u16 = uint16
 18994  
 18995  var midClass = [128]uint8{
 18996  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18997  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18998  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 18999  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19000  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19001  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19002  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19003  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19004  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19005  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19006  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19007  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19008  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19009  	uint8(CCLASS_SILENT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19010  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19011  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19012  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19013  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19014  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19015  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19016  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19017  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19018  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19019  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19020  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19021  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19022  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19023  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19024  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19025  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_VOWEL),
 19026  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19027  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19028  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19029  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19030  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19031  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19032  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19033  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19034  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19035  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19036  	uint8(CCLASS_C), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19037  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19038  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19039  }
 19040  
 19041  var initClass = [128]uint8{
 19042  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19043  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19044  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19045  	uint8(CCLASS_SPACE), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19046  	uint8(CCLASS_SPACE), uint8(CCLASS_SPACE), uint8(CCLASS_OTHER),
 19047  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19048  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19049  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19050  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19051  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19052  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_SPACE),
 19053  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19054  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19055  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19056  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19057  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19058  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19059  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19060  	uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT), uint8(CCLASS_DIGIT),
 19061  	uint8(CCLASS_DIGIT), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19062  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19063  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL),
 19064  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_D),
 19065  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19066  	uint8(CCLASS_SILENT), uint8(CCLASS_VOWEL), uint8(CCLASS_C),
 19067  	uint8(CCLASS_C), uint8(CCLASS_L), uint8(CCLASS_M),
 19068  	uint8(CCLASS_M), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19069  	uint8(CCLASS_C), uint8(CCLASS_R), uint8(CCLASS_C),
 19070  	uint8(CCLASS_D), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19071  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_Y),
 19072  	uint8(CCLASS_C), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19073  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19074  	uint8(CCLASS_OTHER), uint8(CCLASS_VOWEL), uint8(CCLASS_B),
 19075  	uint8(CCLASS_C), uint8(CCLASS_D), uint8(CCLASS_VOWEL),
 19076  	uint8(CCLASS_B), uint8(CCLASS_C), uint8(CCLASS_SILENT),
 19077  	uint8(CCLASS_VOWEL), uint8(CCLASS_C), uint8(CCLASS_C),
 19078  	uint8(CCLASS_L), uint8(CCLASS_M), uint8(CCLASS_M),
 19079  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_C),
 19080  	uint8(CCLASS_R), uint8(CCLASS_C), uint8(CCLASS_D),
 19081  	uint8(CCLASS_VOWEL), uint8(CCLASS_B), uint8(CCLASS_B),
 19082  	uint8(CCLASS_C), uint8(CCLASS_Y), uint8(CCLASS_C),
 19083  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19084  	uint8(CCLASS_OTHER), uint8(CCLASS_OTHER),
 19085  }
 19086  
 19087  var className = *(*[14]uint8)(unsafe.Pointer(ts + 7038))
 19088  
 19089  func phoneticHash(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 19090  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn+1))
 19091  	var i int32
 19092  	var nOut int32 = 0
 19093  	var cPrev int8 = int8(0x77)
 19094  	var cPrevX int8 = int8(0x77)
 19095  	var aClass uintptr = uintptr(unsafe.Pointer(&initClass))
 19096  
 19097  	if zOut == uintptr(0) {
 19098  		return uintptr(0)
 19099  	}
 19100  	if nIn > 2 {
 19101  		switch int32(*(*uint8)(unsafe.Pointer(zIn))) {
 19102  		case 'g':
 19103  			fallthrough
 19104  		case 'k':
 19105  			{
 19106  				if int32(*(*uint8)(unsafe.Pointer(zIn + 1))) == 'n' {
 19107  					zIn++
 19108  					nIn--
 19109  				}
 19110  				break
 19111  
 19112  			}
 19113  		}
 19114  	}
 19115  	for i = 0; i < nIn; i++ {
 19116  		var c uint8 = *(*uint8)(unsafe.Pointer(zIn + uintptr(i)))
 19117  		if i+1 < nIn {
 19118  			if int32(c) == 'w' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'r' {
 19119  				continue
 19120  			}
 19121  			if int32(c) == 'd' && (int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'j' || int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'g') {
 19122  				continue
 19123  			}
 19124  			if i+2 < nIn {
 19125  				if int32(c) == 't' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+1)))) == 'c' && int32(*(*uint8)(unsafe.Pointer(zIn + uintptr(i+2)))) == 'h' {
 19126  					continue
 19127  				}
 19128  			}
 19129  		}
 19130  		c = *(*uint8)(unsafe.Pointer(aClass + uintptr(int32(c)&0x7f)))
 19131  		if int32(c) == CCLASS_SPACE {
 19132  			continue
 19133  		}
 19134  		if int32(c) == CCLASS_OTHER && int32(cPrev) != CCLASS_DIGIT {
 19135  			continue
 19136  		}
 19137  		aClass = uintptr(unsafe.Pointer(&midClass))
 19138  		if int32(c) == CCLASS_VOWEL && (int32(cPrevX) == CCLASS_R || int32(cPrevX) == CCLASS_L) {
 19139  			continue
 19140  		}
 19141  		if (int32(c) == CCLASS_R || int32(c) == CCLASS_L) && int32(cPrevX) == CCLASS_VOWEL {
 19142  			nOut--
 19143  		}
 19144  		cPrev = int8(c)
 19145  		if int32(c) == CCLASS_SILENT {
 19146  			continue
 19147  		}
 19148  		cPrevX = int8(c)
 19149  		c = className[c]
 19150  
 19151  		if nOut == 0 || int32(c) != int32(*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut-1)))) {
 19152  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = c
 19153  		}
 19154  	}
 19155  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 19156  	return zOut
 19157  }
 19158  
 19159  func phoneticHashSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19160  	var zIn uintptr
 19161  	var zOut uintptr
 19162  
 19163  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 19164  	if zIn == uintptr(0) {
 19165  		return
 19166  	}
 19167  	zOut = phoneticHash(tls, zIn, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 19168  	if zOut == uintptr(0) {
 19169  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19170  	} else {
 19171  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 19172  	}
 19173  }
 19174  
 19175  func characterClass(tls *libc.TLS, cPrev int8, c int8) int8 {
 19176  	if int32(cPrev) == 0 {
 19177  		return int8(initClass[int32(c)&0x7f])
 19178  	}
 19179  	return int8(midClass[int32(c)&0x7f])
 19180  }
 19181  
 19182  func insertOrDeleteCost(tls *libc.TLS, cPrev int8, c int8, cNext int8) int32 {
 19183  	var classC int8 = characterClass(tls, cPrev, c)
 19184  	var classCprev int8
 19185  
 19186  	if int32(classC) == CCLASS_SILENT {
 19187  		return 1
 19188  	}
 19189  	if int32(cPrev) == int32(c) {
 19190  		return 10
 19191  	}
 19192  	if int32(classC) == CCLASS_VOWEL && (int32(cPrev) == 'r' || int32(cNext) == 'r') {
 19193  		return 20
 19194  	}
 19195  	classCprev = characterClass(tls, cPrev, cPrev)
 19196  	if int32(classC) == int32(classCprev) {
 19197  		if int32(classC) == CCLASS_VOWEL {
 19198  			return 15
 19199  		} else {
 19200  			return 50
 19201  		}
 19202  	}
 19203  
 19204  	return 100
 19205  }
 19206  
 19207  func substituteCost(tls *libc.TLS, cPrev int8, cFrom int8, cTo int8) int32 {
 19208  	var classFrom int8
 19209  	var classTo int8
 19210  	if int32(cFrom) == int32(cTo) {
 19211  		return 0
 19212  	}
 19213  	if int32(cFrom) == int32(cTo)^0x20 && (int32(cTo) >= 'A' && int32(cTo) <= 'Z' || int32(cTo) >= 'a' && int32(cTo) <= 'z') {
 19214  		return 0
 19215  	}
 19216  	classFrom = characterClass(tls, cPrev, cFrom)
 19217  	classTo = characterClass(tls, cPrev, cTo)
 19218  	if int32(classFrom) == int32(classTo) {
 19219  		return 40
 19220  	}
 19221  	if int32(classFrom) >= CCLASS_B && int32(classFrom) <= CCLASS_Y &&
 19222  		int32(classTo) >= CCLASS_B && int32(classTo) <= CCLASS_Y {
 19223  		return 75
 19224  	}
 19225  
 19226  	return 100
 19227  }
 19228  
 19229  func editdist1(tls *libc.TLS, zA uintptr, zB uintptr, pnMatch uintptr) int32 {
 19230  	bp := tls.Alloc(300)
 19231  	defer tls.Free(300)
 19232  
 19233  	var nA int32
 19234  	var nB int32
 19235  	var xA int32
 19236  	var xB int32
 19237  	var cA int8 = int8(0)
 19238  	var cB int8
 19239  	var cAprev int8
 19240  	var cBprev int8
 19241  	var cAnext int8
 19242  	var cBnext int8
 19243  	var d int32
 19244  	var dc int32 = 0
 19245  	var res int32
 19246  	var m uintptr
 19247  	var cx uintptr
 19248  	var toFree uintptr = uintptr(0)
 19249  	var nMatch int32 = 0
 19250  
 19251  	if zA == uintptr(0) || zB == uintptr(0) {
 19252  		return -1
 19253  	}
 19254  
 19255  	for *(*int8)(unsafe.Pointer(zA)) != 0 && int32(*(*int8)(unsafe.Pointer(zA))) == int32(*(*int8)(unsafe.Pointer(zB))) {
 19256  		dc = int32(*(*int8)(unsafe.Pointer(zA)))
 19257  		zA++
 19258  		zB++
 19259  		nMatch++
 19260  	}
 19261  	if pnMatch != 0 {
 19262  		*(*int32)(unsafe.Pointer(pnMatch)) = nMatch
 19263  	}
 19264  	if int32(*(*int8)(unsafe.Pointer(zA))) == 0 && int32(*(*int8)(unsafe.Pointer(zB))) == 0 {
 19265  		return 0
 19266  	}
 19267  
 19268  	for nA = 0; *(*int8)(unsafe.Pointer(zA + uintptr(nA))) != 0; nA++ {
 19269  		if int32(*(*int8)(unsafe.Pointer(zA + uintptr(nA))))&0x80 != 0 {
 19270  			return -2
 19271  		}
 19272  	}
 19273  	for nB = 0; *(*int8)(unsafe.Pointer(zB + uintptr(nB))) != 0; nB++ {
 19274  		if int32(*(*int8)(unsafe.Pointer(zB + uintptr(nB))))&0x80 != 0 {
 19275  			return -2
 19276  		}
 19277  	}
 19278  
 19279  	if nA == 0 {
 19280  		cBprev = int8(dc)
 19281  		for xB = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB))))) != 0; xB++ {
 19282  			res = res + insertOrDeleteCost(tls, cBprev, cB, *(*int8)(unsafe.Pointer(zB + uintptr(xB+1))))/FINAL_INS_COST_DIV
 19283  			cBprev = cB
 19284  		}
 19285  		return res
 19286  	}
 19287  	if nB == 0 {
 19288  		cAprev = int8(dc)
 19289  		for xA = libc.AssignInt32(&res, 0); int32(libc.AssignInt8(&cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA))))) != 0; xA++ {
 19290  			res = res + insertOrDeleteCost(tls, cAprev, cA, *(*int8)(unsafe.Pointer(zA + uintptr(xA+1))))
 19291  			cAprev = cA
 19292  		}
 19293  		return res
 19294  	}
 19295  
 19296  	if int32(*(*int8)(unsafe.Pointer(zA))) == '*' && int32(*(*int8)(unsafe.Pointer(zA + 1))) == 0 {
 19297  		return 0
 19298  	}
 19299  
 19300  	if uint64(nB) < uint64(unsafe.Sizeof([75]int32{}))*uint64(4)/(uint64(unsafe.Sizeof(int32(0)))*uint64(5)) {
 19301  		m = bp
 19302  	} else {
 19303  		m = libc.AssignUintptr(&toFree, sqlite3.Xsqlite3_malloc64(tls, uint64((nB+1)*5)*uint64(unsafe.Sizeof(int32(0)))/uint64(4)))
 19304  		if m == uintptr(0) {
 19305  			return -3
 19306  		}
 19307  	}
 19308  	cx = m + uintptr(nB+1)*4
 19309  
 19310  	*(*int32)(unsafe.Pointer(m)) = 0
 19311  	*(*int8)(unsafe.Pointer(cx)) = int8(dc)
 19312  	cBprev = int8(dc)
 19313  	for xB = 1; xB <= nB; xB++ {
 19314  		cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19315  		cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19316  		*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = cB
 19317  		*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4)) + insertOrDeleteCost(tls, cBprev, cB, cBnext)
 19318  		cBprev = cB
 19319  	}
 19320  	cAprev = int8(dc)
 19321  	for xA = 1; xA <= nA; xA++ {
 19322  		var lastA int32 = libc.Bool32(xA == nA)
 19323  		cA = *(*int8)(unsafe.Pointer(zA + uintptr(xA-1)))
 19324  		cAnext = *(*int8)(unsafe.Pointer(zA + uintptr(xA)))
 19325  		if int32(cA) == '*' && lastA != 0 {
 19326  			break
 19327  		}
 19328  		d = *(*int32)(unsafe.Pointer(m))
 19329  		dc = int32(*(*int8)(unsafe.Pointer(cx)))
 19330  		*(*int32)(unsafe.Pointer(m)) = d + insertOrDeleteCost(tls, cAprev, cA, cAnext)
 19331  		cBprev = int8(0)
 19332  		for xB = 1; xB <= nB; xB++ {
 19333  			var totalCost int32
 19334  			var insCost int32
 19335  			var delCost int32
 19336  			var subCost int32
 19337  			var ncx int32
 19338  			cB = *(*int8)(unsafe.Pointer(zB + uintptr(xB-1)))
 19339  			cBnext = *(*int8)(unsafe.Pointer(zB + uintptr(xB)))
 19340  
 19341  			insCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cB, cBnext)
 19342  			if lastA != 0 {
 19343  				insCost = insCost / FINAL_INS_COST_DIV
 19344  			}
 19345  
 19346  			delCost = insertOrDeleteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB))), cA, cBnext)
 19347  
 19348  			subCost = substituteCost(tls, *(*int8)(unsafe.Pointer(cx + uintptr(xB-1))), cA, cB)
 19349  
 19350  			totalCost = insCost + *(*int32)(unsafe.Pointer(m + uintptr(xB-1)*4))
 19351  			ncx = int32(cB)
 19352  			if delCost+*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < totalCost {
 19353  				totalCost = delCost + *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19354  				ncx = int32(cA)
 19355  			}
 19356  			if subCost+d < totalCost {
 19357  				totalCost = subCost + d
 19358  			}
 19359  
 19360  			d = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19361  			dc = int32(*(*int8)(unsafe.Pointer(cx + uintptr(xB))))
 19362  			*(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) = totalCost
 19363  			*(*int8)(unsafe.Pointer(cx + uintptr(xB))) = int8(ncx)
 19364  			cBprev = cB
 19365  		}
 19366  		cAprev = cA
 19367  	}
 19368  
 19369  	if int32(cA) == '*' {
 19370  		res = *(*int32)(unsafe.Pointer(m + 1*4))
 19371  		for xB = 1; xB <= nB; xB++ {
 19372  			if *(*int32)(unsafe.Pointer(m + uintptr(xB)*4)) < res {
 19373  				res = *(*int32)(unsafe.Pointer(m + uintptr(xB)*4))
 19374  				if pnMatch != 0 {
 19375  					*(*int32)(unsafe.Pointer(pnMatch)) = xB + nMatch
 19376  				}
 19377  			}
 19378  		}
 19379  	} else {
 19380  		res = *(*int32)(unsafe.Pointer(m + uintptr(nB)*4))
 19381  
 19382  	}
 19383  	sqlite3.Xsqlite3_free(tls, toFree)
 19384  	return res
 19385  }
 19386  
 19387  func editdistSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 19388  	var res int32 = editdist1(tls,
 19389  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 19390  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))),
 19391  		uintptr(0))
 19392  	if res < 0 {
 19393  		if res == -3 {
 19394  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 19395  		} else if res == -2 {
 19396  			sqlite3.Xsqlite3_result_error(tls, context, ts+7052, -1)
 19397  		} else {
 19398  			sqlite3.Xsqlite3_result_error(tls, context, ts+7082, -1)
 19399  		}
 19400  	} else {
 19401  		sqlite3.Xsqlite3_result_int(tls, context, res)
 19402  	}
 19403  }
 19404  
 19405  type EditDist3Cost1 = struct {
 19406  	FpNext uintptr
 19407  	FnFrom u8
 19408  	FnTo   u8
 19409  	FiCost u16
 19410  	Fa     [4]int8
 19411  }
 19412  
 19413  type EditDist3Cost = EditDist3Cost1
 19414  type EditDist3Config1 = struct {
 19415  	FnLang       int32
 19416  	F__ccgo_pad1 [4]byte
 19417  	Fa           uintptr
 19418  }
 19419  
 19420  type EditDist3Config = EditDist3Config1
 19421  type EditDist3From1 = struct {
 19422  	FnSubst      int32
 19423  	FnDel        int32
 19424  	FnByte       int32
 19425  	F__ccgo_pad1 [4]byte
 19426  	FapSubst     uintptr
 19427  	FapDel       uintptr
 19428  }
 19429  
 19430  type EditDist3From = EditDist3From1
 19431  type EditDist3FromString1 = struct {
 19432  	Fz        uintptr
 19433  	Fn        int32
 19434  	FisPrefix int32
 19435  	Fa        uintptr
 19436  }
 19437  
 19438  type EditDist3FromString = EditDist3FromString1
 19439  type EditDist3To1 = struct {
 19440  	FnIns  int32
 19441  	FnByte int32
 19442  	FapIns uintptr
 19443  }
 19444  
 19445  type EditDist3To = EditDist3To1
 19446  type EditDist3ToString1 = struct {
 19447  	Fz           uintptr
 19448  	Fn           int32
 19449  	F__ccgo_pad1 [4]byte
 19450  	Fa           uintptr
 19451  }
 19452  
 19453  type EditDist3ToString = EditDist3ToString1
 19454  type EditDist3Lang1 = struct {
 19455  	FiLang    int32
 19456  	FiInsCost int32
 19457  	FiDelCost int32
 19458  	FiSubCost int32
 19459  	FpCost    uintptr
 19460  }
 19461  
 19462  type EditDist3Lang = EditDist3Lang1
 19463  
 19464  var editDist3Lang = EditDist3Lang{FiInsCost: 100, FiDelCost: 100, FiSubCost: 150}
 19465  
 19466  func editDist3ConfigClear(tls *libc.TLS, p uintptr) {
 19467  	var i int32
 19468  	if p == uintptr(0) {
 19469  		return
 19470  	}
 19471  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; i++ {
 19472  		var pCost uintptr
 19473  		var pNext uintptr
 19474  		pCost = (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(i)*24)).FpCost
 19475  		for pCost != 0 {
 19476  			pNext = (*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext
 19477  			sqlite3.Xsqlite3_free(tls, pCost)
 19478  			pCost = pNext
 19479  		}
 19480  	}
 19481  	sqlite3.Xsqlite3_free(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa)
 19482  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 19483  }
 19484  
 19485  func editDist3ConfigDelete(tls *libc.TLS, pIn uintptr) {
 19486  	var p uintptr = pIn
 19487  	editDist3ConfigClear(tls, p)
 19488  	sqlite3.Xsqlite3_free(tls, p)
 19489  }
 19490  
 19491  func editDist3CostCompare(tls *libc.TLS, pA uintptr, pB uintptr) int32 {
 19492  	var n int32 = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom)
 19493  	var rc int32
 19494  	if n > int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom) {
 19495  		n = int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19496  	}
 19497  	rc = libc.Xstrncmp(tls, pA+12, pB+12, uint64(n))
 19498  	if rc == 0 {
 19499  		rc = int32((*EditDist3Cost)(unsafe.Pointer(pA)).FnFrom) - int32((*EditDist3Cost)(unsafe.Pointer(pB)).FnFrom)
 19500  	}
 19501  	return rc
 19502  }
 19503  
 19504  func editDist3CostMerge(tls *libc.TLS, pA uintptr, pB uintptr) uintptr {
 19505  	bp := tls.Alloc(8)
 19506  	defer tls.Free(8)
 19507  
 19508  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19509  	var ppTail uintptr = bp
 19510  	var p uintptr
 19511  	for pA != 0 && pB != 0 {
 19512  		if editDist3CostCompare(tls, pA, pB) <= 0 {
 19513  			p = pA
 19514  			pA = (*EditDist3Cost)(unsafe.Pointer(pA)).FpNext
 19515  		} else {
 19516  			p = pB
 19517  			pB = (*EditDist3Cost)(unsafe.Pointer(pB)).FpNext
 19518  		}
 19519  		*(*uintptr)(unsafe.Pointer(ppTail)) = p
 19520  		ppTail = p
 19521  	}
 19522  	if pA != 0 {
 19523  		*(*uintptr)(unsafe.Pointer(ppTail)) = pA
 19524  	} else {
 19525  		*(*uintptr)(unsafe.Pointer(ppTail)) = pB
 19526  	}
 19527  	return *(*uintptr)(unsafe.Pointer(bp))
 19528  }
 19529  
 19530  func editDist3CostSort(tls *libc.TLS, pList uintptr) uintptr {
 19531  	bp := tls.Alloc(480)
 19532  	defer tls.Free(480)
 19533  
 19534  	var p uintptr
 19535  	var i int32
 19536  	var mx int32 = 0
 19537  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 19538  	*(*uintptr)(unsafe.Pointer(bp + 1*8)) = uintptr(0)
 19539  	for pList != 0 {
 19540  		p = pList
 19541  		pList = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 19542  		(*EditDist3Cost)(unsafe.Pointer(p)).FpNext = uintptr(0)
 19543  		for i = 0; *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0; i++ {
 19544  			p = editDist3CostMerge(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)), p)
 19545  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = uintptr(0)
 19546  		}
 19547  		*(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) = p
 19548  		if i > mx {
 19549  			mx = i
 19550  			*(*uintptr)(unsafe.Pointer(bp + uintptr(i+1)*8)) = uintptr(0)
 19551  		}
 19552  	}
 19553  	p = uintptr(0)
 19554  	for i = 0; i <= mx; i++ {
 19555  		if *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)) != 0 {
 19556  			p = editDist3CostMerge(tls, p, *(*uintptr)(unsafe.Pointer(bp + uintptr(i)*8)))
 19557  		}
 19558  	}
 19559  	return p
 19560  }
 19561  
 19562  func editDist3ConfigLoad(tls *libc.TLS, p uintptr, db uintptr, zTable uintptr) int32 {
 19563  	bp := tls.Alloc(16)
 19564  	defer tls.Free(16)
 19565  
 19566  	var rc int32
 19567  	var rc2 int32
 19568  	var zSql uintptr
 19569  	var iLangPrev int32 = -9999
 19570  	var pLang uintptr = uintptr(0)
 19571  
 19572  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 19573  		ts+7107, libc.VaList(bp, zTable))
 19574  	if zSql == uintptr(0) {
 19575  		return SQLITE_NOMEM
 19576  	}
 19577  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+8, uintptr(0))
 19578  	sqlite3.Xsqlite3_free(tls, zSql)
 19579  	if rc != 0 {
 19580  		return rc
 19581  	}
 19582  	editDist3ConfigClear(tls, p)
 19583  	for sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8))) == SQLITE_ROW {
 19584  		var iLang int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0)
 19585  		var zFrom uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 19586  		var nFrom int32
 19587  		if zFrom != 0 {
 19588  			nFrom = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 1)
 19589  		} else {
 19590  			nFrom = 0
 19591  		}
 19592  		var zTo uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 19593  		var nTo int32
 19594  		if zTo != 0 {
 19595  			nTo = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 2)
 19596  		} else {
 19597  			nTo = 0
 19598  		}
 19599  		var iCost int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 3)
 19600  
 19601  		if nFrom > 100 || nTo > 100 {
 19602  			continue
 19603  		}
 19604  		if iCost < 0 {
 19605  			continue
 19606  		}
 19607  		if iCost >= 10000 {
 19608  			continue
 19609  		}
 19610  		if pLang == uintptr(0) || iLang != iLangPrev {
 19611  			var pNew uintptr
 19612  			pNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3Config)(unsafe.Pointer(p)).Fa, uint64((*EditDist3Config)(unsafe.Pointer(p)).FnLang+1)*uint64(unsafe.Sizeof(EditDist3Lang{})))
 19613  			if pNew == uintptr(0) {
 19614  				rc = SQLITE_NOMEM
 19615  				break
 19616  			}
 19617  			(*EditDist3Config)(unsafe.Pointer(p)).Fa = pNew
 19618  			pLang = (*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr((*EditDist3Config)(unsafe.Pointer(p)).FnLang)*24
 19619  			(*EditDist3Config)(unsafe.Pointer(p)).FnLang++
 19620  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiLang = iLang
 19621  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = 100
 19622  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = 100
 19623  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = 150
 19624  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = uintptr(0)
 19625  			iLangPrev = iLang
 19626  		}
 19627  		if nFrom == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && nTo == 0 {
 19628  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost = iCost
 19629  		} else if nFrom == 0 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 19630  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost = iCost
 19631  		} else if nFrom == 1 && nTo == 1 && int32(*(*int8)(unsafe.Pointer(zFrom))) == '?' && int32(*(*int8)(unsafe.Pointer(zTo))) == '?' {
 19632  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost = iCost
 19633  		} else {
 19634  			var pCost uintptr
 19635  			var nExtra int32 = nFrom + nTo - 4
 19636  			if nExtra < 0 {
 19637  				nExtra = 0
 19638  			}
 19639  			pCost = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Cost{}))+uint64(nExtra))
 19640  			if pCost == uintptr(0) {
 19641  				rc = SQLITE_NOMEM
 19642  				break
 19643  			}
 19644  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnFrom = u8(nFrom)
 19645  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FnTo = u8(nTo)
 19646  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FiCost = u16(iCost)
 19647  			libc.Xmemcpy(tls, pCost+12, zFrom, uint64(nFrom))
 19648  			libc.Xmemcpy(tls, pCost+12+uintptr(nFrom), zTo, uint64(nTo))
 19649  			(*EditDist3Cost)(unsafe.Pointer(pCost)).FpNext = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 19650  			(*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost = pCost
 19651  		}
 19652  	}
 19653  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 19654  	if rc == SQLITE_OK {
 19655  		rc = rc2
 19656  	}
 19657  	if rc == SQLITE_OK {
 19658  		var iLang int32
 19659  		for iLang = 0; iLang < (*EditDist3Config)(unsafe.Pointer(p)).FnLang; iLang++ {
 19660  			(*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa + uintptr(iLang)*24)).FpCost = editDist3CostSort(tls, (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(p)).Fa+uintptr(iLang)*24)).FpCost)
 19661  		}
 19662  	}
 19663  	return rc
 19664  }
 19665  
 19666  func utf8Len(tls *libc.TLS, c uint8, N int32) int32 {
 19667  	var len int32 = 1
 19668  	if int32(c) > 0x7f {
 19669  		if int32(c)&0xe0 == 0xc0 {
 19670  			len = 2
 19671  		} else if int32(c)&0xf0 == 0xe0 {
 19672  			len = 3
 19673  		} else {
 19674  			len = 4
 19675  		}
 19676  	}
 19677  	if len > N {
 19678  		len = N
 19679  	}
 19680  	return len
 19681  }
 19682  
 19683  func matchTo(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 19684  	if int32(*(*int8)(unsafe.Pointer(p + 12 + uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)))) != int32(*(*int8)(unsafe.Pointer(z))) {
 19685  		return 0
 19686  	}
 19687  	if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n {
 19688  		return 0
 19689  	}
 19690  	if libc.Xstrncmp(tls, p+12+uintptr((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)) != 0 {
 19691  		return 0
 19692  	}
 19693  	return 1
 19694  }
 19695  
 19696  func matchFrom(tls *libc.TLS, p uintptr, z uintptr, n int32) int32 {
 19697  	if (*EditDist3Cost)(unsafe.Pointer(p)).FnFrom != 0 {
 19698  		if int32(*(*int8)(unsafe.Pointer(p + 12))) != int32(*(*int8)(unsafe.Pointer(z))) {
 19699  			return 0
 19700  		}
 19701  		if libc.Xstrncmp(tls, p+12, z, uint64((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)) != 0 {
 19702  			return 0
 19703  		}
 19704  	}
 19705  	return 1
 19706  }
 19707  
 19708  func matchFromTo(tls *libc.TLS, pStr uintptr, n1 int32, z2 uintptr, n2 int32) int32 {
 19709  	var b1 int32 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n1)*32)).FnByte
 19710  	if b1 > n2 {
 19711  		return 0
 19712  	}
 19713  
 19714  	if int32(*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n1)))) != int32(*(*int8)(unsafe.Pointer(z2))) {
 19715  		return 0
 19716  	}
 19717  	if libc.Xstrncmp(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz+uintptr(n1), z2, uint64(b1)) != 0 {
 19718  		return 0
 19719  	}
 19720  	return 1
 19721  }
 19722  
 19723  func editDist3FromStringDelete(tls *libc.TLS, p uintptr) {
 19724  	var i int32
 19725  	if p != 0 {
 19726  		for i = 0; i < (*EditDist3FromString)(unsafe.Pointer(p)).Fn; i++ {
 19727  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapDel)
 19728  			sqlite3.Xsqlite3_free(tls, (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(p)).Fa+uintptr(i)*32)).FapSubst)
 19729  		}
 19730  		sqlite3.Xsqlite3_free(tls, p)
 19731  	}
 19732  }
 19733  
 19734  func editDist3FromStringNew(tls *libc.TLS, pLang uintptr, z uintptr, n int32) uintptr {
 19735  	var pStr uintptr
 19736  	var p uintptr
 19737  	var i int32
 19738  
 19739  	if z == uintptr(0) {
 19740  		return uintptr(0)
 19741  	}
 19742  	if n < 0 {
 19743  		n = int32(libc.Xstrlen(tls, z))
 19744  	}
 19745  	pStr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3FromString{}))+uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n)+uint64(n)+uint64(1))
 19746  	if pStr == uintptr(0) {
 19747  		return uintptr(0)
 19748  	}
 19749  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fa = pStr + 1*24
 19750  	libc.Xmemset(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa, 0, uint64(unsafe.Sizeof(EditDist3From{}))*uint64(n))
 19751  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn = n
 19752  	(*EditDist3FromString)(unsafe.Pointer(pStr)).Fz = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(n)*32
 19753  	libc.Xmemcpy(tls, (*EditDist3FromString)(unsafe.Pointer(pStr)).Fz, z, uint64(n+1))
 19754  	if n != 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(n-1)))) == '*' {
 19755  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 1
 19756  		n--
 19757  		(*EditDist3FromString)(unsafe.Pointer(pStr)).Fn--
 19758  		*(*int8)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(pStr)).Fz + uintptr(n))) = int8(0)
 19759  	} else {
 19760  		(*EditDist3FromString)(unsafe.Pointer(pStr)).FisPrefix = 0
 19761  	}
 19762  
 19763  	for i = 0; i < n; i++ {
 19764  		var pFrom uintptr = (*EditDist3FromString)(unsafe.Pointer(pStr)).Fa + uintptr(i)*32
 19765  		libc.Xmemset(tls, pFrom, 0, uint64(unsafe.Sizeof(EditDist3From{})))
 19766  		(*EditDist3From)(unsafe.Pointer(pFrom)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z + uintptr(i)))), n-i)
 19767  		for p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost; p != 0; p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext {
 19768  			var apNew uintptr
 19769  			if i+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > n {
 19770  				continue
 19771  			}
 19772  			if matchFrom(tls, p, z+uintptr(i), n-i) == 0 {
 19773  				continue
 19774  			}
 19775  			if int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) == 0 {
 19776  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapDel,
 19777  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnDel+1))
 19778  				if apNew == uintptr(0) {
 19779  					break
 19780  				}
 19781  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapDel = apNew
 19782  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnDel, 1))*8)) = p
 19783  			} else {
 19784  				apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst,
 19785  					uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst+1))
 19786  				if apNew == uintptr(0) {
 19787  					break
 19788  				}
 19789  				(*EditDist3From)(unsafe.Pointer(pFrom)).FapSubst = apNew
 19790  				*(*uintptr)(unsafe.Pointer(apNew + uintptr(libc.PostIncInt32(&(*EditDist3From)(unsafe.Pointer(pFrom)).FnSubst, 1))*8)) = p
 19791  			}
 19792  		}
 19793  		if p != 0 {
 19794  			editDist3FromStringDelete(tls, pStr)
 19795  			pStr = uintptr(0)
 19796  			break
 19797  		}
 19798  	}
 19799  	return pStr
 19800  }
 19801  
 19802  func updateCost(tls *libc.TLS, m uintptr, i int32, j int32, iCost int32) {
 19803  	var b uint32
 19804  
 19805  	b = *(*uint32)(unsafe.Pointer(m + uintptr(j)*4)) + uint32(iCost)
 19806  	if b < *(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) {
 19807  		*(*uint32)(unsafe.Pointer(m + uintptr(i)*4)) = b
 19808  	}
 19809  }
 19810  
 19811  func editDist3Core(tls *libc.TLS, pFrom uintptr, z2 uintptr, n2 int32, pLang uintptr, pnMatch uintptr) int32 {
 19812  	bp := tls.Alloc(1048)
 19813  	defer tls.Free(1048)
 19814  
 19815  	var k int32
 19816  	var n int32
 19817  	var i1 int32
 19818  	var b1 int32
 19819  	var i2 int32
 19820  	var b2 int32
 19821  
 19822  	var a2 uintptr
 19823  	var m uintptr
 19824  	var pToFree uintptr
 19825  	var szRow int32
 19826  	var p uintptr
 19827  	var res int32
 19828  	var nByte sqlite3_uint64
 19829  
 19830  	var apNew uintptr
 19831  	var cx int32
 19832  	var cxp int32
 19833  	var cxd int32
 19834  	var cxu int32
 19835  	var rx int32
 19836  	var rxp int32
 19837  	var b int32
 19838  	var nExtra int32
 19839  	*(*EditDist3FromString)(unsafe.Pointer(bp + 1024)) = *(*EditDist3FromString)(unsafe.Pointer(pFrom))
 19840  
 19841  	n = ((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1) * (n2 + 1)
 19842  	n = (n + 1) & libc.CplInt32(1)
 19843  	nByte = uint64(n)*uint64(unsafe.Sizeof(uint32(0))) + uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2)
 19844  	if !(nByte <= sqlite3_uint64(unsafe.Sizeof([256]uint32{}))) {
 19845  		goto __1
 19846  	}
 19847  	m = bp
 19848  	pToFree = uintptr(0)
 19849  	goto __2
 19850  __1:
 19851  	m = libc.AssignUintptr(&pToFree, sqlite3.Xsqlite3_malloc64(tls, nByte))
 19852  	if !(m == uintptr(0)) {
 19853  		goto __3
 19854  	}
 19855  	return -1
 19856  __3:
 19857  	;
 19858  __2:
 19859  	;
 19860  	a2 = m + uintptr(n)*4
 19861  	libc.Xmemset(tls, a2, 0, uint64(unsafe.Sizeof(EditDist3To{}))*uint64(n2))
 19862  
 19863  	i2 = 0
 19864  __4:
 19865  	if !(i2 < n2) {
 19866  		goto __6
 19867  	}
 19868  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte = utf8Len(tls, uint8(*(*int8)(unsafe.Pointer(z2 + uintptr(i2)))), n2-i2)
 19869  	p = (*EditDist3Lang)(unsafe.Pointer(pLang)).FpCost
 19870  __7:
 19871  	if !(p != 0) {
 19872  		goto __9
 19873  	}
 19874  	if !(int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom) > 0) {
 19875  		goto __10
 19876  	}
 19877  	goto __9
 19878  __10:
 19879  	;
 19880  	if !(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo) > n2) {
 19881  		goto __11
 19882  	}
 19883  	goto __8
 19884  __11:
 19885  	;
 19886  	if !(int32(*(*int8)(unsafe.Pointer(p + 12))) > int32(*(*int8)(unsafe.Pointer(z2 + uintptr(i2))))) {
 19887  		goto __12
 19888  	}
 19889  	goto __9
 19890  __12:
 19891  	;
 19892  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) == 0) {
 19893  		goto __13
 19894  	}
 19895  	goto __8
 19896  __13:
 19897  	;
 19898  	(*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns++
 19899  	apNew = sqlite3.Xsqlite3_realloc64(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns, uint64(unsafe.Sizeof(uintptr(0)))*uint64((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns))
 19900  	if !(apNew == uintptr(0)) {
 19901  		goto __14
 19902  	}
 19903  	res = -1
 19904  	goto editDist3Abort
 19905  __14:
 19906  	;
 19907  	(*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FapIns = apNew
 19908  	*(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns-1)*8)) = p
 19909  	goto __8
 19910  __8:
 19911  	p = (*EditDist3Cost)(unsafe.Pointer(p)).FpNext
 19912  	goto __7
 19913  	goto __9
 19914  __9:
 19915  	;
 19916  	goto __5
 19917  __5:
 19918  	i2++
 19919  	goto __4
 19920  	goto __6
 19921  __6:
 19922  	;
 19923  	szRow = (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn + 1
 19924  	libc.Xmemset(tls, m, 0x01, uint64((n2+1)*szRow)*uint64(unsafe.Sizeof(uint32(0))))
 19925  	*(*uint32)(unsafe.Pointer(m)) = uint32(0)
 19926  
 19927  	i1 = 0
 19928  __15:
 19929  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 19930  		goto __17
 19931  	}
 19932  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 19933  	updateCost(tls, m, i1+b1, i1, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 19934  	k = 0
 19935  __18:
 19936  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 19937  		goto __20
 19938  	}
 19939  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 19940  	updateCost(tls, m, i1+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), i1, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19941  	goto __19
 19942  __19:
 19943  	k++
 19944  	goto __18
 19945  	goto __20
 19946  __20:
 19947  	;
 19948  	goto __16
 19949  __16:
 19950  	i1 = i1 + b1
 19951  	goto __15
 19952  	goto __17
 19953  __17:
 19954  	;
 19955  	i2 = 0
 19956  __21:
 19957  	if !(i2 < n2) {
 19958  		goto __23
 19959  	}
 19960  	b2 = (*EditDist3To)(unsafe.Pointer(a2 + uintptr(i2)*16)).FnByte
 19961  	rx = szRow * (i2 + b2)
 19962  	rxp = szRow * i2
 19963  	updateCost(tls, m, rx, rxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 19964  	k = 0
 19965  __24:
 19966  	if !(k < (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FnIns) {
 19967  		goto __26
 19968  	}
 19969  	p = *(*uintptr)(unsafe.Pointer((*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns + uintptr(k)*8))
 19970  	updateCost(tls, m, szRow*(i2+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo)), rxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19971  	goto __25
 19972  __25:
 19973  	k++
 19974  	goto __24
 19975  	goto __26
 19976  __26:
 19977  	;
 19978  	i1 = 0
 19979  __27:
 19980  	if !(i1 < (*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fn) {
 19981  		goto __29
 19982  	}
 19983  	b1 = (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa + uintptr(i1)*32)).FnByte
 19984  	cxp = rx + i1
 19985  	cx = cxp + b1
 19986  	cxd = rxp + i1
 19987  	cxu = cxd + b1
 19988  	updateCost(tls, m, cx, cxp, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiDelCost)
 19989  	k = 0
 19990  __30:
 19991  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnDel) {
 19992  		goto __32
 19993  	}
 19994  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapDel + uintptr(k)*8))
 19995  	updateCost(tls, m, cxp+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom), cxp, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 19996  	goto __31
 19997  __31:
 19998  	k++
 19999  	goto __30
 20000  	goto __32
 20001  __32:
 20002  	;
 20003  	updateCost(tls, m, cx, cxu, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiInsCost)
 20004  	if !(matchFromTo(tls, bp+1024, i1, z2+uintptr(i2), n2-i2) != 0) {
 20005  		goto __33
 20006  	}
 20007  	updateCost(tls, m, cx, cxd, 0)
 20008  __33:
 20009  	;
 20010  	updateCost(tls, m, cx, cxd, (*EditDist3Lang)(unsafe.Pointer(pLang)).FiSubCost)
 20011  	k = 0
 20012  __34:
 20013  	if !(k < (*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FnSubst) {
 20014  		goto __36
 20015  	}
 20016  	p = *(*uintptr)(unsafe.Pointer((*EditDist3From)(unsafe.Pointer((*EditDist3FromString)(unsafe.Pointer(bp+1024)).Fa+uintptr(i1)*32)).FapSubst + uintptr(k)*8))
 20017  	if !(matchTo(tls, p, z2+uintptr(i2), n2-i2) != 0) {
 20018  		goto __37
 20019  	}
 20020  	updateCost(tls, m, cxd+int32((*EditDist3Cost)(unsafe.Pointer(p)).FnFrom)+szRow*int32((*EditDist3Cost)(unsafe.Pointer(p)).FnTo), cxd, int32((*EditDist3Cost)(unsafe.Pointer(p)).FiCost))
 20021  __37:
 20022  	;
 20023  	goto __35
 20024  __35:
 20025  	k++
 20026  	goto __34
 20027  	goto __36
 20028  __36:
 20029  	;
 20030  	goto __28
 20031  __28:
 20032  	i1 = i1 + b1
 20033  	goto __27
 20034  	goto __29
 20035  __29:
 20036  	;
 20037  	goto __22
 20038  __22:
 20039  	i2 = i2 + b2
 20040  	goto __21
 20041  	goto __23
 20042  __23:
 20043  	;
 20044  	res = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*(n2+1)-1)*4)))
 20045  	n = n2
 20046  	if !((*EditDist3FromString)(unsafe.Pointer(bp+1024)).FisPrefix != 0) {
 20047  		goto __38
 20048  	}
 20049  	i2 = 1
 20050  __39:
 20051  	if !(i2 <= n2) {
 20052  		goto __41
 20053  	}
 20054  	b = int32(*(*uint32)(unsafe.Pointer(m + uintptr(szRow*i2-1)*4)))
 20055  	if !(b <= res) {
 20056  		goto __42
 20057  	}
 20058  	res = b
 20059  	n = i2 - 1
 20060  __42:
 20061  	;
 20062  	goto __40
 20063  __40:
 20064  	i2++
 20065  	goto __39
 20066  	goto __41
 20067  __41:
 20068  	;
 20069  __38:
 20070  	;
 20071  	if !(pnMatch != 0) {
 20072  		goto __43
 20073  	}
 20074  	nExtra = 0
 20075  	k = 0
 20076  __44:
 20077  	if !(k < n) {
 20078  		goto __46
 20079  	}
 20080  	if !(int32(*(*int8)(unsafe.Pointer(z2 + uintptr(k))))&0xc0 == 0x80) {
 20081  		goto __47
 20082  	}
 20083  	nExtra++
 20084  __47:
 20085  	;
 20086  	goto __45
 20087  __45:
 20088  	k++
 20089  	goto __44
 20090  	goto __46
 20091  __46:
 20092  	;
 20093  	*(*int32)(unsafe.Pointer(pnMatch)) = n - nExtra
 20094  __43:
 20095  	;
 20096  editDist3Abort:
 20097  	i2 = 0
 20098  __48:
 20099  	if !(i2 < n2) {
 20100  		goto __50
 20101  	}
 20102  	sqlite3.Xsqlite3_free(tls, (*EditDist3To)(unsafe.Pointer(a2+uintptr(i2)*16)).FapIns)
 20103  	goto __49
 20104  __49:
 20105  	i2++
 20106  	goto __48
 20107  	goto __50
 20108  __50:
 20109  	;
 20110  	sqlite3.Xsqlite3_free(tls, pToFree)
 20111  	return res
 20112  }
 20113  
 20114  func editDist3FindLang(tls *libc.TLS, pConfig uintptr, iLang int32) uintptr {
 20115  	var i int32
 20116  	for i = 0; i < (*EditDist3Config)(unsafe.Pointer(pConfig)).FnLang; i++ {
 20117  		if (*EditDist3Lang)(unsafe.Pointer((*EditDist3Config)(unsafe.Pointer(pConfig)).Fa+uintptr(i)*24)).FiLang == iLang {
 20118  			return (*EditDist3Config)(unsafe.Pointer(pConfig)).Fa + uintptr(i)*24
 20119  		}
 20120  	}
 20121  	return uintptr(unsafe.Pointer(&editDist3Lang))
 20122  }
 20123  
 20124  func editDist3SqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20125  	var pConfig uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 20126  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 20127  	var rc int32
 20128  	if argc == 1 {
 20129  		var zTable uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20130  		rc = editDist3ConfigLoad(tls, pConfig, db, zTable)
 20131  		if rc != 0 {
 20132  			sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 20133  		}
 20134  	} else {
 20135  		var zA uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20136  		var zB uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20137  		var nA int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20138  		var nB int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 20139  		var iLang int32
 20140  		if argc == 3 {
 20141  			iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 20142  		} else {
 20143  			iLang = 0
 20144  		}
 20145  		var pLang uintptr = editDist3FindLang(tls, pConfig, iLang)
 20146  		var pFrom uintptr
 20147  		var dist int32
 20148  
 20149  		pFrom = editDist3FromStringNew(tls, pLang, zA, nA)
 20150  		if pFrom == uintptr(0) {
 20151  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20152  			return
 20153  		}
 20154  		dist = editDist3Core(tls, pFrom, zB, nB, pLang, uintptr(0))
 20155  		editDist3FromStringDelete(tls, pFrom)
 20156  		if dist == -1 {
 20157  			sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20158  		} else {
 20159  			sqlite3.Xsqlite3_result_int(tls, context, dist)
 20160  		}
 20161  	}
 20162  }
 20163  
 20164  func editDist3Install(tls *libc.TLS, db uintptr) int32 {
 20165  	var rc int32
 20166  	var pConfig uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 20167  	if pConfig == uintptr(0) {
 20168  		return SQLITE_NOMEM
 20169  	}
 20170  	libc.Xmemset(tls, pConfig, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 20171  	rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20172  		2, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20173  		*(*uintptr)(unsafe.Pointer(&struct {
 20174  			f func(*libc.TLS, uintptr, int32, uintptr)
 20175  		}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20176  	if rc == SQLITE_OK {
 20177  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20178  			3, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20179  			*(*uintptr)(unsafe.Pointer(&struct {
 20180  				f func(*libc.TLS, uintptr, int32, uintptr)
 20181  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), uintptr(0))
 20182  	}
 20183  	if rc == SQLITE_OK {
 20184  		rc = sqlite3.Xsqlite3_create_function_v2(tls, db, ts+7179,
 20185  			1, SQLITE_UTF8|SQLITE_DETERMINISTIC, pConfig,
 20186  			*(*uintptr)(unsafe.Pointer(&struct {
 20187  				f func(*libc.TLS, uintptr, int32, uintptr)
 20188  			}{editDist3SqlFunc})), uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{editDist3ConfigDelete})))
 20189  	} else {
 20190  		sqlite3.Xsqlite3_free(tls, pConfig)
 20191  	}
 20192  	return rc
 20193  }
 20194  
 20195  var sqlite3Utf8Trans1 = [64]uint8{
 20196  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20197  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20198  	uint8(0x10), uint8(0x11), uint8(0x12), uint8(0x13), uint8(0x14), uint8(0x15), uint8(0x16), uint8(0x17),
 20199  	uint8(0x18), uint8(0x19), uint8(0x1a), uint8(0x1b), uint8(0x1c), uint8(0x1d), uint8(0x1e), uint8(0x1f),
 20200  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20201  	uint8(0x08), uint8(0x09), uint8(0x0a), uint8(0x0b), uint8(0x0c), uint8(0x0d), uint8(0x0e), uint8(0x0f),
 20202  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x04), uint8(0x05), uint8(0x06), uint8(0x07),
 20203  	uint8(0x00), uint8(0x01), uint8(0x02), uint8(0x03), uint8(0x00), uint8(0x01), uint8(0x00), uint8(0x00),
 20204  }
 20205  
 20206  func utf8Read(tls *libc.TLS, z uintptr, n int32, pSize uintptr) int32 {
 20207  	var c int32
 20208  	var i int32
 20209  
 20210  	if 0 != 0 {
 20211  		c = libc.AssignInt32(&i, 0)
 20212  	} else {
 20213  		c = int32(*(*uint8)(unsafe.Pointer(z)))
 20214  		i = 1
 20215  		if c >= 0xc0 {
 20216  			c = int32(sqlite3Utf8Trans1[c-0xc0])
 20217  			for i < n && int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))&0xc0 == 0x80 {
 20218  				c = c<<6 + 0x3f&int32(*(*uint8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&i, 1)))))
 20219  			}
 20220  		}
 20221  	}
 20222  	*(*int32)(unsafe.Pointer(pSize)) = i
 20223  	return c
 20224  }
 20225  
 20226  func utf8Charlen(tls *libc.TLS, zIn uintptr, nIn int32) int32 {
 20227  	bp := tls.Alloc(4)
 20228  	defer tls.Free(4)
 20229  
 20230  	var i int32
 20231  	var nChar int32 = 0
 20232  	for i = 0; i < nIn; nChar++ {
 20233  		utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20234  		i = i + *(*int32)(unsafe.Pointer(bp))
 20235  	}
 20236  	return nChar
 20237  }
 20238  
 20239  type Transliteration1 = struct {
 20240  	FcFrom uint16
 20241  	FcTo0  uint8
 20242  	FcTo1  uint8
 20243  	FcTo2  uint8
 20244  	FcTo3  uint8
 20245  }
 20246  
 20247  type Transliteration = Transliteration1
 20248  
 20249  var translit = [389]Transliteration{
 20250  	{FcFrom: uint16(0x00A0), FcTo0: uint8(0x20)},
 20251  	{FcFrom: uint16(0x00B5), FcTo0: uint8(0x75)},
 20252  	{FcFrom: uint16(0x00C0), FcTo0: uint8(0x41)},
 20253  	{FcFrom: uint16(0x00C1), FcTo0: uint8(0x41)},
 20254  	{FcFrom: uint16(0x00C2), FcTo0: uint8(0x41)},
 20255  	{FcFrom: uint16(0x00C3), FcTo0: uint8(0x41)},
 20256  	{FcFrom: uint16(0x00C4), FcTo0: uint8(0x41), FcTo1: uint8(0x65)},
 20257  	{FcFrom: uint16(0x00C5), FcTo0: uint8(0x41), FcTo1: uint8(0x61)},
 20258  	{FcFrom: uint16(0x00C6), FcTo0: uint8(0x41), FcTo1: uint8(0x45)},
 20259  	{FcFrom: uint16(0x00C7), FcTo0: uint8(0x43)},
 20260  	{FcFrom: uint16(0x00C8), FcTo0: uint8(0x45)},
 20261  	{FcFrom: uint16(0x00C9), FcTo0: uint8(0x45)},
 20262  	{FcFrom: uint16(0x00CA), FcTo0: uint8(0x45)},
 20263  	{FcFrom: uint16(0x00CB), FcTo0: uint8(0x45)},
 20264  	{FcFrom: uint16(0x00CC), FcTo0: uint8(0x49)},
 20265  	{FcFrom: uint16(0x00CD), FcTo0: uint8(0x49)},
 20266  	{FcFrom: uint16(0x00CE), FcTo0: uint8(0x49)},
 20267  	{FcFrom: uint16(0x00CF), FcTo0: uint8(0x49)},
 20268  	{FcFrom: uint16(0x00D0), FcTo0: uint8(0x44)},
 20269  	{FcFrom: uint16(0x00D1), FcTo0: uint8(0x4E)},
 20270  	{FcFrom: uint16(0x00D2), FcTo0: uint8(0x4F)},
 20271  	{FcFrom: uint16(0x00D3), FcTo0: uint8(0x4F)},
 20272  	{FcFrom: uint16(0x00D4), FcTo0: uint8(0x4F)},
 20273  	{FcFrom: uint16(0x00D5), FcTo0: uint8(0x4F)},
 20274  	{FcFrom: uint16(0x00D6), FcTo0: uint8(0x4F), FcTo1: uint8(0x65)},
 20275  	{FcFrom: uint16(0x00D7), FcTo0: uint8(0x78)},
 20276  	{FcFrom: uint16(0x00D8), FcTo0: uint8(0x4F)},
 20277  	{FcFrom: uint16(0x00D9), FcTo0: uint8(0x55)},
 20278  	{FcFrom: uint16(0x00DA), FcTo0: uint8(0x55)},
 20279  	{FcFrom: uint16(0x00DB), FcTo0: uint8(0x55)},
 20280  	{FcFrom: uint16(0x00DC), FcTo0: uint8(0x55), FcTo1: uint8(0x65)},
 20281  	{FcFrom: uint16(0x00DD), FcTo0: uint8(0x59)},
 20282  	{FcFrom: uint16(0x00DE), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20283  	{FcFrom: uint16(0x00DF), FcTo0: uint8(0x73), FcTo1: uint8(0x73)},
 20284  	{FcFrom: uint16(0x00E0), FcTo0: uint8(0x61)},
 20285  	{FcFrom: uint16(0x00E1), FcTo0: uint8(0x61)},
 20286  	{FcFrom: uint16(0x00E2), FcTo0: uint8(0x61)},
 20287  	{FcFrom: uint16(0x00E3), FcTo0: uint8(0x61)},
 20288  	{FcFrom: uint16(0x00E4), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20289  	{FcFrom: uint16(0x00E5), FcTo0: uint8(0x61), FcTo1: uint8(0x61)},
 20290  	{FcFrom: uint16(0x00E6), FcTo0: uint8(0x61), FcTo1: uint8(0x65)},
 20291  	{FcFrom: uint16(0x00E7), FcTo0: uint8(0x63)},
 20292  	{FcFrom: uint16(0x00E8), FcTo0: uint8(0x65)},
 20293  	{FcFrom: uint16(0x00E9), FcTo0: uint8(0x65)},
 20294  	{FcFrom: uint16(0x00EA), FcTo0: uint8(0x65)},
 20295  	{FcFrom: uint16(0x00EB), FcTo0: uint8(0x65)},
 20296  	{FcFrom: uint16(0x00EC), FcTo0: uint8(0x69)},
 20297  	{FcFrom: uint16(0x00ED), FcTo0: uint8(0x69)},
 20298  	{FcFrom: uint16(0x00EE), FcTo0: uint8(0x69)},
 20299  	{FcFrom: uint16(0x00EF), FcTo0: uint8(0x69)},
 20300  	{FcFrom: uint16(0x00F0), FcTo0: uint8(0x64)},
 20301  	{FcFrom: uint16(0x00F1), FcTo0: uint8(0x6E)},
 20302  	{FcFrom: uint16(0x00F2), FcTo0: uint8(0x6F)},
 20303  	{FcFrom: uint16(0x00F3), FcTo0: uint8(0x6F)},
 20304  	{FcFrom: uint16(0x00F4), FcTo0: uint8(0x6F)},
 20305  	{FcFrom: uint16(0x00F5), FcTo0: uint8(0x6F)},
 20306  	{FcFrom: uint16(0x00F6), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20307  	{FcFrom: uint16(0x00F7), FcTo0: uint8(0x3A)},
 20308  	{FcFrom: uint16(0x00F8), FcTo0: uint8(0x6F)},
 20309  	{FcFrom: uint16(0x00F9), FcTo0: uint8(0x75)},
 20310  	{FcFrom: uint16(0x00FA), FcTo0: uint8(0x75)},
 20311  	{FcFrom: uint16(0x00FB), FcTo0: uint8(0x75)},
 20312  	{FcFrom: uint16(0x00FC), FcTo0: uint8(0x75), FcTo1: uint8(0x65)},
 20313  	{FcFrom: uint16(0x00FD), FcTo0: uint8(0x79)},
 20314  	{FcFrom: uint16(0x00FE), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20315  	{FcFrom: uint16(0x00FF), FcTo0: uint8(0x79)},
 20316  	{FcFrom: uint16(0x0100), FcTo0: uint8(0x41)},
 20317  	{FcFrom: uint16(0x0101), FcTo0: uint8(0x61)},
 20318  	{FcFrom: uint16(0x0102), FcTo0: uint8(0x41)},
 20319  	{FcFrom: uint16(0x0103), FcTo0: uint8(0x61)},
 20320  	{FcFrom: uint16(0x0104), FcTo0: uint8(0x41)},
 20321  	{FcFrom: uint16(0x0105), FcTo0: uint8(0x61)},
 20322  	{FcFrom: uint16(0x0106), FcTo0: uint8(0x43)},
 20323  	{FcFrom: uint16(0x0107), FcTo0: uint8(0x63)},
 20324  	{FcFrom: uint16(0x0108), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20325  	{FcFrom: uint16(0x0109), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20326  	{FcFrom: uint16(0x010A), FcTo0: uint8(0x43)},
 20327  	{FcFrom: uint16(0x010B), FcTo0: uint8(0x63)},
 20328  	{FcFrom: uint16(0x010C), FcTo0: uint8(0x43)},
 20329  	{FcFrom: uint16(0x010D), FcTo0: uint8(0x63)},
 20330  	{FcFrom: uint16(0x010E), FcTo0: uint8(0x44)},
 20331  	{FcFrom: uint16(0x010F), FcTo0: uint8(0x64)},
 20332  	{FcFrom: uint16(0x0110), FcTo0: uint8(0x44)},
 20333  	{FcFrom: uint16(0x0111), FcTo0: uint8(0x64)},
 20334  	{FcFrom: uint16(0x0112), FcTo0: uint8(0x45)},
 20335  	{FcFrom: uint16(0x0113), FcTo0: uint8(0x65)},
 20336  	{FcFrom: uint16(0x0114), FcTo0: uint8(0x45)},
 20337  	{FcFrom: uint16(0x0115), FcTo0: uint8(0x65)},
 20338  	{FcFrom: uint16(0x0116), FcTo0: uint8(0x45)},
 20339  	{FcFrom: uint16(0x0117), FcTo0: uint8(0x65)},
 20340  	{FcFrom: uint16(0x0118), FcTo0: uint8(0x45)},
 20341  	{FcFrom: uint16(0x0119), FcTo0: uint8(0x65)},
 20342  	{FcFrom: uint16(0x011A), FcTo0: uint8(0x45)},
 20343  	{FcFrom: uint16(0x011B), FcTo0: uint8(0x65)},
 20344  	{FcFrom: uint16(0x011C), FcTo0: uint8(0x47), FcTo1: uint8(0x68)},
 20345  	{FcFrom: uint16(0x011D), FcTo0: uint8(0x67), FcTo1: uint8(0x68)},
 20346  	{FcFrom: uint16(0x011E), FcTo0: uint8(0x47)},
 20347  	{FcFrom: uint16(0x011F), FcTo0: uint8(0x67)},
 20348  	{FcFrom: uint16(0x0120), FcTo0: uint8(0x47)},
 20349  	{FcFrom: uint16(0x0121), FcTo0: uint8(0x67)},
 20350  	{FcFrom: uint16(0x0122), FcTo0: uint8(0x47)},
 20351  	{FcFrom: uint16(0x0123), FcTo0: uint8(0x67)},
 20352  	{FcFrom: uint16(0x0124), FcTo0: uint8(0x48), FcTo1: uint8(0x68)},
 20353  	{FcFrom: uint16(0x0125), FcTo0: uint8(0x68), FcTo1: uint8(0x68)},
 20354  	{FcFrom: uint16(0x0126), FcTo0: uint8(0x48)},
 20355  	{FcFrom: uint16(0x0127), FcTo0: uint8(0x68)},
 20356  	{FcFrom: uint16(0x0128), FcTo0: uint8(0x49)},
 20357  	{FcFrom: uint16(0x0129), FcTo0: uint8(0x69)},
 20358  	{FcFrom: uint16(0x012A), FcTo0: uint8(0x49)},
 20359  	{FcFrom: uint16(0x012B), FcTo0: uint8(0x69)},
 20360  	{FcFrom: uint16(0x012C), FcTo0: uint8(0x49)},
 20361  	{FcFrom: uint16(0x012D), FcTo0: uint8(0x69)},
 20362  	{FcFrom: uint16(0x012E), FcTo0: uint8(0x49)},
 20363  	{FcFrom: uint16(0x012F), FcTo0: uint8(0x69)},
 20364  	{FcFrom: uint16(0x0130), FcTo0: uint8(0x49)},
 20365  	{FcFrom: uint16(0x0131), FcTo0: uint8(0x69)},
 20366  	{FcFrom: uint16(0x0132), FcTo0: uint8(0x49), FcTo1: uint8(0x4A)},
 20367  	{FcFrom: uint16(0x0133), FcTo0: uint8(0x69), FcTo1: uint8(0x6A)},
 20368  	{FcFrom: uint16(0x0134), FcTo0: uint8(0x4A), FcTo1: uint8(0x68)},
 20369  	{FcFrom: uint16(0x0135), FcTo0: uint8(0x6A), FcTo1: uint8(0x68)},
 20370  	{FcFrom: uint16(0x0136), FcTo0: uint8(0x4B)},
 20371  	{FcFrom: uint16(0x0137), FcTo0: uint8(0x6B)},
 20372  	{FcFrom: uint16(0x0138), FcTo0: uint8(0x6B)},
 20373  	{FcFrom: uint16(0x0139), FcTo0: uint8(0x4C)},
 20374  	{FcFrom: uint16(0x013A), FcTo0: uint8(0x6C)},
 20375  	{FcFrom: uint16(0x013B), FcTo0: uint8(0x4C)},
 20376  	{FcFrom: uint16(0x013C), FcTo0: uint8(0x6C)},
 20377  	{FcFrom: uint16(0x013D), FcTo0: uint8(0x4C)},
 20378  	{FcFrom: uint16(0x013E), FcTo0: uint8(0x6C)},
 20379  	{FcFrom: uint16(0x013F), FcTo0: uint8(0x4C), FcTo1: uint8(0x2E)},
 20380  	{FcFrom: uint16(0x0140), FcTo0: uint8(0x6C), FcTo1: uint8(0x2E)},
 20381  	{FcFrom: uint16(0x0141), FcTo0: uint8(0x4C)},
 20382  	{FcFrom: uint16(0x0142), FcTo0: uint8(0x6C)},
 20383  	{FcFrom: uint16(0x0143), FcTo0: uint8(0x4E)},
 20384  	{FcFrom: uint16(0x0144), FcTo0: uint8(0x6E)},
 20385  	{FcFrom: uint16(0x0145), FcTo0: uint8(0x4E)},
 20386  	{FcFrom: uint16(0x0146), FcTo0: uint8(0x6E)},
 20387  	{FcFrom: uint16(0x0147), FcTo0: uint8(0x4E)},
 20388  	{FcFrom: uint16(0x0148), FcTo0: uint8(0x6E)},
 20389  	{FcFrom: uint16(0x0149), FcTo0: uint8(0x27), FcTo1: uint8(0x6E)},
 20390  	{FcFrom: uint16(0x014A), FcTo0: uint8(0x4E), FcTo1: uint8(0x47)},
 20391  	{FcFrom: uint16(0x014B), FcTo0: uint8(0x6E), FcTo1: uint8(0x67)},
 20392  	{FcFrom: uint16(0x014C), FcTo0: uint8(0x4F)},
 20393  	{FcFrom: uint16(0x014D), FcTo0: uint8(0x6F)},
 20394  	{FcFrom: uint16(0x014E), FcTo0: uint8(0x4F)},
 20395  	{FcFrom: uint16(0x014F), FcTo0: uint8(0x6F)},
 20396  	{FcFrom: uint16(0x0150), FcTo0: uint8(0x4F)},
 20397  	{FcFrom: uint16(0x0151), FcTo0: uint8(0x6F)},
 20398  	{FcFrom: uint16(0x0152), FcTo0: uint8(0x4F), FcTo1: uint8(0x45)},
 20399  	{FcFrom: uint16(0x0153), FcTo0: uint8(0x6F), FcTo1: uint8(0x65)},
 20400  	{FcFrom: uint16(0x0154), FcTo0: uint8(0x52)},
 20401  	{FcFrom: uint16(0x0155), FcTo0: uint8(0x72)},
 20402  	{FcFrom: uint16(0x0156), FcTo0: uint8(0x52)},
 20403  	{FcFrom: uint16(0x0157), FcTo0: uint8(0x72)},
 20404  	{FcFrom: uint16(0x0158), FcTo0: uint8(0x52)},
 20405  	{FcFrom: uint16(0x0159), FcTo0: uint8(0x72)},
 20406  	{FcFrom: uint16(0x015A), FcTo0: uint8(0x53)},
 20407  	{FcFrom: uint16(0x015B), FcTo0: uint8(0x73)},
 20408  	{FcFrom: uint16(0x015C), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20409  	{FcFrom: uint16(0x015D), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20410  	{FcFrom: uint16(0x015E), FcTo0: uint8(0x53)},
 20411  	{FcFrom: uint16(0x015F), FcTo0: uint8(0x73)},
 20412  	{FcFrom: uint16(0x0160), FcTo0: uint8(0x53)},
 20413  	{FcFrom: uint16(0x0161), FcTo0: uint8(0x73)},
 20414  	{FcFrom: uint16(0x0162), FcTo0: uint8(0x54)},
 20415  	{FcFrom: uint16(0x0163), FcTo0: uint8(0x74)},
 20416  	{FcFrom: uint16(0x0164), FcTo0: uint8(0x54)},
 20417  	{FcFrom: uint16(0x0165), FcTo0: uint8(0x74)},
 20418  	{FcFrom: uint16(0x0166), FcTo0: uint8(0x54)},
 20419  	{FcFrom: uint16(0x0167), FcTo0: uint8(0x74)},
 20420  	{FcFrom: uint16(0x0168), FcTo0: uint8(0x55)},
 20421  	{FcFrom: uint16(0x0169), FcTo0: uint8(0x75)},
 20422  	{FcFrom: uint16(0x016A), FcTo0: uint8(0x55)},
 20423  	{FcFrom: uint16(0x016B), FcTo0: uint8(0x75)},
 20424  	{FcFrom: uint16(0x016C), FcTo0: uint8(0x55)},
 20425  	{FcFrom: uint16(0x016D), FcTo0: uint8(0x75)},
 20426  	{FcFrom: uint16(0x016E), FcTo0: uint8(0x55)},
 20427  	{FcFrom: uint16(0x016F), FcTo0: uint8(0x75)},
 20428  	{FcFrom: uint16(0x0170), FcTo0: uint8(0x55)},
 20429  	{FcFrom: uint16(0x0171), FcTo0: uint8(0x75)},
 20430  	{FcFrom: uint16(0x0172), FcTo0: uint8(0x55)},
 20431  	{FcFrom: uint16(0x0173), FcTo0: uint8(0x75)},
 20432  	{FcFrom: uint16(0x0174), FcTo0: uint8(0x57)},
 20433  	{FcFrom: uint16(0x0175), FcTo0: uint8(0x77)},
 20434  	{FcFrom: uint16(0x0176), FcTo0: uint8(0x59)},
 20435  	{FcFrom: uint16(0x0177), FcTo0: uint8(0x79)},
 20436  	{FcFrom: uint16(0x0178), FcTo0: uint8(0x59)},
 20437  	{FcFrom: uint16(0x0179), FcTo0: uint8(0x5A)},
 20438  	{FcFrom: uint16(0x017A), FcTo0: uint8(0x7A)},
 20439  	{FcFrom: uint16(0x017B), FcTo0: uint8(0x5A)},
 20440  	{FcFrom: uint16(0x017C), FcTo0: uint8(0x7A)},
 20441  	{FcFrom: uint16(0x017D), FcTo0: uint8(0x5A)},
 20442  	{FcFrom: uint16(0x017E), FcTo0: uint8(0x7A)},
 20443  	{FcFrom: uint16(0x017F), FcTo0: uint8(0x73)},
 20444  	{FcFrom: uint16(0x0192), FcTo0: uint8(0x66)},
 20445  	{FcFrom: uint16(0x0218), FcTo0: uint8(0x53)},
 20446  	{FcFrom: uint16(0x0219), FcTo0: uint8(0x73)},
 20447  	{FcFrom: uint16(0x021A), FcTo0: uint8(0x54)},
 20448  	{FcFrom: uint16(0x021B), FcTo0: uint8(0x74)},
 20449  	{FcFrom: uint16(0x0386), FcTo0: uint8(0x41)},
 20450  	{FcFrom: uint16(0x0388), FcTo0: uint8(0x45)},
 20451  	{FcFrom: uint16(0x0389), FcTo0: uint8(0x49)},
 20452  	{FcFrom: uint16(0x038A), FcTo0: uint8(0x49)},
 20453  	{FcFrom: uint16(0x038C), FcTo0: uint8(0x4f)},
 20454  	{FcFrom: uint16(0x038E), FcTo0: uint8(0x59)},
 20455  	{FcFrom: uint16(0x038F), FcTo0: uint8(0x4f)},
 20456  	{FcFrom: uint16(0x0390), FcTo0: uint8(0x69)},
 20457  	{FcFrom: uint16(0x0391), FcTo0: uint8(0x41)},
 20458  	{FcFrom: uint16(0x0392), FcTo0: uint8(0x42)},
 20459  	{FcFrom: uint16(0x0393), FcTo0: uint8(0x47)},
 20460  	{FcFrom: uint16(0x0394), FcTo0: uint8(0x44)},
 20461  	{FcFrom: uint16(0x0395), FcTo0: uint8(0x45)},
 20462  	{FcFrom: uint16(0x0396), FcTo0: uint8(0x5a)},
 20463  	{FcFrom: uint16(0x0397), FcTo0: uint8(0x49)},
 20464  	{FcFrom: uint16(0x0398), FcTo0: uint8(0x54), FcTo1: uint8(0x68)},
 20465  	{FcFrom: uint16(0x0399), FcTo0: uint8(0x49)},
 20466  	{FcFrom: uint16(0x039A), FcTo0: uint8(0x4b)},
 20467  	{FcFrom: uint16(0x039B), FcTo0: uint8(0x4c)},
 20468  	{FcFrom: uint16(0x039C), FcTo0: uint8(0x4d)},
 20469  	{FcFrom: uint16(0x039D), FcTo0: uint8(0x4e)},
 20470  	{FcFrom: uint16(0x039E), FcTo0: uint8(0x58)},
 20471  	{FcFrom: uint16(0x039F), FcTo0: uint8(0x4f)},
 20472  	{FcFrom: uint16(0x03A0), FcTo0: uint8(0x50)},
 20473  	{FcFrom: uint16(0x03A1), FcTo0: uint8(0x52)},
 20474  	{FcFrom: uint16(0x03A3), FcTo0: uint8(0x53)},
 20475  	{FcFrom: uint16(0x03A4), FcTo0: uint8(0x54)},
 20476  	{FcFrom: uint16(0x03A5), FcTo0: uint8(0x59)},
 20477  	{FcFrom: uint16(0x03A6), FcTo0: uint8(0x46)},
 20478  	{FcFrom: uint16(0x03A7), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20479  	{FcFrom: uint16(0x03A8), FcTo0: uint8(0x50), FcTo1: uint8(0x73)},
 20480  	{FcFrom: uint16(0x03A9), FcTo0: uint8(0x4f)},
 20481  	{FcFrom: uint16(0x03AA), FcTo0: uint8(0x49)},
 20482  	{FcFrom: uint16(0x03AB), FcTo0: uint8(0x59)},
 20483  	{FcFrom: uint16(0x03AC), FcTo0: uint8(0x61)},
 20484  	{FcFrom: uint16(0x03AD), FcTo0: uint8(0x65)},
 20485  	{FcFrom: uint16(0x03AE), FcTo0: uint8(0x69)},
 20486  	{FcFrom: uint16(0x03AF), FcTo0: uint8(0x69)},
 20487  	{FcFrom: uint16(0x03B1), FcTo0: uint8(0x61)},
 20488  	{FcFrom: uint16(0x03B2), FcTo0: uint8(0x62)},
 20489  	{FcFrom: uint16(0x03B3), FcTo0: uint8(0x67)},
 20490  	{FcFrom: uint16(0x03B4), FcTo0: uint8(0x64)},
 20491  	{FcFrom: uint16(0x03B5), FcTo0: uint8(0x65)},
 20492  	{FcFrom: uint16(0x03B6), FcTo0: uint8(0x7a)},
 20493  	{FcFrom: uint16(0x03B7), FcTo0: uint8(0x69)},
 20494  	{FcFrom: uint16(0x03B8), FcTo0: uint8(0x74), FcTo1: uint8(0x68)},
 20495  	{FcFrom: uint16(0x03B9), FcTo0: uint8(0x69)},
 20496  	{FcFrom: uint16(0x03BA), FcTo0: uint8(0x6b)},
 20497  	{FcFrom: uint16(0x03BB), FcTo0: uint8(0x6c)},
 20498  	{FcFrom: uint16(0x03BC), FcTo0: uint8(0x6d)},
 20499  	{FcFrom: uint16(0x03BD), FcTo0: uint8(0x6e)},
 20500  	{FcFrom: uint16(0x03BE), FcTo0: uint8(0x78)},
 20501  	{FcFrom: uint16(0x03BF), FcTo0: uint8(0x6f)},
 20502  	{FcFrom: uint16(0x03C0), FcTo0: uint8(0x70)},
 20503  	{FcFrom: uint16(0x03C1), FcTo0: uint8(0x72)},
 20504  	{FcFrom: uint16(0x03C3), FcTo0: uint8(0x73)},
 20505  	{FcFrom: uint16(0x03C4), FcTo0: uint8(0x74)},
 20506  	{FcFrom: uint16(0x03C5), FcTo0: uint8(0x79)},
 20507  	{FcFrom: uint16(0x03C6), FcTo0: uint8(0x66)},
 20508  	{FcFrom: uint16(0x03C7), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20509  	{FcFrom: uint16(0x03C8), FcTo0: uint8(0x70), FcTo1: uint8(0x73)},
 20510  	{FcFrom: uint16(0x03C9), FcTo0: uint8(0x6f)},
 20511  	{FcFrom: uint16(0x03CA), FcTo0: uint8(0x69)},
 20512  	{FcFrom: uint16(0x03CB), FcTo0: uint8(0x79)},
 20513  	{FcFrom: uint16(0x03CC), FcTo0: uint8(0x6f)},
 20514  	{FcFrom: uint16(0x03CD), FcTo0: uint8(0x79)},
 20515  	{FcFrom: uint16(0x03CE), FcTo0: uint8(0x69)},
 20516  	{FcFrom: uint16(0x0400), FcTo0: uint8(0x45)},
 20517  	{FcFrom: uint16(0x0401), FcTo0: uint8(0x45)},
 20518  	{FcFrom: uint16(0x0402), FcTo0: uint8(0x44)},
 20519  	{FcFrom: uint16(0x0403), FcTo0: uint8(0x47)},
 20520  	{FcFrom: uint16(0x0404), FcTo0: uint8(0x45)},
 20521  	{FcFrom: uint16(0x0405), FcTo0: uint8(0x5a)},
 20522  	{FcFrom: uint16(0x0406), FcTo0: uint8(0x49)},
 20523  	{FcFrom: uint16(0x0407), FcTo0: uint8(0x49)},
 20524  	{FcFrom: uint16(0x0408), FcTo0: uint8(0x4a)},
 20525  	{FcFrom: uint16(0x0409), FcTo0: uint8(0x49)},
 20526  	{FcFrom: uint16(0x040A), FcTo0: uint8(0x4e)},
 20527  	{FcFrom: uint16(0x040B), FcTo0: uint8(0x44)},
 20528  	{FcFrom: uint16(0x040C), FcTo0: uint8(0x4b)},
 20529  	{FcFrom: uint16(0x040D), FcTo0: uint8(0x49)},
 20530  	{FcFrom: uint16(0x040E), FcTo0: uint8(0x55)},
 20531  	{FcFrom: uint16(0x040F), FcTo0: uint8(0x44)},
 20532  	{FcFrom: uint16(0x0410), FcTo0: uint8(0x41)},
 20533  	{FcFrom: uint16(0x0411), FcTo0: uint8(0x42)},
 20534  	{FcFrom: uint16(0x0412), FcTo0: uint8(0x56)},
 20535  	{FcFrom: uint16(0x0413), FcTo0: uint8(0x47)},
 20536  	{FcFrom: uint16(0x0414), FcTo0: uint8(0x44)},
 20537  	{FcFrom: uint16(0x0415), FcTo0: uint8(0x45)},
 20538  	{FcFrom: uint16(0x0416), FcTo0: uint8(0x5a), FcTo1: uint8(0x68)},
 20539  	{FcFrom: uint16(0x0417), FcTo0: uint8(0x5a)},
 20540  	{FcFrom: uint16(0x0418), FcTo0: uint8(0x49)},
 20541  	{FcFrom: uint16(0x0419), FcTo0: uint8(0x49)},
 20542  	{FcFrom: uint16(0x041A), FcTo0: uint8(0x4b)},
 20543  	{FcFrom: uint16(0x041B), FcTo0: uint8(0x4c)},
 20544  	{FcFrom: uint16(0x041C), FcTo0: uint8(0x4d)},
 20545  	{FcFrom: uint16(0x041D), FcTo0: uint8(0x4e)},
 20546  	{FcFrom: uint16(0x041E), FcTo0: uint8(0x4f)},
 20547  	{FcFrom: uint16(0x041F), FcTo0: uint8(0x50)},
 20548  	{FcFrom: uint16(0x0420), FcTo0: uint8(0x52)},
 20549  	{FcFrom: uint16(0x0421), FcTo0: uint8(0x53)},
 20550  	{FcFrom: uint16(0x0422), FcTo0: uint8(0x54)},
 20551  	{FcFrom: uint16(0x0423), FcTo0: uint8(0x55)},
 20552  	{FcFrom: uint16(0x0424), FcTo0: uint8(0x46)},
 20553  	{FcFrom: uint16(0x0425), FcTo0: uint8(0x4b), FcTo1: uint8(0x68)},
 20554  	{FcFrom: uint16(0x0426), FcTo0: uint8(0x54), FcTo1: uint8(0x63)},
 20555  	{FcFrom: uint16(0x0427), FcTo0: uint8(0x43), FcTo1: uint8(0x68)},
 20556  	{FcFrom: uint16(0x0428), FcTo0: uint8(0x53), FcTo1: uint8(0x68)},
 20557  	{FcFrom: uint16(0x0429), FcTo0: uint8(0x53), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 20558  	{FcFrom: uint16(0x042A), FcTo0: uint8(0x61)},
 20559  	{FcFrom: uint16(0x042B), FcTo0: uint8(0x59)},
 20560  	{FcFrom: uint16(0x042C), FcTo0: uint8(0x59)},
 20561  	{FcFrom: uint16(0x042D), FcTo0: uint8(0x45)},
 20562  	{FcFrom: uint16(0x042E), FcTo0: uint8(0x49), FcTo1: uint8(0x75)},
 20563  	{FcFrom: uint16(0x042F), FcTo0: uint8(0x49), FcTo1: uint8(0x61)},
 20564  	{FcFrom: uint16(0x0430), FcTo0: uint8(0x61)},
 20565  	{FcFrom: uint16(0x0431), FcTo0: uint8(0x62)},
 20566  	{FcFrom: uint16(0x0432), FcTo0: uint8(0x76)},
 20567  	{FcFrom: uint16(0x0433), FcTo0: uint8(0x67)},
 20568  	{FcFrom: uint16(0x0434), FcTo0: uint8(0x64)},
 20569  	{FcFrom: uint16(0x0435), FcTo0: uint8(0x65)},
 20570  	{FcFrom: uint16(0x0436), FcTo0: uint8(0x7a), FcTo1: uint8(0x68)},
 20571  	{FcFrom: uint16(0x0437), FcTo0: uint8(0x7a)},
 20572  	{FcFrom: uint16(0x0438), FcTo0: uint8(0x69)},
 20573  	{FcFrom: uint16(0x0439), FcTo0: uint8(0x69)},
 20574  	{FcFrom: uint16(0x043A), FcTo0: uint8(0x6b)},
 20575  	{FcFrom: uint16(0x043B), FcTo0: uint8(0x6c)},
 20576  	{FcFrom: uint16(0x043C), FcTo0: uint8(0x6d)},
 20577  	{FcFrom: uint16(0x043D), FcTo0: uint8(0x6e)},
 20578  	{FcFrom: uint16(0x043E), FcTo0: uint8(0x6f)},
 20579  	{FcFrom: uint16(0x043F), FcTo0: uint8(0x70)},
 20580  	{FcFrom: uint16(0x0440), FcTo0: uint8(0x72)},
 20581  	{FcFrom: uint16(0x0441), FcTo0: uint8(0x73)},
 20582  	{FcFrom: uint16(0x0442), FcTo0: uint8(0x74)},
 20583  	{FcFrom: uint16(0x0443), FcTo0: uint8(0x75)},
 20584  	{FcFrom: uint16(0x0444), FcTo0: uint8(0x66)},
 20585  	{FcFrom: uint16(0x0445), FcTo0: uint8(0x6b), FcTo1: uint8(0x68)},
 20586  	{FcFrom: uint16(0x0446), FcTo0: uint8(0x74), FcTo1: uint8(0x63)},
 20587  	{FcFrom: uint16(0x0447), FcTo0: uint8(0x63), FcTo1: uint8(0x68)},
 20588  	{FcFrom: uint16(0x0448), FcTo0: uint8(0x73), FcTo1: uint8(0x68)},
 20589  	{FcFrom: uint16(0x0449), FcTo0: uint8(0x73), FcTo1: uint8(0x68), FcTo2: uint8(0x63), FcTo3: uint8(0x68)},
 20590  	{FcFrom: uint16(0x044A), FcTo0: uint8(0x61)},
 20591  	{FcFrom: uint16(0x044B), FcTo0: uint8(0x79)},
 20592  	{FcFrom: uint16(0x044C), FcTo0: uint8(0x79)},
 20593  	{FcFrom: uint16(0x044D), FcTo0: uint8(0x65)},
 20594  	{FcFrom: uint16(0x044E), FcTo0: uint8(0x69), FcTo1: uint8(0x75)},
 20595  	{FcFrom: uint16(0x044F), FcTo0: uint8(0x69), FcTo1: uint8(0x61)},
 20596  	{FcFrom: uint16(0x0450), FcTo0: uint8(0x65)},
 20597  	{FcFrom: uint16(0x0451), FcTo0: uint8(0x65)},
 20598  	{FcFrom: uint16(0x0452), FcTo0: uint8(0x64)},
 20599  	{FcFrom: uint16(0x0453), FcTo0: uint8(0x67)},
 20600  	{FcFrom: uint16(0x0454), FcTo0: uint8(0x65)},
 20601  	{FcFrom: uint16(0x0455), FcTo0: uint8(0x7a)},
 20602  	{FcFrom: uint16(0x0456), FcTo0: uint8(0x69)},
 20603  	{FcFrom: uint16(0x0457), FcTo0: uint8(0x69)},
 20604  	{FcFrom: uint16(0x0458), FcTo0: uint8(0x6a)},
 20605  	{FcFrom: uint16(0x0459), FcTo0: uint8(0x69)},
 20606  	{FcFrom: uint16(0x045A), FcTo0: uint8(0x6e)},
 20607  	{FcFrom: uint16(0x045B), FcTo0: uint8(0x64)},
 20608  	{FcFrom: uint16(0x045C), FcTo0: uint8(0x6b)},
 20609  	{FcFrom: uint16(0x045D), FcTo0: uint8(0x69)},
 20610  	{FcFrom: uint16(0x045E), FcTo0: uint8(0x75)},
 20611  	{FcFrom: uint16(0x045F), FcTo0: uint8(0x64)},
 20612  	{FcFrom: uint16(0x1E02), FcTo0: uint8(0x42)},
 20613  	{FcFrom: uint16(0x1E03), FcTo0: uint8(0x62)},
 20614  	{FcFrom: uint16(0x1E0A), FcTo0: uint8(0x44)},
 20615  	{FcFrom: uint16(0x1E0B), FcTo0: uint8(0x64)},
 20616  	{FcFrom: uint16(0x1E1E), FcTo0: uint8(0x46)},
 20617  	{FcFrom: uint16(0x1E1F), FcTo0: uint8(0x66)},
 20618  	{FcFrom: uint16(0x1E40), FcTo0: uint8(0x4D)},
 20619  	{FcFrom: uint16(0x1E41), FcTo0: uint8(0x6D)},
 20620  	{FcFrom: uint16(0x1E56), FcTo0: uint8(0x50)},
 20621  	{FcFrom: uint16(0x1E57), FcTo0: uint8(0x70)},
 20622  	{FcFrom: uint16(0x1E60), FcTo0: uint8(0x53)},
 20623  	{FcFrom: uint16(0x1E61), FcTo0: uint8(0x73)},
 20624  	{FcFrom: uint16(0x1E6A), FcTo0: uint8(0x54)},
 20625  	{FcFrom: uint16(0x1E6B), FcTo0: uint8(0x74)},
 20626  	{FcFrom: uint16(0x1E80), FcTo0: uint8(0x57)},
 20627  	{FcFrom: uint16(0x1E81), FcTo0: uint8(0x77)},
 20628  	{FcFrom: uint16(0x1E82), FcTo0: uint8(0x57)},
 20629  	{FcFrom: uint16(0x1E83), FcTo0: uint8(0x77)},
 20630  	{FcFrom: uint16(0x1E84), FcTo0: uint8(0x57)},
 20631  	{FcFrom: uint16(0x1E85), FcTo0: uint8(0x77)},
 20632  	{FcFrom: uint16(0x1EF2), FcTo0: uint8(0x59)},
 20633  	{FcFrom: uint16(0x1EF3), FcTo0: uint8(0x79)},
 20634  	{FcFrom: uint16(0xFB00), FcTo0: uint8(0x66), FcTo1: uint8(0x66)},
 20635  	{FcFrom: uint16(0xFB01), FcTo0: uint8(0x66), FcTo1: uint8(0x69)},
 20636  	{FcFrom: uint16(0xFB02), FcTo0: uint8(0x66), FcTo1: uint8(0x6C)},
 20637  	{FcFrom: uint16(0xFB05), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 20638  	{FcFrom: uint16(0xFB06), FcTo0: uint8(0x73), FcTo1: uint8(0x74)},
 20639  }
 20640  
 20641  func spellfixFindTranslit(tls *libc.TLS, c int32, pxTop uintptr) uintptr {
 20642  	*(*int32)(unsafe.Pointer(pxTop)) = int32(uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{})) - uint64(1))
 20643  	return uintptr(unsafe.Pointer(&translit))
 20644  }
 20645  
 20646  func transliterate(tls *libc.TLS, zIn uintptr, nIn int32) uintptr {
 20647  	bp := tls.Alloc(8)
 20648  	defer tls.Free(8)
 20649  
 20650  	var zOut uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(nIn*4+1))
 20651  	var c int32
 20652  
 20653  	var nOut int32
 20654  	if zOut == uintptr(0) {
 20655  		return uintptr(0)
 20656  	}
 20657  	nOut = 0
 20658  	for nIn > 0 {
 20659  		c = utf8Read(tls, zIn, nIn, bp)
 20660  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 20661  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 20662  		if c <= 127 {
 20663  			*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8(c)
 20664  		} else {
 20665  			var xBtm int32
 20666  			var x int32
 20667  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 20668  			xBtm = 0
 20669  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 20670  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 20671  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 20672  					*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo0
 20673  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 20674  						*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo1
 20675  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 20676  							*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo2
 20677  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 20678  								*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = (*Transliteration)(unsafe.Pointer(tbl + uintptr(x)*6)).FcTo3
 20679  							}
 20680  						}
 20681  					}
 20682  					c = 0
 20683  					break
 20684  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 20685  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 20686  				} else {
 20687  					xBtm = x + 1
 20688  				}
 20689  			}
 20690  			if c != 0 {
 20691  				*(*uint8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&nOut, 1)))) = uint8('?')
 20692  			}
 20693  		}
 20694  	}
 20695  	*(*uint8)(unsafe.Pointer(zOut + uintptr(nOut))) = uint8(0)
 20696  	return zOut
 20697  }
 20698  
 20699  func translen_to_charlen(tls *libc.TLS, zIn uintptr, nIn int32, nTrans int32) int32 {
 20700  	bp := tls.Alloc(8)
 20701  	defer tls.Free(8)
 20702  
 20703  	var i int32
 20704  	var c int32
 20705  
 20706  	var nOut int32
 20707  	var nChar int32
 20708  
 20709  	i = libc.AssignInt32(&nOut, 0)
 20710  	for nChar = 0; i < nIn && nOut < nTrans; nChar++ {
 20711  		c = utf8Read(tls, zIn+uintptr(i), nIn-i, bp)
 20712  		i = i + *(*int32)(unsafe.Pointer(bp))
 20713  
 20714  		nOut++
 20715  		if c >= 128 {
 20716  			var xBtm int32
 20717  			var x int32
 20718  			var tbl uintptr = spellfixFindTranslit(tls, c, bp+4)
 20719  			xBtm = 0
 20720  			for *(*int32)(unsafe.Pointer(bp + 4)) >= xBtm {
 20721  				x = (*(*int32)(unsafe.Pointer(bp + 4)) + xBtm) / 2
 20722  				if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) == c {
 20723  					if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo1 != 0 {
 20724  						nOut++
 20725  						if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo2 != 0 {
 20726  							nOut++
 20727  							if (*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcTo3 != 0 {
 20728  								nOut++
 20729  							}
 20730  						}
 20731  					}
 20732  					break
 20733  				} else if int32((*Transliteration)(unsafe.Pointer(tbl+uintptr(x)*6)).FcFrom) > c {
 20734  					*(*int32)(unsafe.Pointer(bp + 4)) = x - 1
 20735  				} else {
 20736  					xBtm = x + 1
 20737  				}
 20738  			}
 20739  		}
 20740  	}
 20741  
 20742  	return nChar
 20743  }
 20744  
 20745  func transliterateSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20746  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20747  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20748  	var zOut uintptr = transliterate(tls, zIn, nIn)
 20749  	if zOut == uintptr(0) {
 20750  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 20751  	} else {
 20752  		sqlite3.Xsqlite3_result_text(tls, context, zOut, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 20753  	}
 20754  }
 20755  
 20756  func scriptCodeSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 20757  	bp := tls.Alloc(4)
 20758  	defer tls.Free(4)
 20759  
 20760  	var zIn uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20761  	var nIn int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 20762  	var c int32
 20763  
 20764  	var scriptMask int32 = 0
 20765  	var res int32
 20766  	var seenDigit int32 = 0
 20767  
 20768  	for nIn > 0 {
 20769  		c = utf8Read(tls, zIn, nIn, bp)
 20770  		zIn += uintptr(*(*int32)(unsafe.Pointer(bp)))
 20771  		nIn = nIn - *(*int32)(unsafe.Pointer(bp))
 20772  		if c < 0x02af {
 20773  			if c >= 0x80 || int32(midClass[c&0x7f]) < CCLASS_DIGIT {
 20774  				scriptMask = scriptMask | SCRIPT_LATIN
 20775  			} else if c >= '0' && c <= '9' {
 20776  				seenDigit = 1
 20777  			}
 20778  		} else if c >= 0x0400 && c <= 0x04ff {
 20779  			scriptMask = scriptMask | SCRIPT_CYRILLIC
 20780  		} else if c >= 0x0386 && c <= 0x03ce {
 20781  			scriptMask = scriptMask | SCRIPT_GREEK
 20782  		} else if c >= 0x0590 && c <= 0x05ff {
 20783  			scriptMask = scriptMask | SCRIPT_HEBREW
 20784  		} else if c >= 0x0600 && c <= 0x06ff {
 20785  			scriptMask = scriptMask | SCRIPT_ARABIC
 20786  		}
 20787  	}
 20788  	if scriptMask == 0 && seenDigit != 0 {
 20789  		scriptMask = SCRIPT_LATIN
 20790  	}
 20791  	switch scriptMask {
 20792  	case 0:
 20793  		res = 999
 20794  		break
 20795  	case SCRIPT_LATIN:
 20796  		res = 215
 20797  		break
 20798  	case SCRIPT_CYRILLIC:
 20799  		res = 220
 20800  		break
 20801  	case SCRIPT_GREEK:
 20802  		res = 200
 20803  		break
 20804  	case SCRIPT_HEBREW:
 20805  		res = 125
 20806  		break
 20807  	case SCRIPT_ARABIC:
 20808  		res = 160
 20809  		break
 20810  	default:
 20811  		res = 998
 20812  		break
 20813  	}
 20814  	sqlite3.Xsqlite3_result_int(tls, context, res)
 20815  }
 20816  
 20817  type spellfix1_vtab1 = struct {
 20818  	Fbase       sqlite3_vtab
 20819  	Fdb         uintptr
 20820  	FzDbName    uintptr
 20821  	FzTableName uintptr
 20822  	FzCostTable uintptr
 20823  	FpConfig3   uintptr
 20824  }
 20825  
 20826  type spellfix1_vtab = spellfix1_vtab1
 20827  type spellfix1_cursor1 = struct {
 20828  	Fbase      sqlite3_vtab_cursor
 20829  	FpVTab     uintptr
 20830  	FzPattern  uintptr
 20831  	FidxNum    int32
 20832  	FnRow      int32
 20833  	FnAlloc    int32
 20834  	FiRow      int32
 20835  	FiLang     int32
 20836  	FiTop      int32
 20837  	FiScope    int32
 20838  	FnSearch   int32
 20839  	FpFullScan uintptr
 20840  	Fa         uintptr
 20841  }
 20842  
 20843  type spellfix1_cursor = spellfix1_cursor1
 20844  
 20845  type spellfix1_row = struct {
 20846  	FiRowid    sqlite3_int64
 20847  	FzWord     uintptr
 20848  	FiRank     int32
 20849  	FiDistance int32
 20850  	FiScore    int32
 20851  	FiMatchlen int32
 20852  	FzHash     [32]int8
 20853  }
 20854  
 20855  func spellfix1DbExec(tls *libc.TLS, pRc uintptr, db uintptr, zFormat uintptr, va uintptr) {
 20856  	var ap va_list
 20857  	_ = ap
 20858  	var zSql uintptr
 20859  	if *(*int32)(unsafe.Pointer(pRc)) != 0 {
 20860  		return
 20861  	}
 20862  	ap = va
 20863  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFormat, ap)
 20864  	_ = ap
 20865  	if zSql == uintptr(0) {
 20866  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 20867  	} else {
 20868  		*(*int32)(unsafe.Pointer(pRc)) = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 20869  		sqlite3.Xsqlite3_free(tls, zSql)
 20870  	}
 20871  }
 20872  
 20873  func spellfix1Uninit(tls *libc.TLS, isDestroy int32, pVTab uintptr) int32 {
 20874  	bp := tls.Alloc(20)
 20875  	defer tls.Free(20)
 20876  
 20877  	var p uintptr = pVTab
 20878  	*(*int32)(unsafe.Pointer(bp + 16)) = SQLITE_OK
 20879  	if isDestroy != 0 {
 20880  		var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 20881  		spellfix1DbExec(tls, bp+16, db, ts+7189,
 20882  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 20883  	}
 20884  	if *(*int32)(unsafe.Pointer(bp + 16)) == SQLITE_OK {
 20885  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 20886  		editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 20887  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 20888  		sqlite3.Xsqlite3_free(tls, p)
 20889  	}
 20890  	return *(*int32)(unsafe.Pointer(bp + 16))
 20891  }
 20892  
 20893  func spellfix1Disconnect(tls *libc.TLS, pVTab uintptr) int32 {
 20894  	return spellfix1Uninit(tls, 0, pVTab)
 20895  }
 20896  
 20897  func spellfix1Destroy(tls *libc.TLS, pVTab uintptr) int32 {
 20898  	return spellfix1Uninit(tls, 1, pVTab)
 20899  }
 20900  
 20901  func spellfix1Dequote(tls *libc.TLS, zIn uintptr) uintptr {
 20902  	bp := tls.Alloc(8)
 20903  	defer tls.Free(8)
 20904  
 20905  	var zOut uintptr
 20906  	var i int32
 20907  	var j int32
 20908  	var c int8
 20909  	for libc.Xisspace(tls, int32(uint8(*(*int8)(unsafe.Pointer(zIn))))) != 0 {
 20910  		zIn++
 20911  	}
 20912  	zOut = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zIn))
 20913  	if zOut == uintptr(0) {
 20914  		return uintptr(0)
 20915  	}
 20916  	i = int32(libc.Xstrlen(tls, zOut))
 20917  	*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = int8(0)
 20918  	c = *(*int8)(unsafe.Pointer(zOut))
 20919  	if int32(c) == '\'' || int32(c) == '"' {
 20920  		i = 1
 20921  		j = 0
 20922  		for ; 1 != 0; i++ {
 20923  			*(*int8)(unsafe.Pointer(zOut + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zOut + uintptr(i)))
 20924  			if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i)))) == int32(c) {
 20925  				if int32(*(*int8)(unsafe.Pointer(zOut + uintptr(i+1)))) == int32(c) {
 20926  					i++
 20927  				} else {
 20928  					*(*int8)(unsafe.Pointer(zOut + uintptr(j-1))) = int8(0)
 20929  					break
 20930  				}
 20931  			}
 20932  		}
 20933  	}
 20934  	return zOut
 20935  }
 20936  
 20937  func spellfix1Init(tls *libc.TLS, isCreate int32, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 20938  	bp := tls.Alloc(60)
 20939  	defer tls.Free(60)
 20940  
 20941  	var pNew uintptr = uintptr(0)
 20942  
 20943  	var zDbName uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 20944  	var zTableName uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 20945  	var nDbName int32
 20946  	*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_OK
 20947  	var i int32
 20948  
 20949  	nDbName = int32(libc.Xstrlen(tls, zDbName))
 20950  	pNew = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_vtab{}))+uint64(nDbName)+uint64(1))
 20951  	if pNew == uintptr(0) {
 20952  		*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20953  	} else {
 20954  		libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(spellfix1_vtab{})))
 20955  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName = pNew + 1*64
 20956  		libc.Xmemcpy(tls, (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzDbName, zDbName, uint64(nDbName+1))
 20957  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zTableName))
 20958  		(*spellfix1_vtab)(unsafe.Pointer(pNew)).Fdb = db
 20959  		if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzTableName == uintptr(0) {
 20960  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20961  		} else {
 20962  			sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 20963  			*(*int32)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_declare_vtab(tls, db,
 20964  				ts+7226)
 20965  		}
 20966  		if *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && isCreate != 0 {
 20967  			spellfix1DbExec(tls, bp+56, db,
 20968  				ts+7380,
 20969  				libc.VaList(bp+8, zDbName, zTableName))
 20970  			spellfix1DbExec(tls, bp+56, db,
 20971  				ts+7514,
 20972  				libc.VaList(bp+24, zDbName, zTableName, zTableName))
 20973  		}
 20974  		for i = 3; *(*int32)(unsafe.Pointer(bp + 56)) == SQLITE_OK && i < argc; i++ {
 20975  			if libc.Xstrncmp(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ts+7599, uint64(16)) == 0 && (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 20976  				(*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable = spellfix1Dequote(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))+16)
 20977  				if (*spellfix1_vtab)(unsafe.Pointer(pNew)).FzCostTable == uintptr(0) {
 20978  					*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_NOMEM
 20979  				}
 20980  				continue
 20981  			}
 20982  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+7616, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 20983  			*(*int32)(unsafe.Pointer(bp + 56)) = SQLITE_ERROR
 20984  		}
 20985  	}
 20986  
 20987  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 && pNew != 0 {
 20988  		*(*uintptr)(unsafe.Pointer(ppVTab)) = uintptr(0)
 20989  		spellfix1Uninit(tls, 0, pNew)
 20990  	} else {
 20991  		*(*uintptr)(unsafe.Pointer(ppVTab)) = pNew
 20992  	}
 20993  	return *(*int32)(unsafe.Pointer(bp + 56))
 20994  }
 20995  
 20996  func spellfix1Connect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 20997  	return spellfix1Init(tls, 0, db, pAux, argc, argv, ppVTab, pzErr)
 20998  }
 20999  
 21000  func spellfix1Create(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVTab uintptr, pzErr uintptr) int32 {
 21001  	return spellfix1Init(tls, 1, db, pAux, argc, argv, ppVTab, pzErr)
 21002  }
 21003  
 21004  func spellfix1ResetCursor(tls *libc.TLS, pCur uintptr) {
 21005  	var i int32
 21006  	for i = 0; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21007  		sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(i)*64)).FzWord)
 21008  	}
 21009  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = 0
 21010  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21011  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch = 0
 21012  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21013  		sqlite3.Xsqlite3_finalize(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21014  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan = uintptr(0)
 21015  	}
 21016  }
 21017  
 21018  func spellfix1ResizeCursor(tls *libc.TLS, pCur uintptr, N int32) {
 21019  	var aNew uintptr
 21020  
 21021  	aNew = sqlite3.Xsqlite3_realloc64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64(unsafe.Sizeof(spellfix1_row{}))*uint64(N))
 21022  	if aNew == uintptr(0) && N > 0 {
 21023  		spellfix1ResetCursor(tls, pCur)
 21024  		sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)
 21025  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = 0
 21026  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = uintptr(0)
 21027  	} else {
 21028  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc = N
 21029  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa = aNew
 21030  	}
 21031  }
 21032  
 21033  func spellfix1Close(tls *libc.TLS, cur uintptr) int32 {
 21034  	var pCur uintptr = cur
 21035  	spellfix1ResetCursor(tls, pCur)
 21036  	spellfix1ResizeCursor(tls, pCur, 0)
 21037  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21038  	sqlite3.Xsqlite3_free(tls, pCur)
 21039  	return SQLITE_OK
 21040  }
 21041  
 21042  func spellfix1BestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 21043  	var iPlan int32 = 0
 21044  	var iLangTerm int32 = -1
 21045  	var iTopTerm int32 = -1
 21046  	var iScopeTerm int32 = -1
 21047  	var iDistTerm int32 = -1
 21048  	var iRowidTerm int32 = -1
 21049  	var i int32
 21050  	var pConstraint uintptr
 21051  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 21052  	i = 0
 21053  __1:
 21054  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 21055  		goto __3
 21056  	}
 21057  	{
 21058  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 21059  			goto __2
 21060  		}
 21061  
 21062  		if iPlan&SPELLFIX_IDXNUM_MATCH == 0 &&
 21063  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_WORD &&
 21064  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH {
 21065  			iPlan = iPlan | SPELLFIX_IDXNUM_MATCH
 21066  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).FargvIndex = 1
 21067  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(i)*8)).Fomit = uint8(1)
 21068  		}
 21069  
 21070  		if iPlan&SPELLFIX_IDXNUM_LANGID == 0 &&
 21071  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_LANGID &&
 21072  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21073  			iPlan = iPlan | SPELLFIX_IDXNUM_LANGID
 21074  			iLangTerm = i
 21075  		}
 21076  
 21077  		if iPlan&SPELLFIX_IDXNUM_TOP == 0 &&
 21078  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_TOP &&
 21079  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21080  			iPlan = iPlan | SPELLFIX_IDXNUM_TOP
 21081  			iTopTerm = i
 21082  		}
 21083  
 21084  		if iPlan&SPELLFIX_IDXNUM_SCOPE == 0 &&
 21085  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_SCOPE &&
 21086  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21087  			iPlan = iPlan | SPELLFIX_IDXNUM_SCOPE
 21088  			iScopeTerm = i
 21089  		}
 21090  
 21091  		if iPlan&(0x10|0x20) == 0 &&
 21092  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn == SPELLFIX_COL_DISTANCE &&
 21093  			(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT ||
 21094  				int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE) {
 21095  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 21096  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLT
 21097  			} else {
 21098  				iPlan = iPlan | SPELLFIX_IDXNUM_DISTLE
 21099  			}
 21100  			iDistTerm = i
 21101  		}
 21102  
 21103  		if iPlan&SPELLFIX_IDXNUM_ROWID == 0 &&
 21104  			(*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn < 0 &&
 21105  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 21106  			iPlan = iPlan | SPELLFIX_IDXNUM_ROWID
 21107  			iRowidTerm = i
 21108  		}
 21109  
 21110  	}
 21111  	goto __2
 21112  __2:
 21113  	i++
 21114  	pConstraint += 12
 21115  	goto __1
 21116  	goto __3
 21117  __3:
 21118  	;
 21119  	if iPlan&SPELLFIX_IDXNUM_MATCH != 0 {
 21120  		var idx int32 = 2
 21121  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = iPlan
 21122  		if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 21123  			(*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn == SPELLFIX_COL_SCORE &&
 21124  			int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 21125  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 21126  		}
 21127  		if iPlan&SPELLFIX_IDXNUM_LANGID != 0 {
 21128  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21129  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLangTerm)*8)).Fomit = uint8(1)
 21130  		}
 21131  		if iPlan&SPELLFIX_IDXNUM_TOP != 0 {
 21132  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21133  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iTopTerm)*8)).Fomit = uint8(1)
 21134  		}
 21135  		if iPlan&SPELLFIX_IDXNUM_SCOPE != 0 {
 21136  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21137  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iScopeTerm)*8)).Fomit = uint8(1)
 21138  		}
 21139  		if iPlan&(0x10|0x20) != 0 {
 21140  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).FargvIndex = libc.PostIncInt32(&idx, 1)
 21141  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iDistTerm)*8)).Fomit = uint8(1)
 21142  		}
 21143  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e5
 21144  	} else if iPlan&SPELLFIX_IDXNUM_ROWID != 0 {
 21145  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SPELLFIX_IDXNUM_ROWID
 21146  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).FargvIndex = 1
 21147  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iRowidTerm)*8)).Fomit = uint8(1)
 21148  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 21149  	} else {
 21150  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 0
 21151  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e50
 21152  	}
 21153  	return SQLITE_OK
 21154  }
 21155  
 21156  func spellfix1Open(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 21157  	var p uintptr = pVTab
 21158  	var pCur uintptr
 21159  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21160  	if pCur == uintptr(0) {
 21161  		return SQLITE_NOMEM
 21162  	}
 21163  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(spellfix1_cursor{})))
 21164  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab = p
 21165  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 21166  	return SQLITE_OK
 21167  }
 21168  
 21169  func spellfix1Score(tls *libc.TLS, iDistance int32, iRank int32) int32 {
 21170  	var iLog2 int32
 21171  	iLog2 = 0
 21172  __1:
 21173  	if !(iRank > 0) {
 21174  		goto __3
 21175  	}
 21176  	{
 21177  	}
 21178  	goto __2
 21179  __2:
 21180  	iLog2++
 21181  	iRank >>= 1
 21182  	goto __1
 21183  	goto __3
 21184  __3:
 21185  	;
 21186  	return iDistance + 32 - iLog2
 21187  }
 21188  
 21189  func spellfix1RowCompare(tls *libc.TLS, A uintptr, B uintptr) int32 {
 21190  	var a uintptr = A
 21191  	var b uintptr = B
 21192  	return (*spellfix1_row)(unsafe.Pointer(a)).FiScore - (*spellfix1_row)(unsafe.Pointer(b)).FiScore
 21193  }
 21194  
 21195  type MatchQuery1 = struct {
 21196  	FpCur        uintptr
 21197  	FpStmt       uintptr
 21198  	FzHash       [32]int8
 21199  	FzPattern    uintptr
 21200  	FnPattern    int32
 21201  	F__ccgo_pad1 [4]byte
 21202  	FpMatchStr3  uintptr
 21203  	FpConfig3    uintptr
 21204  	FpLang       uintptr
 21205  	FiLang       int32
 21206  	FiScope      int32
 21207  	FiMaxDist    int32
 21208  	Frc          int32
 21209  	FnRun        int32
 21210  	FazPrior     [1][32]int8
 21211  	F__ccgo_pad2 [4]byte
 21212  }
 21213  
 21214  type MatchQuery = MatchQuery1
 21215  
 21216  func spellfix1RunQuery(tls *libc.TLS, p uintptr, zQuery uintptr, nQuery int32) {
 21217  	bp := tls.Alloc(76)
 21218  	defer tls.Free(76)
 21219  
 21220  	var zK1 uintptr
 21221  	var zWord uintptr
 21222  	var iDist int32
 21223  	var iRank int32
 21224  	var iScore int32
 21225  	var iWorst int32 = 0
 21226  	var idx int32
 21227  	var idxWorst int32 = -1
 21228  	var i int32
 21229  	var iScope int32 = (*MatchQuery)(unsafe.Pointer(p)).FiScope
 21230  	var pCur uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpCur
 21231  	var pStmt uintptr = (*MatchQuery)(unsafe.Pointer(p)).FpStmt
 21232  
 21233  	var zClass uintptr
 21234  	var nClass int32
 21235  	var rc int32
 21236  
 21237  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) || (*MatchQuery)(unsafe.Pointer(p)).Frc != 0 {
 21238  		return
 21239  	}
 21240  	zClass = phoneticHash(tls, zQuery, nQuery)
 21241  	if zClass == uintptr(0) {
 21242  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21243  		return
 21244  	}
 21245  	nClass = int32(libc.Xstrlen(tls, zClass))
 21246  	if nClass > SPELLFIX_MX_HASH-2 {
 21247  		nClass = SPELLFIX_MX_HASH - 2
 21248  		*(*int8)(unsafe.Pointer(zClass + uintptr(nClass))) = int8(0)
 21249  	}
 21250  	if nClass <= iScope {
 21251  		if nClass > 2 {
 21252  			iScope = nClass - 1
 21253  		} else {
 21254  			iScope = nClass
 21255  		}
 21256  	}
 21257  	libc.Xmemcpy(tls, bp+8, zClass, uint64(iScope))
 21258  	sqlite3.Xsqlite3_free(tls, zClass)
 21259  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(iScope))) = int8(0)
 21260  	libc.Xmemcpy(tls, bp+40, bp+8, uint64(iScope))
 21261  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope))) = int8('Z')
 21262  	*(*int8)(unsafe.Pointer(bp + 40 + uintptr(iScope+1))) = int8(0)
 21263  
 21264  	libc.Xmemcpy(tls, p+108+uintptr(libc.PostIncInt32(&(*MatchQuery)(unsafe.Pointer(p)).FnRun, 1))*32, bp+8, uint64(iScope+1))
 21265  	if sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, bp+8, -1, uintptr(0)) == SQLITE_NOMEM ||
 21266  		sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, bp+40, -1, uintptr(0)) == SQLITE_NOMEM {
 21267  		(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21268  		return
 21269  	}
 21270  	for sqlite3.Xsqlite3_step(tls, pStmt) == SQLITE_ROW {
 21271  		*(*int32)(unsafe.Pointer(bp + 72)) = -1
 21272  		iRank = sqlite3.Xsqlite3_column_int(tls, pStmt, 2)
 21273  		if (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3 != 0 {
 21274  			var nWord int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, 1)
 21275  			zWord = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 21276  			iDist = editDist3Core(tls, (*MatchQuery)(unsafe.Pointer(p)).FpMatchStr3, zWord, nWord, (*MatchQuery)(unsafe.Pointer(p)).FpLang, bp+72)
 21277  		} else {
 21278  			zK1 = sqlite3.Xsqlite3_column_text(tls, pStmt, 3)
 21279  			if zK1 == uintptr(0) {
 21280  				continue
 21281  			}
 21282  			iDist = editdist1(tls, (*MatchQuery)(unsafe.Pointer(p)).FzPattern, zK1, uintptr(0))
 21283  		}
 21284  		if iDist < 0 {
 21285  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21286  			break
 21287  		}
 21288  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch++
 21289  
 21290  		if (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist >= 0 {
 21291  			if iDist > (*MatchQuery)(unsafe.Pointer(p)).FiMaxDist {
 21292  				continue
 21293  			}
 21294  			if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc && (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum&SPELLFIX_IDXNUM_TOP == 0 {
 21295  				spellfix1ResizeCursor(tls, pCur, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc*2+10)
 21296  				if (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa == uintptr(0) {
 21297  					break
 21298  				}
 21299  			}
 21300  		}
 21301  
 21302  		iScore = spellfix1Score(tls, iDist, iRank)
 21303  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21304  			idx = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21305  		} else if iScore < iWorst {
 21306  			idx = idxWorst
 21307  			sqlite3.Xsqlite3_free(tls, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord)
 21308  		} else {
 21309  			continue
 21310  		}
 21311  
 21312  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FzWord = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pStmt, 1)))
 21313  		if (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64)).FzWord == uintptr(0) {
 21314  			(*MatchQuery)(unsafe.Pointer(p)).Frc = SQLITE_NOMEM
 21315  			break
 21316  		}
 21317  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRowid = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 21318  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiRank = iRank
 21319  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiDistance = iDist
 21320  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiScore = iScore
 21321  		(*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(idx)*64)).FiMatchlen = *(*int32)(unsafe.Pointer(bp + 72))
 21322  		libc.Xmemcpy(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr(idx)*64+32, bp+8, uint64(iScope+1))
 21323  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21324  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow++
 21325  		}
 21326  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow == (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnAlloc {
 21327  			iWorst = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa)).FiScore
 21328  			idxWorst = 0
 21329  			for i = 1; i < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow; i++ {
 21330  				iScore = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr(i)*64)).FiScore
 21331  				if iWorst < iScore {
 21332  					iWorst = iScore
 21333  					idxWorst = i
 21334  				}
 21335  			}
 21336  		}
 21337  	}
 21338  	rc = sqlite3.Xsqlite3_reset(tls, pStmt)
 21339  	if rc != 0 {
 21340  		(*MatchQuery)(unsafe.Pointer(p)).Frc = rc
 21341  	}
 21342  }
 21343  
 21344  func spellfix1FilterForMatch(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21345  	bp := tls.Alloc(176)
 21346  	defer tls.Free(176)
 21347  
 21348  	var idxNum int32
 21349  	var zMatchThis uintptr
 21350  	var pMatchStr3 uintptr
 21351  	var zPattern uintptr
 21352  	var nPattern int32
 21353  	var iLimit int32
 21354  	var iScope int32
 21355  	var iLang int32
 21356  	var zSql uintptr
 21357  
 21358  	var rc int32
 21359  	var idx int32
 21360  	var p uintptr
 21361  
 21362  	idxNum = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21363  	pMatchStr3 = uintptr(0)
 21364  	iLimit = 20
 21365  	iScope = 3
 21366  	iLang = 0
 21367  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21368  	idx = 1
 21369  	p = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21370  
 21371  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable != uintptr(0) && (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21372  		goto __1
 21373  	}
 21374  	(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(EditDist3Config{})))
 21375  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 == uintptr(0)) {
 21376  		goto __2
 21377  	}
 21378  	return SQLITE_NOMEM
 21379  __2:
 21380  	;
 21381  	libc.Xmemset(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, 0, uint64(unsafe.Sizeof(EditDist3Config{})))
 21382  	rc = editDist3ConfigLoad(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21383  	if !(rc != 0) {
 21384  		goto __3
 21385  	}
 21386  	return rc
 21387  __3:
 21388  	;
 21389  __1:
 21390  	;
 21391  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(MatchQuery{})))
 21392  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 3
 21393  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = -1
 21394  
 21395  	if !(idxNum&2 != 0) {
 21396  		goto __4
 21397  	}
 21398  	iLang = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21399  __4:
 21400  	;
 21401  	if !(idxNum&4 != 0) {
 21402  		goto __5
 21403  	}
 21404  	iLimit = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21405  	if !(iLimit < 1) {
 21406  		goto __6
 21407  	}
 21408  	iLimit = 1
 21409  __6:
 21410  	;
 21411  __5:
 21412  	;
 21413  	if !(idxNum&8 != 0) {
 21414  		goto __7
 21415  	}
 21416  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21417  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope < 1) {
 21418  		goto __8
 21419  	}
 21420  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = 1
 21421  __8:
 21422  	;
 21423  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiScope > SPELLFIX_MX_HASH-2) {
 21424  		goto __9
 21425  	}
 21426  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiScope = SPELLFIX_MX_HASH - 2
 21427  __9:
 21428  	;
 21429  __7:
 21430  	;
 21431  	if !(idxNum&(16|32) != 0) {
 21432  		goto __10
 21433  	}
 21434  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(libc.PostIncInt32(&idx, 1))*8)))
 21435  	if !(idxNum&16 != 0) {
 21436  		goto __11
 21437  	}
 21438  	(*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist--
 21439  __11:
 21440  	;
 21441  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).FiMaxDist < 0) {
 21442  		goto __12
 21443  	}
 21444  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiMaxDist = 0
 21445  __12:
 21446  	;
 21447  __10:
 21448  	;
 21449  	spellfix1ResetCursor(tls, pCur)
 21450  	spellfix1ResizeCursor(tls, pCur, iLimit)
 21451  	zMatchThis = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21452  	if !(zMatchThis == uintptr(0)) {
 21453  		goto __13
 21454  	}
 21455  	return SQLITE_OK
 21456  __13:
 21457  	;
 21458  	if !((*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 != 0) {
 21459  		goto __14
 21460  	}
 21461  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = editDist3FindLang(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3, iLang)
 21462  	pMatchStr3 = editDist3FromStringNew(tls, (*MatchQuery)(unsafe.Pointer(bp+24)).FpLang, zMatchThis, -1)
 21463  	if !(pMatchStr3 == uintptr(0)) {
 21464  		goto __16
 21465  	}
 21466  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21467  	goto filter_exit
 21468  __16:
 21469  	;
 21470  	goto __15
 21471  __14:
 21472  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpLang = uintptr(0)
 21473  __15:
 21474  	;
 21475  	zPattern = transliterate(tls, zMatchThis, sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21476  	sqlite3.Xsqlite3_free(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern)
 21477  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern = zPattern
 21478  	if !(zPattern == uintptr(0)) {
 21479  		goto __17
 21480  	}
 21481  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21482  	goto filter_exit
 21483  __17:
 21484  	;
 21485  	nPattern = int32(libc.Xstrlen(tls, zPattern))
 21486  	if !(int32(*(*int8)(unsafe.Pointer(zPattern + uintptr(nPattern-1)))) == '*') {
 21487  		goto __18
 21488  	}
 21489  	nPattern--
 21490  __18:
 21491  	;
 21492  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21493  		ts+7650,
 21494  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, iLang))
 21495  	if !(zSql == uintptr(0)) {
 21496  		goto __19
 21497  	}
 21498  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21499  	*(*uintptr)(unsafe.Pointer(bp + 168)) = uintptr(0)
 21500  	goto filter_exit
 21501  __19:
 21502  	;
 21503  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb, zSql, -1, bp+168, uintptr(0))
 21504  	sqlite3.Xsqlite3_free(tls, zSql)
 21505  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang = iLang
 21506  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpCur = pCur
 21507  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpStmt = *(*uintptr)(unsafe.Pointer(bp + 168))
 21508  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FzPattern = zPattern
 21509  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FnPattern = nPattern
 21510  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpMatchStr3 = pMatchStr3
 21511  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FiLang = iLang
 21512  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = rc
 21513  	(*MatchQuery)(unsafe.Pointer(bp + 24)).FpConfig3 = (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3
 21514  	if !((*MatchQuery)(unsafe.Pointer(bp+24)).Frc == SQLITE_OK) {
 21515  		goto __20
 21516  	}
 21517  	spellfix1RunQuery(tls, bp+24, zPattern, nPattern)
 21518  __20:
 21519  	;
 21520  	if !((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa != 0) {
 21521  		goto __21
 21522  	}
 21523  	libc.Xqsort(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa, uint64((*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow), uint64(unsafe.Sizeof(spellfix1_row{})), *(*uintptr)(unsafe.Pointer(&struct {
 21524  		f func(*libc.TLS, uintptr, uintptr) int32
 21525  	}{spellfix1RowCompare})))
 21526  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop = iLimit
 21527  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope = iScope
 21528  	goto __22
 21529  __21:
 21530  	(*MatchQuery)(unsafe.Pointer(bp + 24)).Frc = SQLITE_NOMEM
 21531  __22:
 21532  	;
 21533  filter_exit:
 21534  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 168)))
 21535  	editDist3FromStringDelete(tls, pMatchStr3)
 21536  	return (*MatchQuery)(unsafe.Pointer(bp + 24)).Frc
 21537  }
 21538  
 21539  func spellfix1FilterForFullScan(tls *libc.TLS, pCur uintptr, argc int32, argv uintptr) int32 {
 21540  	bp := tls.Alloc(24)
 21541  	defer tls.Free(24)
 21542  
 21543  	var rc int32 = SQLITE_OK
 21544  	var idxNum int32 = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum
 21545  	var zSql uintptr
 21546  	var pVTab uintptr = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpVTab
 21547  	spellfix1ResetCursor(tls, pCur)
 21548  
 21549  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 21550  		ts+7750,
 21551  		libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).FzTableName,
 21552  			func() uintptr {
 21553  				if idxNum&64 != 0 {
 21554  					return ts + 7809
 21555  				}
 21556  				return ts + 584
 21557  			}()))
 21558  	if zSql == uintptr(0) {
 21559  		return SQLITE_NOMEM
 21560  	}
 21561  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*spellfix1_vtab)(unsafe.Pointer(pVTab)).Fdb, zSql, -1, pCur+56, uintptr(0))
 21562  	sqlite3.Xsqlite3_free(tls, zSql)
 21563  	if rc == SQLITE_OK && idxNum&64 != 0 {
 21564  		rc = sqlite3.Xsqlite3_bind_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 1, *(*uintptr)(unsafe.Pointer(argv)))
 21565  	}
 21566  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow = libc.AssignPtrInt32(pCur+36, 0)
 21567  	if rc == SQLITE_OK {
 21568  		rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21569  		if rc == SQLITE_ROW {
 21570  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = -1
 21571  			rc = SQLITE_OK
 21572  		}
 21573  		if rc == SQLITE_DONE {
 21574  			rc = SQLITE_OK
 21575  		}
 21576  	} else {
 21577  		(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = 0
 21578  	}
 21579  	return rc
 21580  }
 21581  
 21582  func spellfix1Filter(tls *libc.TLS, cur uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 21583  	var pCur uintptr = cur
 21584  	var rc int32
 21585  	(*spellfix1_cursor)(unsafe.Pointer(pCur)).FidxNum = idxNum
 21586  	if idxNum&1 != 0 {
 21587  		rc = spellfix1FilterForMatch(tls, pCur, argc, argv)
 21588  	} else {
 21589  		rc = spellfix1FilterForFullScan(tls, pCur, argc, argv)
 21590  	}
 21591  	return rc
 21592  }
 21593  
 21594  func spellfix1Next(tls *libc.TLS, cur uintptr) int32 {
 21595  	var pCur uintptr = cur
 21596  	var rc int32 = SQLITE_OK
 21597  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow < (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow {
 21598  		if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21599  			rc = sqlite3.Xsqlite3_step(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan)
 21600  			if rc != SQLITE_ROW {
 21601  				(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow = (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow
 21602  			}
 21603  			if rc == SQLITE_ROW || rc == SQLITE_DONE {
 21604  				rc = SQLITE_OK
 21605  			}
 21606  		} else {
 21607  			(*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow++
 21608  		}
 21609  	}
 21610  	return rc
 21611  }
 21612  
 21613  func spellfix1Eof(tls *libc.TLS, cur uintptr) int32 {
 21614  	var pCur uintptr = cur
 21615  	return libc.Bool32((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow >= (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnRow)
 21616  }
 21617  
 21618  func spellfix1Column(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 21619  	bp := tls.Alloc(4)
 21620  	defer tls.Free(4)
 21621  
 21622  	var pCur uintptr = cur
 21623  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21624  		if i <= SPELLFIX_COL_LANGID {
 21625  			sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, i))
 21626  		} else {
 21627  			sqlite3.Xsqlite3_result_null(tls, ctx)
 21628  		}
 21629  		return SQLITE_OK
 21630  	}
 21631  	switch i {
 21632  	case SPELLFIX_COL_WORD:
 21633  		{
 21634  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord, -1, uintptr(0))
 21635  			break
 21636  
 21637  		}
 21638  	case SPELLFIX_COL_RANK:
 21639  		{
 21640  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRank)
 21641  			break
 21642  
 21643  		}
 21644  	case SPELLFIX_COL_DISTANCE:
 21645  		{
 21646  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiDistance)
 21647  			break
 21648  
 21649  		}
 21650  	case SPELLFIX_COL_LANGID:
 21651  		{
 21652  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiLang)
 21653  			break
 21654  
 21655  		}
 21656  	case SPELLFIX_COL_SCORE:
 21657  		{
 21658  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiScore)
 21659  			break
 21660  
 21661  		}
 21662  	case SPELLFIX_COL_MATCHLEN:
 21663  		{
 21664  			*(*int32)(unsafe.Pointer(bp)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiMatchlen
 21665  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 21666  				var nPattern int32 = int32(libc.Xstrlen(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern))
 21667  				var zWord uintptr = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FzWord
 21668  				var nWord int32 = int32(libc.Xstrlen(tls, zWord))
 21669  
 21670  				if nPattern > 0 && int32(*(*int8)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern + uintptr(nPattern-1)))) == '*' {
 21671  					var zTranslit uintptr
 21672  					var res int32
 21673  					zTranslit = transliterate(tls, zWord, nWord)
 21674  					if !(zTranslit != 0) {
 21675  						return SQLITE_NOMEM
 21676  					}
 21677  					res = editdist1(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FzPattern, zTranslit, bp)
 21678  					sqlite3.Xsqlite3_free(tls, zTranslit)
 21679  					if res < 0 {
 21680  						return SQLITE_NOMEM
 21681  					}
 21682  					*(*int32)(unsafe.Pointer(bp)) = translen_to_charlen(tls, zWord, nWord, *(*int32)(unsafe.Pointer(bp)))
 21683  				} else {
 21684  					*(*int32)(unsafe.Pointer(bp)) = utf8Charlen(tls, zWord, nWord)
 21685  				}
 21686  			}
 21687  
 21688  			sqlite3.Xsqlite3_result_int(tls, ctx, *(*int32)(unsafe.Pointer(bp)))
 21689  			break
 21690  
 21691  		}
 21692  	case SPELLFIX_COL_PHONEHASH:
 21693  		{
 21694  			sqlite3.Xsqlite3_result_text(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa+uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64+32, -1, uintptr(0))
 21695  			break
 21696  
 21697  		}
 21698  	case SPELLFIX_COL_TOP:
 21699  		{
 21700  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiTop)
 21701  			break
 21702  
 21703  		}
 21704  	case SPELLFIX_COL_SCOPE:
 21705  		{
 21706  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FiScope)
 21707  			break
 21708  
 21709  		}
 21710  	case SPELLFIX_COL_SRCHCNT:
 21711  		{
 21712  			sqlite3.Xsqlite3_result_int(tls, ctx, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FnSearch)
 21713  			break
 21714  
 21715  		}
 21716  	default:
 21717  		{
 21718  			sqlite3.Xsqlite3_result_null(tls, ctx)
 21719  			break
 21720  
 21721  		}
 21722  	}
 21723  	return SQLITE_OK
 21724  }
 21725  
 21726  func spellfix1Rowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 21727  	var pCur uintptr = cur
 21728  	if (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan != 0 {
 21729  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*spellfix1_cursor)(unsafe.Pointer(pCur)).FpFullScan, 4)
 21730  	} else {
 21731  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*spellfix1_row)(unsafe.Pointer((*spellfix1_cursor)(unsafe.Pointer(pCur)).Fa + uintptr((*spellfix1_cursor)(unsafe.Pointer(pCur)).FiRow)*64)).FiRowid
 21732  	}
 21733  	return SQLITE_OK
 21734  }
 21735  
 21736  func spellfix1GetConflict(tls *libc.TLS, db uintptr) uintptr {
 21737  	var eConflict int32 = sqlite3.Xsqlite3_vtab_on_conflict(tls, db)
 21738  
 21739  	return azConflict[eConflict-1]
 21740  }
 21741  
 21742  var azConflict = [5]uintptr{
 21743  	ts + 7824, ts + 7833, ts + 7840, ts + 7840, ts + 7846,
 21744  }
 21745  
 21746  func spellfix1Update(tls *libc.TLS, pVTab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 21747  	bp := tls.Alloc(284)
 21748  	defer tls.Free(284)
 21749  
 21750  	*(*int32)(unsafe.Pointer(bp + 280)) = SQLITE_OK
 21751  	var rowid sqlite3_int64
 21752  	var newRowid sqlite3_int64
 21753  	var p uintptr = pVTab
 21754  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21755  
 21756  	if argc == 1 {
 21757  		rowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 21758  		spellfix1DbExec(tls, bp+280, db,
 21759  			ts+7854,
 21760  			libc.VaList(bp, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, rowid))
 21761  	} else {
 21762  		var zWord uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 21763  		var nWord int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 21764  		var iLang int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 21765  		var iRank int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 21766  		var zSoundslike uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 21767  		var nSoundslike int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + 12*8)))
 21768  		var zK1 uintptr
 21769  		var zK2 uintptr
 21770  		var i int32
 21771  		var c int8
 21772  		var zConflict uintptr = spellfix1GetConflict(tls, db)
 21773  
 21774  		if zWord == uintptr(0) {
 21775  			var zCmd uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 13*8)))
 21776  			if zCmd == uintptr(0) {
 21777  				(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7897,
 21778  					libc.VaList(bp+24, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName))
 21779  				return SQLITE_CONSTRAINT | int32(5)<<8
 21780  			}
 21781  			if libc.Xstrcmp(tls, zCmd, ts+7933) == 0 {
 21782  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21783  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 21784  				return SQLITE_OK
 21785  			}
 21786  			if libc.Xstrncmp(tls, zCmd, ts+7599, uint64(16)) == 0 {
 21787  				editDist3ConfigDelete(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3)
 21788  				(*spellfix1_vtab)(unsafe.Pointer(p)).FpConfig3 = uintptr(0)
 21789  				sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21790  				(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = spellfix1Dequote(tls, zCmd+uintptr(16))
 21791  				if (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable == uintptr(0) {
 21792  					return SQLITE_NOMEM
 21793  				}
 21794  				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 {
 21795  					sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable)
 21796  					(*spellfix1_vtab)(unsafe.Pointer(p)).FzCostTable = uintptr(0)
 21797  				}
 21798  				return SQLITE_OK
 21799  			}
 21800  			(*sqlite3_vtab)(unsafe.Pointer(pVTab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+7944,
 21801  				libc.VaList(bp+32, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zCmd))
 21802  			return SQLITE_ERROR
 21803  		}
 21804  		if iRank < 1 {
 21805  			iRank = 1
 21806  		}
 21807  		if zSoundslike != 0 {
 21808  			zK1 = transliterate(tls, zSoundslike, nSoundslike)
 21809  		} else {
 21810  			zK1 = transliterate(tls, zWord, nWord)
 21811  		}
 21812  		if zK1 == uintptr(0) {
 21813  			return SQLITE_NOMEM
 21814  		}
 21815  		for i = 0; int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zK1 + uintptr(i))))) != 0; i++ {
 21816  			if int32(c) >= 'A' && int32(c) <= 'Z' {
 21817  				*(*int8)(unsafe.Pointer(zK1 + uintptr(i))) += int8('a' - 'A')
 21818  			}
 21819  		}
 21820  		zK2 = phoneticHash(tls, zK1, i)
 21821  		if zK2 == uintptr(0) {
 21822  			sqlite3.Xsqlite3_free(tls, zK1)
 21823  			return SQLITE_NOMEM
 21824  		}
 21825  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 21826  			if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_NULL {
 21827  				spellfix1DbExec(tls, bp+280, db,
 21828  					ts+7979,
 21829  					libc.VaList(bp+48, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 21830  						iRank, iLang, zWord, zK1, zWord, zK2))
 21831  			} else {
 21832  				newRowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 21833  				spellfix1DbExec(tls, bp+280, db,
 21834  					ts+8065,
 21835  					libc.VaList(bp+112, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName,
 21836  						newRowid, iRank, iLang, zWord, zK1, zWord, zK2))
 21837  			}
 21838  			*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 21839  		} else {
 21840  			rowid = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 21841  			newRowid = libc.AssignPtrInt64(pRowid, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 21842  			spellfix1DbExec(tls, bp+280, db,
 21843  				ts+8165,
 21844  				libc.VaList(bp+192, zConflict, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, newRowid, iRank, iLang,
 21845  					zWord, zK1, zWord, zK2, rowid))
 21846  		}
 21847  		sqlite3.Xsqlite3_free(tls, zK1)
 21848  		sqlite3.Xsqlite3_free(tls, zK2)
 21849  	}
 21850  	return *(*int32)(unsafe.Pointer(bp + 280))
 21851  }
 21852  
 21853  func spellfix1Rename(tls *libc.TLS, pVTab uintptr, zNew uintptr) int32 {
 21854  	bp := tls.Alloc(36)
 21855  	defer tls.Free(36)
 21856  
 21857  	var p uintptr = pVTab
 21858  	var db uintptr = (*spellfix1_vtab)(unsafe.Pointer(p)).Fdb
 21859  	*(*int32)(unsafe.Pointer(bp + 32)) = SQLITE_OK
 21860  	var zNewName uintptr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zNew))
 21861  	if zNewName == uintptr(0) {
 21862  		return SQLITE_NOMEM
 21863  	}
 21864  	spellfix1DbExec(tls, bp+32, db,
 21865  		ts+8274,
 21866  		libc.VaList(bp+8, (*spellfix1_vtab)(unsafe.Pointer(p)).FzDbName, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName, zNewName))
 21867  	if *(*int32)(unsafe.Pointer(bp + 32)) == SQLITE_OK {
 21868  		sqlite3.Xsqlite3_free(tls, (*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName)
 21869  		(*spellfix1_vtab)(unsafe.Pointer(p)).FzTableName = zNewName
 21870  	} else {
 21871  		sqlite3.Xsqlite3_free(tls, zNewName)
 21872  	}
 21873  	return *(*int32)(unsafe.Pointer(bp + 32))
 21874  }
 21875  
 21876  var spellfix1Module = sqlite3_module{
 21877  	FxCreate:     0,
 21878  	FxConnect:    0,
 21879  	FxBestIndex:  0,
 21880  	FxDisconnect: 0,
 21881  	FxDestroy:    0,
 21882  	FxOpen:       0,
 21883  	FxClose:      0,
 21884  	FxFilter:     0,
 21885  	FxNext:       0,
 21886  	FxEof:        0,
 21887  	FxColumn:     0,
 21888  	FxRowid:      0,
 21889  	FxUpdate:     0,
 21890  	FxRename:     0,
 21891  }
 21892  
 21893  func spellfix1Register(tls *libc.TLS, db uintptr) int32 {
 21894  	var rc int32 = SQLITE_OK
 21895  	var i int32
 21896  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8323, 1,
 21897  		SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21898  		*(*uintptr)(unsafe.Pointer(&struct {
 21899  			f func(*libc.TLS, uintptr, int32, uintptr)
 21900  		}{transliterateSqlFunc})), uintptr(0), uintptr(0))
 21901  	if rc == SQLITE_OK {
 21902  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8342, 2,
 21903  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21904  			*(*uintptr)(unsafe.Pointer(&struct {
 21905  				f func(*libc.TLS, uintptr, int32, uintptr)
 21906  			}{editdistSqlFunc})), uintptr(0), uintptr(0))
 21907  	}
 21908  	if rc == SQLITE_OK {
 21909  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8361, 1,
 21910  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21911  			*(*uintptr)(unsafe.Pointer(&struct {
 21912  				f func(*libc.TLS, uintptr, int32, uintptr)
 21913  			}{phoneticHashSqlFunc})), uintptr(0), uintptr(0))
 21914  	}
 21915  	if rc == SQLITE_OK {
 21916  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8381, 1,
 21917  			SQLITE_UTF8|SQLITE_DETERMINISTIC, uintptr(0),
 21918  			*(*uintptr)(unsafe.Pointer(&struct {
 21919  				f func(*libc.TLS, uintptr, int32, uintptr)
 21920  			}{scriptCodeSqlFunc})), uintptr(0), uintptr(0))
 21921  	}
 21922  	if rc == SQLITE_OK {
 21923  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8402, uintptr(unsafe.Pointer(&spellfix1Module)), uintptr(0))
 21924  	}
 21925  	if rc == SQLITE_OK {
 21926  		rc = editDist3Install(tls, db)
 21927  	}
 21928  
 21929  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(translit))/uint64(unsafe.Sizeof(Transliteration{}))-uint64(1); i++ {
 21930  	}
 21931  
 21932  	return rc
 21933  }
 21934  
 21935  func sqlite3_spellfix_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 21936  	_ = pApi
 21937  
 21938  	return spellfix1Register(tls, db)
 21939  	return SQLITE_OK
 21940  }
 21941  
 21942  func totypeIsspace(tls *libc.TLS, c uint8) int32 {
 21943  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\t' || int32(c) == '\n' || int32(c) == '\v' || int32(c) == '\f' || int32(c) == '\r')
 21944  }
 21945  
 21946  func totypeIsdigit(tls *libc.TLS, c uint8) int32 {
 21947  	return libc.Bool32(int32(c) >= '0' && int32(c) <= '9')
 21948  }
 21949  
 21950  func totypeCompare2pow63(tls *libc.TLS, zNum uintptr) int32 {
 21951  	var c int32 = 0
 21952  	var i int32
 21953  
 21954  	var pow63 uintptr = ts + 8412
 21955  	for i = 0; c == 0 && i < 18; i++ {
 21956  		c = (int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i)))) - int32(*(*int8)(unsafe.Pointer(pow63 + uintptr(i))))) * 10
 21957  	}
 21958  	if c == 0 {
 21959  		c = int32(*(*int8)(unsafe.Pointer(zNum + 18))) - '8'
 21960  	}
 21961  	return c
 21962  }
 21963  
 21964  func totypeAtoi64(tls *libc.TLS, zNum uintptr, pNum uintptr, length int32) int32 {
 21965  	var u sqlite3_uint64 = uint64(0)
 21966  	var neg int32 = 0
 21967  	var i int32
 21968  	var c int32 = 0
 21969  	var nonNum int32 = 0
 21970  	var zStart uintptr
 21971  	var zEnd uintptr = zNum + uintptr(length)
 21972  
 21973  	for zNum < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(zNum)))) != 0 {
 21974  		zNum++
 21975  	}
 21976  	if zNum < zEnd {
 21977  		if int32(*(*int8)(unsafe.Pointer(zNum))) == '-' {
 21978  			neg = 1
 21979  			zNum++
 21980  		} else if int32(*(*int8)(unsafe.Pointer(zNum))) == '+' {
 21981  			zNum++
 21982  		}
 21983  	}
 21984  	zStart = zNum
 21985  	for zNum < zEnd && int32(*(*int8)(unsafe.Pointer(zNum))) == '0' {
 21986  		zNum++
 21987  	}
 21988  	for i = 0; zNum+uintptr(i) < zEnd && libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(zNum + uintptr(i))))) >= '0' && c <= '9'; i++ {
 21989  		u = u*uint64(10) + sqlite3_uint64(c) - uint64('0')
 21990  	}
 21991  	if u > uint64(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 21992  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 21993  	} else if neg != 0 {
 21994  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = -sqlite3_int64(u)
 21995  	} else {
 21996  		*(*sqlite3_int64)(unsafe.Pointer(pNum)) = sqlite3_int64(u)
 21997  	}
 21998  	if c != 0 && zNum+uintptr(i) < zEnd || i == 0 && zStart == zNum || i > 19 || nonNum != 0 {
 21999  		return 1
 22000  	} else if i < 19 {
 22001  		return 0
 22002  	} else {
 22003  		c = totypeCompare2pow63(tls, zNum)
 22004  		if c < 0 {
 22005  			return 0
 22006  		} else if c > 0 {
 22007  			return 1
 22008  		} else {
 22009  			if neg != 0 {
 22010  				return 0
 22011  			}
 22012  			return 2
 22013  		}
 22014  	}
 22015  	return int32(0)
 22016  }
 22017  
 22018  func totypeAtoF(tls *libc.TLS, z uintptr, pResult uintptr, length int32) int32 {
 22019  	var zEnd uintptr
 22020  
 22021  	var sign int32
 22022  	var s sqlite3_int64
 22023  	var d int32
 22024  	var esign int32
 22025  	var e int32
 22026  	var eValid int32
 22027  	var result float64
 22028  	var nDigits int32
 22029  	var nonNum int32
 22030  	var scale float64
 22031  	zEnd = z + uintptr(length)
 22032  	sign = 1
 22033  	s = int64(0)
 22034  	d = 0
 22035  	esign = 1
 22036  	e = 0
 22037  	eValid = 1
 22038  	nDigits = 0
 22039  	nonNum = 0
 22040  
 22041  	*(*float64)(unsafe.Pointer(pResult)) = 0.0
 22042  
 22043  __1:
 22044  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22045  		goto __2
 22046  	}
 22047  	z++
 22048  	goto __1
 22049  __2:
 22050  	;
 22051  	if !(z >= zEnd) {
 22052  		goto __3
 22053  	}
 22054  	return 0
 22055  __3:
 22056  	;
 22057  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22058  		goto __4
 22059  	}
 22060  	sign = -1
 22061  	z++
 22062  	goto __5
 22063  __4:
 22064  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22065  		goto __6
 22066  	}
 22067  	z++
 22068  __6:
 22069  	;
 22070  __5:
 22071  	;
 22072  __7:
 22073  	if !(z < zEnd && int32(*(*int8)(unsafe.Pointer(z))) == '0') {
 22074  		goto __8
 22075  	}
 22076  	z++
 22077  	nDigits++
 22078  	goto __7
 22079  __8:
 22080  	;
 22081  __9:
 22082  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22083  		goto __10
 22084  	}
 22085  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22086  	z++
 22087  	nDigits++
 22088  	goto __9
 22089  __10:
 22090  	;
 22091  __11:
 22092  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22093  		goto __12
 22094  	}
 22095  	z++
 22096  	nDigits++
 22097  	d++
 22098  	goto __11
 22099  __12:
 22100  	;
 22101  	if !(z >= zEnd) {
 22102  		goto __13
 22103  	}
 22104  	goto totype_atof_calc
 22105  __13:
 22106  	;
 22107  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '.') {
 22108  		goto __14
 22109  	}
 22110  	z++
 22111  
 22112  __15:
 22113  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0 && s < (int64(0xffffffff)|int64(0x7fffffff)<<32-int64(9))/int64(10)) {
 22114  		goto __16
 22115  	}
 22116  	s = s*int64(10) + sqlite3_int64(int32(*(*int8)(unsafe.Pointer(z)))-'0')
 22117  	z++
 22118  	nDigits++
 22119  	d--
 22120  	goto __15
 22121  __16:
 22122  	;
 22123  __17:
 22124  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22125  		goto __18
 22126  	}
 22127  	z++
 22128  	nDigits++
 22129  	goto __17
 22130  __18:
 22131  	;
 22132  __14:
 22133  	;
 22134  	if !(z >= zEnd) {
 22135  		goto __19
 22136  	}
 22137  	goto totype_atof_calc
 22138  __19:
 22139  	;
 22140  	if !(int32(*(*int8)(unsafe.Pointer(z))) == 'e' || int32(*(*int8)(unsafe.Pointer(z))) == 'E') {
 22141  		goto __20
 22142  	}
 22143  	z++
 22144  	eValid = 0
 22145  	if !(z >= zEnd) {
 22146  		goto __21
 22147  	}
 22148  	goto totype_atof_calc
 22149  __21:
 22150  	;
 22151  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '-') {
 22152  		goto __22
 22153  	}
 22154  	esign = -1
 22155  	z++
 22156  	goto __23
 22157  __22:
 22158  	if !(int32(*(*int8)(unsafe.Pointer(z))) == '+') {
 22159  		goto __24
 22160  	}
 22161  	z++
 22162  __24:
 22163  	;
 22164  __23:
 22165  	;
 22166  __25:
 22167  	if !(z < zEnd && totypeIsdigit(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22168  		goto __26
 22169  	}
 22170  	if e < 10000 {
 22171  		e = e*10 + (int32(*(*int8)(unsafe.Pointer(z))) - '0')
 22172  	} else {
 22173  		e = 10000
 22174  	}
 22175  	z++
 22176  	eValid = 1
 22177  	goto __25
 22178  __26:
 22179  	;
 22180  __20:
 22181  	;
 22182  	if !(nDigits != 0 && eValid != 0) {
 22183  		goto __27
 22184  	}
 22185  __28:
 22186  	if !(z < zEnd && totypeIsspace(tls, uint8(*(*int8)(unsafe.Pointer(z)))) != 0) {
 22187  		goto __29
 22188  	}
 22189  	z++
 22190  	goto __28
 22191  __29:
 22192  	;
 22193  __27:
 22194  	;
 22195  totype_atof_calc:
 22196  	e = e*esign + d
 22197  	if !(e < 0) {
 22198  		goto __30
 22199  	}
 22200  	esign = -1
 22201  	e = e * -1
 22202  	goto __31
 22203  __30:
 22204  	esign = 1
 22205  __31:
 22206  	;
 22207  	if !!(s != 0) {
 22208  		goto __32
 22209  	}
 22210  
 22211  	if sign < 0 && nDigits != 0 {
 22212  		result = -libc.Float64FromFloat64(float64(0))
 22213  	} else {
 22214  		result = float64(0)
 22215  	}
 22216  	goto __33
 22217  __32:
 22218  	if !(esign > 0) {
 22219  		goto __34
 22220  	}
 22221  __36:
 22222  	if !(s < (int64(0xffffffff)|int64(0x7fffffff)<<32)/int64(10) && e > 0) {
 22223  		goto __37
 22224  	}
 22225  	e--
 22226  	s = s * int64(10)
 22227  	goto __36
 22228  __37:
 22229  	;
 22230  	goto __35
 22231  __34:
 22232  __38:
 22233  	if !(!(int32(s%int64(10)) != 0) && e > 0) {
 22234  		goto __39
 22235  	}
 22236  	e--
 22237  	s = s / int64(10)
 22238  	goto __38
 22239  __39:
 22240  	;
 22241  __35:
 22242  	;
 22243  	if sign < 0 {
 22244  		s = -s
 22245  	} else {
 22246  		s = s
 22247  	}
 22248  
 22249  	if !(e != 0) {
 22250  		goto __40
 22251  	}
 22252  	scale = 1.0
 22253  
 22254  	if !(e > 307 && e < 342) {
 22255  		goto __42
 22256  	}
 22257  __44:
 22258  	if !(e%308 != 0) {
 22259  		goto __45
 22260  	}
 22261  	scale = scale * 1.0e+1
 22262  	e = e - 1
 22263  	goto __44
 22264  __45:
 22265  	;
 22266  	if !(esign < 0) {
 22267  		goto __46
 22268  	}
 22269  	result = float64(s) / scale
 22270  	result = result / 1.0e+308
 22271  	goto __47
 22272  __46:
 22273  	result = float64(s) * scale
 22274  	result = result * 1.0e+308
 22275  __47:
 22276  	;
 22277  	goto __43
 22278  __42:
 22279  	if !(e >= 342) {
 22280  		goto __48
 22281  	}
 22282  	if !(esign < 0) {
 22283  		goto __50
 22284  	}
 22285  	result = 0.0 * float64(s)
 22286  	goto __51
 22287  __50:
 22288  	result = libc.Float64(1e308) * libc.Float64(1e308) * float64(s)
 22289  __51:
 22290  	;
 22291  	goto __49
 22292  __48:
 22293  __52:
 22294  	if !(e%22 != 0) {
 22295  		goto __53
 22296  	}
 22297  	scale = scale * 1.0e+1
 22298  	e = e - 1
 22299  	goto __52
 22300  __53:
 22301  	;
 22302  __54:
 22303  	if !(e > 0) {
 22304  		goto __55
 22305  	}
 22306  	scale = scale * 1.0e+22
 22307  	e = e - 22
 22308  	goto __54
 22309  __55:
 22310  	;
 22311  	if !(esign < 0) {
 22312  		goto __56
 22313  	}
 22314  	result = float64(s) / scale
 22315  	goto __57
 22316  __56:
 22317  	result = float64(s) * scale
 22318  __57:
 22319  	;
 22320  __49:
 22321  	;
 22322  __43:
 22323  	;
 22324  	goto __41
 22325  __40:
 22326  	result = float64(s)
 22327  __41:
 22328  	;
 22329  __33:
 22330  	;
 22331  	*(*float64)(unsafe.Pointer(pResult)) = result
 22332  
 22333  	return libc.Bool32(z >= zEnd && nDigits > 0 && eValid != 0 && nonNum == 0)
 22334  }
 22335  
 22336  func tointegerFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22337  	bp := tls.Alloc(24)
 22338  	defer tls.Free(24)
 22339  
 22340  	_ = argc
 22341  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22342  	case SQLITE_FLOAT:
 22343  		{
 22344  			var rVal float64 = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22345  			var iVal sqlite3_int64 = sqlite3_int64(rVal)
 22346  			if rVal == float64(iVal) {
 22347  				sqlite3.Xsqlite3_result_int64(tls, context, iVal)
 22348  			}
 22349  			break
 22350  
 22351  		}
 22352  	case SQLITE_INTEGER:
 22353  		{
 22354  			sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22355  			break
 22356  
 22357  		}
 22358  	case SQLITE_BLOB:
 22359  		{
 22360  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22361  			if zBlob != 0 {
 22362  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22363  				if uint64(nBlob) == uint64(unsafe.Sizeof(sqlite3_int64(0))) {
 22364  					if 0 != 0 {
 22365  						var i int32
 22366  
 22367  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(sqlite3_int64(0))); i++ {
 22368  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(sqlite3_int64(0)))-uint64(1)-uint64(i))))
 22369  						}
 22370  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22371  					} else {
 22372  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(sqlite3_int64(0))))
 22373  					}
 22374  					sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 8)))
 22375  				}
 22376  			}
 22377  			break
 22378  
 22379  		}
 22380  	case SQLITE_TEXT:
 22381  		{
 22382  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22383  			if zStr != 0 {
 22384  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22385  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) {
 22386  					if !(totypeAtoi64(tls, zStr, bp+16, nStr) != 0) {
 22387  						sqlite3.Xsqlite3_result_int64(tls, context, *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 22388  					}
 22389  				}
 22390  			}
 22391  			break
 22392  
 22393  		}
 22394  	default:
 22395  		{
 22396  			break
 22397  
 22398  		}
 22399  	}
 22400  }
 22401  
 22402  func torealFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 22403  	bp := tls.Alloc(24)
 22404  	defer tls.Free(24)
 22405  
 22406  	_ = argc
 22407  	switch sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) {
 22408  	case SQLITE_FLOAT:
 22409  		{
 22410  			sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv))))
 22411  			break
 22412  
 22413  		}
 22414  	case SQLITE_INTEGER:
 22415  		{
 22416  			var iVal sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22417  			var rVal float64 = float64(iVal)
 22418  			if iVal == sqlite3_int64(rVal) {
 22419  				sqlite3.Xsqlite3_result_double(tls, context, rVal)
 22420  			}
 22421  			break
 22422  
 22423  		}
 22424  	case SQLITE_BLOB:
 22425  		{
 22426  			var zBlob uintptr = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22427  			if zBlob != 0 {
 22428  				var nBlob int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22429  				if uint64(nBlob) == uint64(unsafe.Sizeof(float64(0))) {
 22430  					if 1 != 0 {
 22431  						var i int32
 22432  
 22433  						for i = 0; uint64(i) < uint64(unsafe.Sizeof(float64(0))); i++ {
 22434  							*(*uint8)(unsafe.Pointer(bp + uintptr(i))) = *(*uint8)(unsafe.Pointer(zBlob + uintptr(uint64(unsafe.Sizeof(float64(0)))-uint64(1)-uint64(i))))
 22435  						}
 22436  						libc.Xmemcpy(tls, bp+8, bp, uint64(unsafe.Sizeof(float64(0))))
 22437  					} else {
 22438  						libc.Xmemcpy(tls, bp+8, zBlob, uint64(unsafe.Sizeof(float64(0))))
 22439  					}
 22440  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 8)))
 22441  				}
 22442  			}
 22443  			break
 22444  
 22445  		}
 22446  	case SQLITE_TEXT:
 22447  		{
 22448  			var zStr uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22449  			if zStr != 0 {
 22450  				var nStr int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 22451  				if nStr != 0 && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr))) != 0) && !(totypeIsspace(tls, *(*uint8)(unsafe.Pointer(zStr + uintptr(nStr-1)))) != 0) {
 22452  					if totypeAtoF(tls, zStr, bp+16, nStr) != 0 {
 22453  						sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 16)))
 22454  						return
 22455  					}
 22456  				}
 22457  			}
 22458  			break
 22459  
 22460  		}
 22461  	default:
 22462  		{
 22463  			break
 22464  
 22465  		}
 22466  	}
 22467  }
 22468  
 22469  func sqlite3_totype_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 22470  	var rc int32 = SQLITE_OK
 22471  	_ = pApi
 22472  
 22473  	_ = pzErrMsg
 22474  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8431, 1,
 22475  		SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22476  		*(*uintptr)(unsafe.Pointer(&struct {
 22477  			f func(*libc.TLS, uintptr, int32, uintptr)
 22478  		}{tointegerFunc})), uintptr(0), uintptr(0))
 22479  	if rc == SQLITE_OK {
 22480  		rc = sqlite3.Xsqlite3_create_function(tls, db, ts+8441, 1,
 22481  			SQLITE_UTF8|SQLITE_DETERMINISTIC|SQLITE_INNOCUOUS, uintptr(0),
 22482  			*(*uintptr)(unsafe.Pointer(&struct {
 22483  				f func(*libc.TLS, uintptr, int32, uintptr)
 22484  			}{torealFunc})), uintptr(0), uintptr(0))
 22485  	}
 22486  	return rc
 22487  }
 22488  
 22489  type UnionCsr1 = struct {
 22490  	Fbase        sqlite3_vtab_cursor
 22491  	FpStmt       uintptr
 22492  	FiMaxRowid   sqlite3_int64
 22493  	FiTab        int32
 22494  	F__ccgo_pad1 [4]byte
 22495  }
 22496  
 22497  type UnionCsr = UnionCsr1
 22498  type UnionTab1 = struct {
 22499  	Fbase        sqlite3_vtab
 22500  	Fdb          uintptr
 22501  	FbSwarm      int32
 22502  	FiPK         int32
 22503  	FnSrc        int32
 22504  	F__ccgo_pad1 [4]byte
 22505  	FaSrc        uintptr
 22506  	FbHasContext int32
 22507  	F__ccgo_pad2 [4]byte
 22508  	FzSourceStr  uintptr
 22509  	FpNotFound   uintptr
 22510  	FpOpenClose  uintptr
 22511  	FpClosable   uintptr
 22512  	FnOpen       int32
 22513  	FnMaxOpen    int32
 22514  }
 22515  
 22516  type UnionTab = UnionTab1
 22517  type UnionSrc1 = struct {
 22518  	FzDb           uintptr
 22519  	FzTab          uintptr
 22520  	FiMin          sqlite3_int64
 22521  	FiMax          sqlite3_int64
 22522  	FzFile         uintptr
 22523  	FzContext      uintptr
 22524  	FnUser         int32
 22525  	F__ccgo_pad1   [4]byte
 22526  	Fdb            uintptr
 22527  	FpNextClosable uintptr
 22528  }
 22529  
 22530  type UnionSrc = UnionSrc1
 22531  
 22532  func unionMalloc(tls *libc.TLS, pRc uintptr, nByte sqlite3_int64) uintptr {
 22533  	var pRet uintptr
 22534  
 22535  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22536  		pRet = sqlite3.Xsqlite3_malloc64(tls, uint64(nByte))
 22537  		if pRet != 0 {
 22538  			libc.Xmemset(tls, pRet, 0, size_t(nByte))
 22539  		} else {
 22540  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 22541  		}
 22542  	} else {
 22543  		pRet = uintptr(0)
 22544  	}
 22545  	return pRet
 22546  }
 22547  
 22548  func unionStrdup(tls *libc.TLS, pRc uintptr, zIn uintptr) uintptr {
 22549  	var zRet uintptr = uintptr(0)
 22550  	if zIn != 0 {
 22551  		var nByte sqlite3_int64 = sqlite3_int64(libc.Xstrlen(tls, zIn) + uint64(1))
 22552  		zRet = unionMalloc(tls, pRc, nByte)
 22553  		if zRet != 0 {
 22554  			libc.Xmemcpy(tls, zRet, zIn, size_t(nByte))
 22555  		}
 22556  	}
 22557  	return zRet
 22558  }
 22559  
 22560  func unionDequote(tls *libc.TLS, z uintptr) {
 22561  	if z != 0 {
 22562  		var q int8 = *(*int8)(unsafe.Pointer(z))
 22563  
 22564  		if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 22565  			var iIn int32 = 1
 22566  			var iOut int32 = 0
 22567  			if int32(q) == '[' {
 22568  				q = int8(']')
 22569  			}
 22570  			for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 22571  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 22572  					if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 22573  						iIn++
 22574  						break
 22575  					} else {
 22576  						iIn = iIn + 2
 22577  						*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 22578  					}
 22579  				} else {
 22580  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 22581  				}
 22582  			}
 22583  			*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 22584  		}
 22585  	}
 22586  }
 22587  
 22588  func unionPrepare(tls *libc.TLS, pRc uintptr, db uintptr, zSql uintptr, pzErr uintptr) uintptr {
 22589  	bp := tls.Alloc(16)
 22590  	defer tls.Free(16)
 22591  
 22592  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 22593  
 22594  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22595  		var rc int32 = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 22596  		if rc != SQLITE_OK {
 22597  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8448, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 22598  			*(*int32)(unsafe.Pointer(pRc)) = rc
 22599  		}
 22600  	}
 22601  	return *(*uintptr)(unsafe.Pointer(bp + 8))
 22602  }
 22603  
 22604  func unionPreparePrintf(tls *libc.TLS, pRc uintptr, pzErr uintptr, db uintptr, zFmt uintptr, va uintptr) uintptr {
 22605  	var pRet uintptr = uintptr(0)
 22606  	var zSql uintptr
 22607  	var ap va_list
 22608  	_ = ap
 22609  	ap = va
 22610  
 22611  	zSql = sqlite3.Xsqlite3_vmprintf(tls, zFmt, ap)
 22612  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22613  		if zSql == uintptr(0) {
 22614  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 22615  		} else {
 22616  			pRet = unionPrepare(tls, pRc, db, zSql, pzErr)
 22617  		}
 22618  	}
 22619  	sqlite3.Xsqlite3_free(tls, zSql)
 22620  
 22621  	_ = ap
 22622  	return pRet
 22623  }
 22624  
 22625  func unionFinalize(tls *libc.TLS, pRc uintptr, pStmt uintptr, pzErr uintptr) {
 22626  	bp := tls.Alloc(8)
 22627  	defer tls.Free(8)
 22628  
 22629  	var db uintptr = sqlite3.Xsqlite3_db_handle(tls, pStmt)
 22630  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, pStmt)
 22631  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22632  		*(*int32)(unsafe.Pointer(pRc)) = rc
 22633  		if rc != 0 {
 22634  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 22635  		}
 22636  	}
 22637  }
 22638  
 22639  func unionInvokeOpenClose(tls *libc.TLS, pTab uintptr, pSrc uintptr, bClose int32, pzErr uintptr) int32 {
 22640  	bp := tls.Alloc(8)
 22641  	defer tls.Free(8)
 22642  
 22643  	var rc int32 = SQLITE_OK
 22644  	if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 22645  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 22646  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22647  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 22648  		}
 22649  		sqlite3.Xsqlite3_bind_int(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose, 2+(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext, bClose)
 22650  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 22651  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)) {
 22652  			if pzErr != 0 {
 22653  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 22654  			}
 22655  		}
 22656  	}
 22657  	return rc
 22658  }
 22659  
 22660  func unionCloseSources(tls *libc.TLS, pTab uintptr, nMax int32) {
 22661  	for (*UnionTab)(unsafe.Pointer(pTab)).FpClosable != 0 && (*UnionTab)(unsafe.Pointer(pTab)).FnOpen > nMax {
 22662  		var p uintptr
 22663  		var pp uintptr
 22664  		for pp = pTab + 88; (*UnionSrc)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNextClosable != 0; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 22665  		}
 22666  		p = *(*uintptr)(unsafe.Pointer(pp))
 22667  
 22668  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(p)).Fdb)
 22669  		(*UnionSrc)(unsafe.Pointer(p)).Fdb = uintptr(0)
 22670  		*(*uintptr)(unsafe.Pointer(pp)) = uintptr(0)
 22671  		(*UnionTab)(unsafe.Pointer(pTab)).FnOpen--
 22672  		unionInvokeOpenClose(tls, pTab, p, 1, uintptr(0))
 22673  	}
 22674  }
 22675  
 22676  func unionDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 22677  	if pVtab != 0 {
 22678  		var pTab uintptr = pVtab
 22679  		var i int32
 22680  		for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 22681  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 22682  			var bHaveSrcDb int32 = libc.Bool32((*UnionSrc)(unsafe.Pointer(pSrc)).Fdb != uintptr(0))
 22683  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22684  			if bHaveSrcDb != 0 {
 22685  				unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 22686  			}
 22687  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb)
 22688  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab)
 22689  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile)
 22690  			sqlite3.Xsqlite3_free(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext)
 22691  		}
 22692  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 22693  		sqlite3.Xsqlite3_finalize(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose)
 22694  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr)
 22695  		sqlite3.Xsqlite3_free(tls, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc)
 22696  		sqlite3.Xsqlite3_free(tls, pTab)
 22697  	}
 22698  	return SQLITE_OK
 22699  }
 22700  
 22701  func unionIsIntkeyTable(tls *libc.TLS, db uintptr, pSrc uintptr, pzErr uintptr) int32 {
 22702  	bp := tls.Alloc(36)
 22703  	defer tls.Free(36)
 22704  
 22705  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 22706  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 22707  	var rc int32
 22708  
 22709  	sqlite3.Xsqlite3_table_column_metadata(tls,
 22710  		db, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, ts+8462, bp+24, uintptr(0), uintptr(0), bp+32, uintptr(0))
 22711  	rc = sqlite3.Xsqlite3_errcode(tls, db)
 22712  	if rc == SQLITE_ERROR ||
 22713  		rc == SQLITE_OK && (!(*(*int32)(unsafe.Pointer(bp + 32)) != 0) || sqlite3.Xsqlite3_stricmp(tls, ts+8470, *(*uintptr)(unsafe.Pointer(bp + 24))) != 0) {
 22714  		rc = SQLITE_ERROR
 22715  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8478,
 22716  			libc.VaList(bp, func() uintptr {
 22717  				if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 22718  					return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 22719  				}
 22720  				return ts + 584
 22721  			}(),
 22722  				func() uintptr {
 22723  					if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 22724  						return ts + 8506
 22725  					}
 22726  					return ts + 584
 22727  				}(),
 22728  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 22729  	}
 22730  	return rc
 22731  }
 22732  
 22733  func unionSourceToStr(tls *libc.TLS, pRc uintptr, pTab uintptr, pSrc uintptr, pzErr uintptr) uintptr {
 22734  	bp := tls.Alloc(4)
 22735  	defer tls.Free(4)
 22736  
 22737  	var zRet uintptr = uintptr(0)
 22738  	if *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 22739  		var db uintptr = func() uintptr {
 22740  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22741  				return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 22742  			}
 22743  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 22744  		}()
 22745  		*(*int32)(unsafe.Pointer(bp)) = unionIsIntkeyTable(tls, db, pSrc, pzErr)
 22746  		var pStmt uintptr = unionPrepare(tls, bp, db,
 22747  			ts+8508, pzErr)
 22748  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22749  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, -1, uintptr(0))
 22750  			sqlite3.Xsqlite3_bind_text(tls, pStmt, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb, -1, uintptr(0))
 22751  			if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 22752  				var z uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 22753  				zRet = unionStrdup(tls, bp, z)
 22754  			}
 22755  			unionFinalize(tls, bp, pStmt, pzErr)
 22756  		}
 22757  		*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp))
 22758  	}
 22759  
 22760  	return zRet
 22761  }
 22762  
 22763  func unionSourceCheck(tls *libc.TLS, pTab uintptr, pzErr uintptr) int32 {
 22764  	bp := tls.Alloc(4)
 22765  	defer tls.Free(4)
 22766  
 22767  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 22768  	var z0 uintptr = uintptr(0)
 22769  	var i int32
 22770  
 22771  	z0 = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc, pzErr)
 22772  	for i = 1; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 22773  		var z uintptr = unionSourceToStr(tls, bp, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FaSrc+uintptr(i)*72, pzErr)
 22774  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && sqlite3.Xsqlite3_stricmp(tls, z, z0) != 0 {
 22775  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 22776  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 22777  		}
 22778  		sqlite3.Xsqlite3_free(tls, z)
 22779  	}
 22780  	sqlite3.Xsqlite3_free(tls, z0)
 22781  
 22782  	return *(*int32)(unsafe.Pointer(bp))
 22783  }
 22784  
 22785  func unionOpenDatabaseInner(tls *libc.TLS, pTab uintptr, pSrc uintptr, pzErr uintptr) int32 {
 22786  	bp := tls.Alloc(16)
 22787  	defer tls.Free(16)
 22788  
 22789  	var rc int32
 22790  
 22791  	rc = unionInvokeOpenClose(tls, pTab, pSrc, 0, pzErr)
 22792  	if rc != SQLITE_OK {
 22793  		return rc
 22794  	}
 22795  
 22796  	rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 22797  	if rc == SQLITE_OK {
 22798  		return rc
 22799  	}
 22800  	if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 22801  		sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22802  		(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 22803  		sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 1, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, -1, uintptr(0))
 22804  		if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22805  			sqlite3.Xsqlite3_bind_text(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound, 2, (*UnionSrc)(unsafe.Pointer(pSrc)).FzContext, -1, uintptr(0))
 22806  		}
 22807  		sqlite3.Xsqlite3_step(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)
 22808  		if SQLITE_OK != libc.AssignInt32(&rc, sqlite3.Xsqlite3_reset(tls, (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound)) {
 22809  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*UnionTab)(unsafe.Pointer(pTab)).Fdb)))
 22810  			return rc
 22811  		}
 22812  		rc = sqlite3.Xsqlite3_open_v2(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).FzFile, pSrc+56, openFlags, uintptr(0))
 22813  	}
 22814  	if rc != SQLITE_OK {
 22815  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_errmsg(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)))
 22816  	}
 22817  	return rc
 22818  }
 22819  
 22820  var openFlags int32 = SQLITE_OPEN_READONLY | SQLITE_OPEN_URI
 22821  
 22822  func unionOpenDatabase(tls *libc.TLS, pTab uintptr, iSrc int32, pzErr uintptr) int32 {
 22823  	bp := tls.Alloc(4)
 22824  	defer tls.Free(4)
 22825  
 22826  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 22827  	var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iSrc)*72
 22828  
 22829  	if (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb == uintptr(0) {
 22830  		unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen-1)
 22831  		*(*int32)(unsafe.Pointer(bp)) = unionOpenDatabaseInner(tls, pTab, pSrc, pzErr)
 22832  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22833  			var z uintptr = unionSourceToStr(tls, bp, pTab, pSrc, pzErr)
 22834  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22835  				if (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr == uintptr(0) {
 22836  					(*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr = z
 22837  				} else {
 22838  					if sqlite3.Xsqlite3_stricmp(tls, z, (*UnionTab)(unsafe.Pointer(pTab)).FzSourceStr) != 0 {
 22839  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8592, 0)
 22840  						*(*int32)(unsafe.Pointer(bp)) = SQLITE_ERROR
 22841  					}
 22842  					sqlite3.Xsqlite3_free(tls, z)
 22843  				}
 22844  			}
 22845  		}
 22846  
 22847  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 22848  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 22849  			(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 22850  			(*UnionTab)(unsafe.Pointer(pTab)).FnOpen++
 22851  		} else {
 22852  			sqlite3.Xsqlite3_close(tls, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb)
 22853  			(*UnionSrc)(unsafe.Pointer(pSrc)).Fdb = uintptr(0)
 22854  			unionInvokeOpenClose(tls, pTab, pSrc, 1, uintptr(0))
 22855  		}
 22856  	}
 22857  
 22858  	return *(*int32)(unsafe.Pointer(bp))
 22859  }
 22860  
 22861  func unionIncrRefcount(tls *libc.TLS, pTab uintptr, iTab int32) {
 22862  	if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22863  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(iTab)*72
 22864  
 22865  		if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 22866  			var pp uintptr
 22867  			for pp = pTab + 88; *(*uintptr)(unsafe.Pointer(pp)) != pSrc; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 22868  			}
 22869  			*(*uintptr)(unsafe.Pointer(pp)) = (*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable
 22870  			(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = uintptr(0)
 22871  		}
 22872  		(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser++
 22873  	}
 22874  }
 22875  
 22876  func unionFinalizeCsrStmt(tls *libc.TLS, pCsr uintptr) int32 {
 22877  	var rc int32 = SQLITE_OK
 22878  	if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 22879  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 22880  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 22881  		rc = sqlite3.Xsqlite3_finalize(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt)
 22882  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 22883  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 22884  			(*UnionSrc)(unsafe.Pointer(pSrc)).FnUser--
 22885  
 22886  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FnUser == 0 {
 22887  				(*UnionSrc)(unsafe.Pointer(pSrc)).FpNextClosable = (*UnionTab)(unsafe.Pointer(pTab)).FpClosable
 22888  				(*UnionTab)(unsafe.Pointer(pTab)).FpClosable = pSrc
 22889  			}
 22890  			unionCloseSources(tls, pTab, (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen)
 22891  		}
 22892  	}
 22893  	return rc
 22894  }
 22895  
 22896  func union_isspace(tls *libc.TLS, c int8) int32 {
 22897  	return libc.Bool32(int32(c) == ' ' || int32(c) == '\n' || int32(c) == '\r' || int32(c) == '\t')
 22898  }
 22899  
 22900  func union_isidchar(tls *libc.TLS, c int8) int32 {
 22901  	return libc.Bool32(int32(c) >= 'a' && int32(c) <= 'z' || int32(c) >= 'A' && int32(c) < 'Z' || int32(c) >= '0' && int32(c) <= '9')
 22902  }
 22903  
 22904  func unionConfigureVtab(tls *libc.TLS, pRc uintptr, pTab uintptr, pStmt uintptr, nArg int32, azArg uintptr, pzErr uintptr) {
 22905  	bp := tls.Alloc(68)
 22906  	defer tls.Free(68)
 22907  
 22908  	*(*int32)(unsafe.Pointer(bp + 64)) = *(*int32)(unsafe.Pointer(pRc))
 22909  	var i int32
 22910  	if *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK {
 22911  		(*UnionTab)(unsafe.Pointer(pTab)).FbHasContext = libc.Bool32(sqlite3.Xsqlite3_column_count(tls, pStmt) > 4)
 22912  	}
 22913  	for i = 0; *(*int32)(unsafe.Pointer(bp + 64)) == SQLITE_OK && i < nArg; i++ {
 22914  		var zArg uintptr = unionStrdup(tls, bp+64, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8)))
 22915  		if zArg != 0 {
 22916  			var nOpt int32 = 0
 22917  			var zOpt uintptr
 22918  			var zVal uintptr
 22919  
 22920  			unionDequote(tls, zArg)
 22921  			zOpt = zArg
 22922  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zOpt))) != 0 {
 22923  				zOpt++
 22924  			}
 22925  			zVal = zOpt
 22926  			if int32(*(*int8)(unsafe.Pointer(zVal))) == ':' {
 22927  				zVal++
 22928  			}
 22929  			for union_isidchar(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22930  				zVal++
 22931  			}
 22932  			nOpt = int32((int64(zVal) - int64(zOpt)) / 1)
 22933  
 22934  			for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22935  				zVal++
 22936  			}
 22937  			if int32(*(*int8)(unsafe.Pointer(zVal))) == '=' {
 22938  				*(*int8)(unsafe.Pointer(zOpt + uintptr(nOpt))) = int8(0)
 22939  				zVal++
 22940  				for union_isspace(tls, *(*int8)(unsafe.Pointer(zVal))) != 0 {
 22941  					zVal++
 22942  				}
 22943  				zVal = unionStrdup(tls, bp+64, zVal)
 22944  				if zVal != 0 {
 22945  					unionDequote(tls, zVal)
 22946  					if int32(*(*int8)(unsafe.Pointer(zOpt))) == ':' {
 22947  						var iParam int32 = sqlite3.Xsqlite3_bind_parameter_index(tls, pStmt, zOpt)
 22948  						if iParam == 0 {
 22949  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22950  								ts+8621, libc.VaList(bp, zOpt))
 22951  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22952  						} else {
 22953  							*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3_bind_text(tls, pStmt, iParam, zVal, -1, libc.UintptrFromInt32(-1))
 22954  						}
 22955  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8658, 7) {
 22956  						(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = libc.Xatoi(tls, zVal)
 22957  						if (*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen <= 0 {
 22958  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8666, 0)
 22959  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22960  						}
 22961  					} else if nOpt == 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8699, 7) {
 22962  						if (*UnionTab)(unsafe.Pointer(pTab)).FpNotFound != 0 {
 22963  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22964  								ts+8707, 0)
 22965  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22966  						} else {
 22967  							(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22968  								ts+8745, libc.VaList(bp+8, zVal, func() uintptr {
 22969  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22970  										return ts + 8762
 22971  									}
 22972  									return ts + 584
 22973  								}()))
 22974  						}
 22975  					} else if nOpt == 9 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+8765, 9) {
 22976  						if (*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose != 0 {
 22977  							*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls,
 22978  								ts+8775, 0)
 22979  							*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22980  						} else {
 22981  							(*UnionTab)(unsafe.Pointer(pTab)).FpOpenClose = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22982  								ts+8815, libc.VaList(bp+24, zVal, func() uintptr {
 22983  									if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 22984  										return ts + 8762
 22985  									}
 22986  									return ts + 584
 22987  								}()))
 22988  						}
 22989  					} else {
 22990  						*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8834, libc.VaList(bp+40, zOpt))
 22991  						*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 22992  					}
 22993  					sqlite3.Xsqlite3_free(tls, zVal)
 22994  				}
 22995  			} else {
 22996  				if i == 0 && nArg == 1 {
 22997  					(*UnionTab)(unsafe.Pointer(pTab)).FpNotFound = unionPreparePrintf(tls, bp+64, pzErr, (*UnionTab)(unsafe.Pointer(pTab)).Fdb,
 22998  						ts+8869, libc.VaList(bp+48, zArg))
 22999  				} else {
 23000  					*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8884, libc.VaList(bp+56, *(*uintptr)(unsafe.Pointer(azArg + uintptr(i)*8))))
 23001  					*(*int32)(unsafe.Pointer(bp + 64)) = SQLITE_ERROR
 23002  				}
 23003  			}
 23004  			sqlite3.Xsqlite3_free(tls, zArg)
 23005  		}
 23006  	}
 23007  	*(*int32)(unsafe.Pointer(pRc)) = *(*int32)(unsafe.Pointer(bp + 64))
 23008  }
 23009  
 23010  func unionConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23011  	bp := tls.Alloc(44)
 23012  	defer tls.Free(44)
 23013  
 23014  	var pTab uintptr = uintptr(0)
 23015  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 23016  	var bSwarm int32 = func() int32 {
 23017  		if pAux == uintptr(0) {
 23018  			return 0
 23019  		}
 23020  		return 1
 23021  	}()
 23022  	var zVtab uintptr = func() uintptr {
 23023  		if bSwarm != 0 {
 23024  			return ts + 8911
 23025  		}
 23026  		return ts + 8921
 23027  	}()
 23028  
 23029  	if sqlite3.Xsqlite3_stricmp(tls, ts+8931, *(*uintptr)(unsafe.Pointer(argv + 1*8))) != 0 {
 23030  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8936, libc.VaList(bp, zVtab))
 23031  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23032  	} else if argc < 4 || argc > 4 && bSwarm == 0 {
 23033  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+8977, libc.VaList(bp+8, zVtab))
 23034  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23035  	} else {
 23036  		var nAlloc int32 = 0
 23037  		var pStmt uintptr = uintptr(0)
 23038  		var zArg uintptr = unionStrdup(tls, bp+40, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 23039  
 23040  		unionDequote(tls, zArg)
 23041  		pStmt = unionPreparePrintf(tls, bp+40, pzErr, db,
 23042  			ts+9010, libc.VaList(bp+16, zArg))
 23043  
 23044  		pTab = unionMalloc(tls, bp+40, int64(unsafe.Sizeof(UnionTab{})))
 23045  		if pTab != 0 {
 23046  			(*UnionTab)(unsafe.Pointer(pTab)).Fdb = db
 23047  			(*UnionTab)(unsafe.Pointer(pTab)).FbSwarm = bSwarm
 23048  			(*UnionTab)(unsafe.Pointer(pTab)).FnMaxOpen = SWARMVTAB_MAX_OPEN
 23049  		}
 23050  
 23051  		if bSwarm != 0 {
 23052  			unionConfigureVtab(tls, bp+40, pTab, pStmt, argc-4, argv+4*8, pzErr)
 23053  		}
 23054  
 23055  		for *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23056  			var zDb uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23057  			var zTab uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 1)
 23058  			var iMin sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 2)
 23059  			var iMax sqlite3_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, 3)
 23060  			var pSrc uintptr
 23061  
 23062  			if nAlloc <= (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23063  				var nNew int32
 23064  				if nAlloc != 0 {
 23065  					nNew = nAlloc * 2
 23066  				} else {
 23067  					nNew = 8
 23068  				}
 23069  				var aNew uintptr = sqlite3.Xsqlite3_realloc64(tls,
 23070  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc, uint64(nNew)*uint64(unsafe.Sizeof(UnionSrc{})))
 23071  				if aNew == uintptr(0) {
 23072  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_NOMEM
 23073  					break
 23074  				} else {
 23075  					libc.Xmemset(tls, aNew+uintptr((*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*72, 0, uint64(nNew-(*UnionTab)(unsafe.Pointer(pTab)).FnSrc)*uint64(unsafe.Sizeof(UnionSrc{})))
 23076  					(*UnionTab)(unsafe.Pointer(pTab)).FaSrc = aNew
 23077  					nAlloc = nNew
 23078  				}
 23079  			}
 23080  
 23081  			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)*72)).FiMax {
 23082  				*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9040, 0)
 23083  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23084  			}
 23085  
 23086  			if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23087  				pSrc = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(libc.PostIncInt32(&(*UnionTab)(unsafe.Pointer(pTab)).FnSrc, 1))*72
 23088  				(*UnionSrc)(unsafe.Pointer(pSrc)).FzTab = unionStrdup(tls, bp+40, zTab)
 23089  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMin = iMin
 23090  				(*UnionSrc)(unsafe.Pointer(pSrc)).FiMax = iMax
 23091  				if bSwarm != 0 {
 23092  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzFile = unionStrdup(tls, bp+40, zDb)
 23093  				} else {
 23094  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzDb = unionStrdup(tls, bp+40, zDb)
 23095  				}
 23096  				if (*UnionTab)(unsafe.Pointer(pTab)).FbHasContext != 0 {
 23097  					var zContext uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 4)
 23098  					(*UnionSrc)(unsafe.Pointer(pSrc)).FzContext = unionStrdup(tls, bp+40, zContext)
 23099  				}
 23100  			}
 23101  		}
 23102  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23103  		pStmt = uintptr(0)
 23104  
 23105  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FnSrc == 0 {
 23106  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+9067, 0)
 23107  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 23108  		}
 23109  
 23110  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23111  			if bSwarm != 0 {
 23112  				*(*int32)(unsafe.Pointer(bp + 40)) = unionOpenDatabase(tls, pTab, 0, pzErr)
 23113  			} else {
 23114  				*(*int32)(unsafe.Pointer(bp + 40)) = unionSourceCheck(tls, pTab, pzErr)
 23115  			}
 23116  		}
 23117  
 23118  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 23119  			var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc
 23120  			var tdb uintptr = func() uintptr {
 23121  				if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23122  					return (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb
 23123  				}
 23124  				return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23125  			}()
 23126  			pStmt = unionPreparePrintf(tls, bp+40, pzErr, tdb,
 23127  				ts+9095,
 23128  				libc.VaList(bp+24, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab, (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb))
 23129  		}
 23130  		if *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, pStmt) {
 23131  			var zDecl uintptr = sqlite3.Xsqlite3_column_text(tls, pStmt, 0)
 23132  			*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3_declare_vtab(tls, db, zDecl)
 23133  			(*UnionTab)(unsafe.Pointer(pTab)).FiPK = sqlite3.Xsqlite3_column_int(tls, pStmt, 1)
 23134  		}
 23135  
 23136  		unionFinalize(tls, bp+40, pStmt, pzErr)
 23137  	}
 23138  
 23139  	if *(*int32)(unsafe.Pointer(bp + 40)) != SQLITE_OK {
 23140  		unionDisconnect(tls, pTab)
 23141  		pTab = uintptr(0)
 23142  	}
 23143  
 23144  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 23145  	return *(*int32)(unsafe.Pointer(bp + 40))
 23146  }
 23147  
 23148  func unionOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23149  	bp := tls.Alloc(4)
 23150  	defer tls.Free(4)
 23151  
 23152  	var pCsr uintptr
 23153  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 23154  	_ = p
 23155  	pCsr = unionMalloc(tls, bp, int64(unsafe.Sizeof(UnionCsr{})))
 23156  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 23157  	return *(*int32)(unsafe.Pointer(bp))
 23158  }
 23159  
 23160  func unionClose(tls *libc.TLS, cur uintptr) int32 {
 23161  	var pCsr uintptr = cur
 23162  	unionFinalizeCsrStmt(tls, pCsr)
 23163  	sqlite3.Xsqlite3_free(tls, pCsr)
 23164  	return SQLITE_OK
 23165  }
 23166  
 23167  func doUnionNext(tls *libc.TLS, pCsr uintptr) int32 {
 23168  	bp := tls.Alloc(28)
 23169  	defer tls.Free(28)
 23170  
 23171  	*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_OK
 23172  
 23173  	if sqlite3.Xsqlite3_step(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt) != SQLITE_ROW {
 23174  		var pTab uintptr = (*UnionCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 23175  		*(*int32)(unsafe.Pointer(bp + 24)) = unionFinalizeCsrStmt(tls, pCsr)
 23176  		if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK && (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23177  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab++
 23178  			if (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc {
 23179  				var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72
 23180  				if (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid >= (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23181  					*(*int32)(unsafe.Pointer(bp + 24)) = unionOpenDatabase(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab, pTab+16)
 23182  					(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPreparePrintf(tls, bp+24, pTab+16, (*UnionSrc)(unsafe.Pointer(pSrc)).Fdb,
 23183  						ts+9273,
 23184  						libc.VaList(bp, (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab,
 23185  							func() uintptr {
 23186  								if (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax > (*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid {
 23187  									return ts + 9305
 23188  								}
 23189  								return ts + 9322
 23190  							}(),
 23191  							(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid))
 23192  					if *(*int32)(unsafe.Pointer(bp + 24)) == SQLITE_OK {
 23193  						unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23194  						*(*int32)(unsafe.Pointer(bp + 24)) = SQLITE_ROW
 23195  					}
 23196  				}
 23197  			}
 23198  		}
 23199  	}
 23200  
 23201  	return *(*int32)(unsafe.Pointer(bp + 24))
 23202  }
 23203  
 23204  func unionNext(tls *libc.TLS, cur uintptr) int32 {
 23205  	var rc int32
 23206  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_ROW {
 23207  		rc = doUnionNext(tls, cur)
 23208  	}
 23209  	return rc
 23210  }
 23211  
 23212  func unionColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23213  	var pCsr uintptr = cur
 23214  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 23215  	return SQLITE_OK
 23216  }
 23217  
 23218  func unionRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23219  	var pCsr uintptr = cur
 23220  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt, 0)
 23221  	return SQLITE_OK
 23222  }
 23223  
 23224  func unionEof(tls *libc.TLS, cur uintptr) int32 {
 23225  	var pCsr uintptr = cur
 23226  	return libc.Bool32((*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 23227  }
 23228  
 23229  func unionFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23230  	bp := tls.Alloc(108)
 23231  	defer tls.Free(108)
 23232  
 23233  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 23234  	var pCsr uintptr = pVtabCursor
 23235  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 23236  	var i int32
 23237  	var zSql uintptr = uintptr(0)
 23238  	var bZero int32 = 0
 23239  
 23240  	var iMin sqlite3_int64 = int64(-1) - (int64(0xffffffff) | int64(0x7fffffff)<<32)
 23241  	var iMax sqlite3_int64 = int64(0xffffffff) | int64(0x7fffffff)<<32
 23242  
 23243  	_ = idxStr
 23244  
 23245  	if idxNum == SQLITE_INDEX_CONSTRAINT_EQ {
 23246  		iMin = libc.AssignInt64(&iMax, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))))
 23247  	} else {
 23248  		if idxNum&(SQLITE_INDEX_CONSTRAINT_LE|SQLITE_INDEX_CONSTRAINT_LT) != 0 {
 23249  			iMax = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 23250  			if idxNum&SQLITE_INDEX_CONSTRAINT_LT != 0 {
 23251  				if iMax == int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) {
 23252  					bZero = 1
 23253  				} else {
 23254  					iMax--
 23255  				}
 23256  			}
 23257  		}
 23258  
 23259  		if idxNum&(SQLITE_INDEX_CONSTRAINT_GE|SQLITE_INDEX_CONSTRAINT_GT) != 0 {
 23260  			iMin = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(argc-1)*8)))
 23261  			if idxNum&SQLITE_INDEX_CONSTRAINT_GT != 0 {
 23262  				if iMin == int64(0xffffffff)|int64(0x7fffffff)<<32 {
 23263  					bZero = 1
 23264  				} else {
 23265  					iMin++
 23266  				}
 23267  			}
 23268  		}
 23269  	}
 23270  
 23271  	unionFinalizeCsrStmt(tls, pCsr)
 23272  	if bZero != 0 {
 23273  		return SQLITE_OK
 23274  	}
 23275  
 23276  	for i = 0; i < (*UnionTab)(unsafe.Pointer(pTab)).FnSrc; i++ {
 23277  		var pSrc uintptr = (*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr(i)*72
 23278  		if iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax || iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23279  			continue
 23280  		}
 23281  
 23282  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9326, libc.VaList(bp, zSql, func() uintptr {
 23283  			if zSql != 0 {
 23284  				return ts + 9360
 23285  			}
 23286  			return ts + 584
 23287  		}(), func() uintptr {
 23288  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23289  				return ts + 5624
 23290  			}
 23291  			return ts + 584
 23292  		}(), func() uintptr {
 23293  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23294  				return (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb
 23295  			}
 23296  			return ts + 584
 23297  		}(), func() uintptr {
 23298  			if (*UnionSrc)(unsafe.Pointer(pSrc)).FzDb != 0 {
 23299  				return ts + 5626
 23300  			}
 23301  			return ts + 584
 23302  		}(), (*UnionSrc)(unsafe.Pointer(pSrc)).FzTab))
 23303  		if zSql == uintptr(0) {
 23304  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 23305  			break
 23306  		}
 23307  
 23308  		if iMin == iMax {
 23309  			zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9372, libc.VaList(bp+48, zSql, iMin))
 23310  		} else {
 23311  			var zWhere uintptr = ts + 9392
 23312  			if iMin != int64(-1)-(int64(0xffffffff)|int64(0x7fffffff)<<32) && iMin > (*UnionSrc)(unsafe.Pointer(pSrc)).FiMin {
 23313  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9398, libc.VaList(bp+64, zSql, iMin))
 23314  				zWhere = ts + 9419
 23315  			}
 23316  			if iMax != int64(0xffffffff)|int64(0x7fffffff)<<32 && iMax < (*UnionSrc)(unsafe.Pointer(pSrc)).FiMax {
 23317  				zSql = sqlite3.Xsqlite3_mprintf(tls, ts+9423, libc.VaList(bp+80, zSql, zWhere, iMax))
 23318  			}
 23319  		}
 23320  
 23321  		if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23322  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiTab = i
 23323  			(*UnionCsr)(unsafe.Pointer(pCsr)).FiMaxRowid = iMax
 23324  			*(*int32)(unsafe.Pointer(bp + 104)) = unionOpenDatabase(tls, pTab, i, pTab+16)
 23325  			break
 23326  		}
 23327  	}
 23328  
 23329  	if zSql == uintptr(0) {
 23330  		return *(*int32)(unsafe.Pointer(bp + 104))
 23331  	} else {
 23332  		var db uintptr = func() uintptr {
 23333  			if (*UnionTab)(unsafe.Pointer(pTab)).FbSwarm != 0 {
 23334  				return (*UnionSrc)(unsafe.Pointer((*UnionTab)(unsafe.Pointer(pTab)).FaSrc + uintptr((*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)*72)).Fdb
 23335  			}
 23336  			return (*UnionTab)(unsafe.Pointer(pTab)).Fdb
 23337  		}()
 23338  		(*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt = unionPrepare(tls, bp+104, db, zSql, pTab+16)
 23339  		if (*UnionCsr)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 23340  			unionIncrRefcount(tls, pTab, (*UnionCsr)(unsafe.Pointer(pCsr)).FiTab)
 23341  		}
 23342  		sqlite3.Xsqlite3_free(tls, zSql)
 23343  	}
 23344  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 23345  		return *(*int32)(unsafe.Pointer(bp + 104))
 23346  	}
 23347  	return unionNext(tls, pVtabCursor)
 23348  }
 23349  
 23350  func unionBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23351  	var pTab uintptr = tab
 23352  	var iEq int32 = -1
 23353  	var iLt int32 = -1
 23354  	var iGt int32 = -1
 23355  	var i int32
 23356  
 23357  	for i = 0; i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; i++ {
 23358  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(i)*12
 23359  		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) {
 23360  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) {
 23361  			case SQLITE_INDEX_CONSTRAINT_EQ:
 23362  				iEq = i
 23363  				break
 23364  				fallthrough
 23365  			case SQLITE_INDEX_CONSTRAINT_LE:
 23366  				fallthrough
 23367  			case SQLITE_INDEX_CONSTRAINT_LT:
 23368  				iLt = i
 23369  				break
 23370  				fallthrough
 23371  			case SQLITE_INDEX_CONSTRAINT_GE:
 23372  				fallthrough
 23373  			case SQLITE_INDEX_CONSTRAINT_GT:
 23374  				iGt = i
 23375  				break
 23376  			}
 23377  		}
 23378  	}
 23379  
 23380  	if iEq >= 0 {
 23381  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = int64(1)
 23382  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxFlags = SQLITE_INDEX_SCAN_UNIQUE
 23383  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0
 23384  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = SQLITE_INDEX_CONSTRAINT_EQ
 23385  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).FargvIndex = 1
 23386  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iEq)*8)).Fomit = uint8(1)
 23387  	} else {
 23388  		var iCons int32 = 1
 23389  		var idxNum int32 = 0
 23390  		var nRow sqlite3_int64 = int64(1000000)
 23391  		if iLt >= 0 {
 23392  			nRow = nRow / int64(2)
 23393  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23394  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iLt)*8)).Fomit = uint8(1)
 23395  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iLt)*12)).Fop)
 23396  		}
 23397  		if iGt >= 0 {
 23398  			nRow = nRow / int64(2)
 23399  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).FargvIndex = libc.PostIncInt32(&iCons, 1)
 23400  			(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(iGt)*8)).Fomit = uint8(1)
 23401  			idxNum = idxNum | int32((*sqlite3_index_constraint)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint+uintptr(iGt)*12)).Fop)
 23402  		}
 23403  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = nRow
 23404  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 3.0 * float64(nRow)
 23405  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23406  	}
 23407  
 23408  	return SQLITE_OK
 23409  }
 23410  
 23411  func createUnionVtab(tls *libc.TLS, db uintptr) int32 {
 23412  	var rc int32
 23413  
 23414  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8921, uintptr(unsafe.Pointer(&unionModule)), uintptr(0))
 23415  	if rc == SQLITE_OK {
 23416  		rc = sqlite3.Xsqlite3_create_module(tls, db, ts+8911, uintptr(unsafe.Pointer(&unionModule)), db)
 23417  	}
 23418  	return rc
 23419  }
 23420  
 23421  var unionModule = sqlite3_module{
 23422  	FxCreate:     0,
 23423  	FxConnect:    0,
 23424  	FxBestIndex:  0,
 23425  	FxDisconnect: 0,
 23426  	FxDestroy:    0,
 23427  	FxOpen:       0,
 23428  	FxClose:      0,
 23429  	FxFilter:     0,
 23430  	FxNext:       0,
 23431  	FxEof:        0,
 23432  	FxColumn:     0,
 23433  	FxRowid:      0,
 23434  }
 23435  
 23436  func sqlite3_unionvtab_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23437  	var rc int32 = SQLITE_OK
 23438  	_ = pApi
 23439  
 23440  	_ = pzErrMsg
 23441  	rc = createUnionVtab(tls, db)
 23442  	return rc
 23443  }
 23444  
 23445  type wholenumber_cursor1 = struct {
 23446  	Fbase    sqlite3_vtab_cursor
 23447  	FiValue  sqlite3_int64
 23448  	FmxValue sqlite3_int64
 23449  }
 23450  
 23451  type wholenumber_cursor = wholenumber_cursor1
 23452  
 23453  func wholenumberConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 23454  	var pNew uintptr
 23455  	pNew = libc.AssignPtrUintptr(ppVtab, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(sqlite3_vtab{}))))
 23456  	if pNew == uintptr(0) {
 23457  		return SQLITE_NOMEM
 23458  	}
 23459  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+9441)
 23460  	sqlite3.Xsqlite3_vtab_config(tls, db, SQLITE_VTAB_INNOCUOUS, 0)
 23461  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(sqlite3_vtab{})))
 23462  	return SQLITE_OK
 23463  }
 23464  
 23465  func wholenumberDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 23466  	sqlite3.Xsqlite3_free(tls, pVtab)
 23467  	return SQLITE_OK
 23468  }
 23469  
 23470  func wholenumberOpen(tls *libc.TLS, p uintptr, ppCursor uintptr) int32 {
 23471  	var pCur uintptr
 23472  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(wholenumber_cursor{})))
 23473  	if pCur == uintptr(0) {
 23474  		return SQLITE_NOMEM
 23475  	}
 23476  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(wholenumber_cursor{})))
 23477  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 23478  	return SQLITE_OK
 23479  }
 23480  
 23481  func wholenumberClose(tls *libc.TLS, cur uintptr) int32 {
 23482  	sqlite3.Xsqlite3_free(tls, cur)
 23483  	return SQLITE_OK
 23484  }
 23485  
 23486  func wholenumberNext(tls *libc.TLS, cur uintptr) int32 {
 23487  	var pCur uintptr = cur
 23488  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue++
 23489  	return SQLITE_OK
 23490  }
 23491  
 23492  func wholenumberColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 23493  	var pCur uintptr = cur
 23494  	sqlite3.Xsqlite3_result_int64(tls, ctx, (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue)
 23495  	return SQLITE_OK
 23496  }
 23497  
 23498  func wholenumberRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 23499  	var pCur uintptr = cur
 23500  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue
 23501  	return SQLITE_OK
 23502  }
 23503  
 23504  func wholenumberEof(tls *libc.TLS, cur uintptr) int32 {
 23505  	var pCur uintptr = cur
 23506  	return libc.Bool32((*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue || (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue == int64(0))
 23507  }
 23508  
 23509  func wholenumberFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 23510  	var pCur uintptr = pVtabCursor
 23511  	var v sqlite3_int64
 23512  	var i int32 = 0
 23513  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = int64(1)
 23514  	(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = int64(0xffffffff)
 23515  	if idxNum&3 != 0 {
 23516  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv))) + sqlite3_int64(idxNum&1)
 23517  		if v > (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v <= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23518  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue = v
 23519  		}
 23520  		i++
 23521  	}
 23522  	if idxNum&12 != 0 {
 23523  		v = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) - sqlite3_int64(idxNum>>2&1)
 23524  		if v >= (*wholenumber_cursor)(unsafe.Pointer(pCur)).FiValue && v < (*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue {
 23525  			(*wholenumber_cursor)(unsafe.Pointer(pCur)).FmxValue = v
 23526  		}
 23527  	}
 23528  	return SQLITE_OK
 23529  }
 23530  
 23531  func wholenumberBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 23532  	var i int32
 23533  	var idxNum int32 = 0
 23534  	var argvIdx int32 = 1
 23535  	var ltIdx int32 = -1
 23536  	var gtIdx int32 = -1
 23537  	var pConstraint uintptr
 23538  	pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint
 23539  	i = 0
 23540  __1:
 23541  	if !(i < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint) {
 23542  		goto __3
 23543  	}
 23544  	{
 23545  		if int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) == 0 {
 23546  			goto __2
 23547  		}
 23548  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GT {
 23549  			idxNum = idxNum | 1
 23550  			ltIdx = i
 23551  		}
 23552  		if idxNum&3 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_GE {
 23553  			idxNum = idxNum | 2
 23554  			ltIdx = i
 23555  		}
 23556  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LT {
 23557  			idxNum = idxNum | 4
 23558  			gtIdx = i
 23559  		}
 23560  		if idxNum&12 == 0 && int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) == SQLITE_INDEX_CONSTRAINT_LE {
 23561  			idxNum = idxNum | 8
 23562  			gtIdx = i
 23563  		}
 23564  
 23565  	}
 23566  	goto __2
 23567  __2:
 23568  	i++
 23569  	pConstraint += 12
 23570  	goto __1
 23571  	goto __3
 23572  __3:
 23573  	;
 23574  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = idxNum
 23575  	if ltIdx >= 0 {
 23576  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).FargvIndex = libc.PostIncInt32(&argvIdx, 1)
 23577  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ltIdx)*8)).Fomit = uint8(1)
 23578  	}
 23579  	if gtIdx >= 0 {
 23580  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).FargvIndex = argvIdx
 23581  		(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(gtIdx)*8)).Fomit = uint8(1)
 23582  	}
 23583  	if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy == 1 &&
 23584  		int32((*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc) == 0 {
 23585  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 23586  	}
 23587  	if idxNum&12 == 0 {
 23588  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1e99
 23589  	} else if idxNum&3 == 0 {
 23590  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(5)
 23591  	} else {
 23592  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(1)
 23593  	}
 23594  	return SQLITE_OK
 23595  }
 23596  
 23597  var wholenumberModule = sqlite3_module{
 23598  	FxCreate:     0,
 23599  	FxConnect:    0,
 23600  	FxBestIndex:  0,
 23601  	FxDisconnect: 0,
 23602  	FxDestroy:    0,
 23603  	FxOpen:       0,
 23604  	FxClose:      0,
 23605  	FxFilter:     0,
 23606  	FxNext:       0,
 23607  	FxEof:        0,
 23608  	FxColumn:     0,
 23609  	FxRowid:      0,
 23610  }
 23611  
 23612  func sqlite3_wholenumber_init(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 23613  	var rc int32 = SQLITE_OK
 23614  	_ = pApi
 23615  
 23616  	rc = sqlite3.Xsqlite3_create_module(tls, db, ts+9463, uintptr(unsafe.Pointer(&wholenumberModule)), uintptr(0))
 23617  	return rc
 23618  }
 23619  
 23620  func test_rbu_delta(tls *libc.TLS, pCtx uintptr, nArg int32, apVal uintptr) {
 23621  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pCtx)
 23622  	var pScript uintptr
 23623  	var i int32
 23624  
 23625  	pScript = tcl.XTcl_NewObj(tls)
 23626  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 23627  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, ts+9475, -1))
 23628  	for i = 0; i < nArg; i++ {
 23629  		var pIn uintptr = *(*uintptr)(unsafe.Pointer(apVal + uintptr(i)*8))
 23630  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, pIn)
 23631  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, z, -1))
 23632  	}
 23633  
 23634  	if TCL_OK == tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_GLOBAL_ONLY) {
 23635  		var z uintptr = tcl.XTcl_GetStringResult(tls, interp)
 23636  		sqlite3.Xsqlite3_result_text(tls, pCtx, z, -1, libc.UintptrFromInt32(-1))
 23637  	} else {
 23638  		tcl.XTcl_BackgroundError(tls, interp)
 23639  	}
 23640  
 23641  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 23642  		var _objPtr uintptr = pScript
 23643  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 23644  			tcl.XTclFreeObj(tls, _objPtr)
 23645  		}
 23646  	}
 23647  }
 23648  
 23649  func test_sqlite3rbu_cmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23650  	bp := tls.Alloc(496)
 23651  	defer tls.Free(496)
 23652  
 23653  	var ret int32 = TCL_OK
 23654  	var pRbu uintptr = clientData
 23655  	*(*[14]RbuCmd)(unsafe.Pointer(bp + 24)) = [14]RbuCmd{
 23656  		{FzName: ts + 9485, FnArg: 2, FzUsage: ts + 584},
 23657  		{FzName: ts + 9490, FnArg: 2, FzUsage: ts + 584},
 23658  		{FzName: ts + 9496, FnArg: 2, FzUsage: ts + 584},
 23659  		{FzName: ts + 9513, FnArg: 2, FzUsage: ts + 584},
 23660  		{FzName: ts + 9523, FnArg: 3, FzUsage: ts + 9535},
 23661  		{FzName: ts + 9539, FnArg: 2, FzUsage: ts + 584},
 23662  		{FzName: ts + 9551, FnArg: 3, FzUsage: ts + 9554},
 23663  		{FzName: ts + 9558, FnArg: 2, FzUsage: ts + 584},
 23664  		{FzName: ts + 9564, FnArg: 2, FzUsage: ts + 584},
 23665  		{FzName: ts + 9573, FnArg: 2, FzUsage: ts + 584},
 23666  		{FzName: ts + 9588, FnArg: 3, FzUsage: ts + 9604},
 23667  		{FzName: ts + 9610, FnArg: 2, FzUsage: ts + 584},
 23668  		{FzName: ts + 9620, FnArg: 3, FzUsage: ts + 9535},
 23669  		{},
 23670  	}
 23671  
 23672  	if objc < 2 {
 23673  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9631)
 23674  		return TCL_ERROR
 23675  	}
 23676  	ret = tcl.XTcl_GetIndexFromObjStruct(tls,
 23677  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24, int32(unsafe.Sizeof(RbuCmd{})), ts+9638, 0, bp+360)
 23678  	if ret != 0 {
 23679  		return TCL_ERROR
 23680  	}
 23681  	if objc != (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FnArg {
 23682  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, (*RbuCmd)(unsafe.Pointer(bp+24+uintptr(*(*int32)(unsafe.Pointer(bp + 360)))*24)).FzUsage)
 23683  		return TCL_ERROR
 23684  	}
 23685  
 23686  	switch *(*int32)(unsafe.Pointer(bp + 360)) {
 23687  	case 0:
 23688  		{
 23689  			var rc int32 = sqlite3.Xsqlite3rbu_step(tls, pRbu)
 23690  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23691  			break
 23692  
 23693  		}
 23694  
 23695  	case 9:
 23696  		fallthrough
 23697  	case 1:
 23698  		{
 23699  			*(*uintptr)(unsafe.Pointer(bp + 368)) = uintptr(0)
 23700  			var rc int32
 23701  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 23702  			if *(*int32)(unsafe.Pointer(bp + 360)) == 1 {
 23703  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, bp+368)
 23704  			} else {
 23705  				rc = sqlite3.Xsqlite3rbu_close(tls, pRbu, uintptr(0))
 23706  			}
 23707  			if rc == SQLITE_OK || rc == SQLITE_DONE {
 23708  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23709  
 23710  			} else {
 23711  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23712  				if *(*uintptr)(unsafe.Pointer(bp + 368)) != 0 {
 23713  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, *(*uintptr)(unsafe.Pointer(bp + 368)), 0))
 23714  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 368)))
 23715  				}
 23716  				ret = TCL_ERROR
 23717  			}
 23718  			break
 23719  
 23720  		}
 23721  
 23722  	case 2:
 23723  		{
 23724  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, 0)
 23725  			var rc int32 = sqlite3.Xsqlite3_create_function(tls,
 23726  				db, ts+9475, -1, SQLITE_UTF8, interp, *(*uintptr)(unsafe.Pointer(&struct {
 23727  					f func(*libc.TLS, uintptr, int32, uintptr)
 23728  				}{test_rbu_delta})), uintptr(0), uintptr(0))
 23729  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23730  			ret = func() int32 {
 23731  				if rc == SQLITE_OK {
 23732  					return TCL_OK
 23733  				}
 23734  				return TCL_ERROR
 23735  			}()
 23736  			break
 23737  
 23738  		}
 23739  
 23740  	case 3:
 23741  		{
 23742  			var rc int32 = sqlite3.Xsqlite3rbu_savestate(tls, pRbu)
 23743  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23744  			ret = func() int32 {
 23745  				if rc == SQLITE_OK {
 23746  					return TCL_OK
 23747  				}
 23748  				return TCL_ERROR
 23749  			}()
 23750  			break
 23751  
 23752  		}
 23753  
 23754  	case 12:
 23755  		fallthrough
 23756  	case 4:
 23757  		{
 23758  			var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 360)) == 12))
 23759  			var rc int32 = sqlite3.Xsqlite3_exec(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0), uintptr(0), uintptr(0))
 23760  			if rc != SQLITE_OK {
 23761  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, db), -1))
 23762  				ret = TCL_ERROR
 23763  			}
 23764  			break
 23765  
 23766  		}
 23767  
 23768  	case 5:
 23769  		{
 23770  			var pObj uintptr
 23771  			sqlite3.Xsqlite3rbu_bp_progress(tls, pRbu, bp+376, bp+380)
 23772  
 23773  			pObj = tcl.XTcl_NewObj(tls)
 23774  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 376))))
 23775  			tcl.XTcl_ListObjAppendElement(tls, interp, pObj, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 380))))
 23776  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 23777  			break
 23778  
 23779  		}
 23780  
 23781  	case 6:
 23782  		{
 23783  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+384) != 0 {
 23784  				ret = TCL_ERROR
 23785  			} else {
 23786  				var db uintptr = sqlite3.Xsqlite3rbu_db(tls, pRbu, *(*int32)(unsafe.Pointer(bp + 384)))
 23787  				if sqlite3TestMakePointerStr(tls, interp, bp+388, db) != 0 {
 23788  					ret = TCL_ERROR
 23789  				} else {
 23790  					tcl.XTcl_SetResult(tls, interp, bp+388, uintptr(1))
 23791  				}
 23792  			}
 23793  			break
 23794  
 23795  		}
 23796  	case 7:
 23797  		{
 23798  			*(*[6]uintptr)(unsafe.Pointer(bp + 440)) = [6]uintptr{uintptr(0), ts + 9649, ts + 9653, ts + 9658, ts + 9669, ts + 9674}
 23799  			var eState int32 = sqlite3.Xsqlite3rbu_state(tls, pRbu)
 23800  
 23801  			tcl.XTcl_SetResult(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 440 + uintptr(eState)*8)), uintptr(0))
 23802  			break
 23803  
 23804  		}
 23805  	case 8:
 23806  		{
 23807  			var nStep sqlite3_int64 = sqlite3.Xsqlite3rbu_progress(tls, pRbu)
 23808  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nStep))
 23809  			break
 23810  
 23811  		}
 23812  
 23813  	case 10:
 23814  		{
 23815  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+488) != 0 {
 23816  				ret = TCL_ERROR
 23817  			} else {
 23818  				*(*sqlite3_int64)(unsafe.Pointer(bp + 488)) = sqlite3.Xsqlite3rbu_temp_size_limit(tls, pRbu, *(*sqlite3_int64)(unsafe.Pointer(bp + 488)))
 23819  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 488))))
 23820  			}
 23821  			break
 23822  
 23823  		}
 23824  	case 11:
 23825  		{
 23826  			var sz sqlite3_int64 = sqlite3.Xsqlite3rbu_temp_size(tls, pRbu)
 23827  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sz))
 23828  			break
 23829  
 23830  		}
 23831  
 23832  	default:
 23833  		break
 23834  	}
 23835  
 23836  	return ret
 23837  }
 23838  
 23839  type RbuCmd = struct {
 23840  	FzName       uintptr
 23841  	FnArg        int32
 23842  	F__ccgo_pad1 [4]byte
 23843  	FzUsage      uintptr
 23844  }
 23845  
 23846  func test_sqlite3rbu(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23847  	var pRbu uintptr = uintptr(0)
 23848  	var zCmd uintptr
 23849  	var zTarget uintptr
 23850  	var zRbu uintptr
 23851  	var zStateDb uintptr = uintptr(0)
 23852  
 23853  	if objc != 4 && objc != 5 {
 23854  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9680)
 23855  		return TCL_ERROR
 23856  	}
 23857  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23858  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 23859  	zRbu = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 23860  	if objc == 5 {
 23861  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 23862  	}
 23863  
 23864  	pRbu = sqlite3.Xsqlite3rbu_open(tls, zTarget, zRbu, zStateDb)
 23865  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 23866  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 23867  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 23868  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23869  	return TCL_OK
 23870  }
 23871  
 23872  func test_sqlite3rbu_vacuum(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23873  	var pRbu uintptr = uintptr(0)
 23874  	var zCmd uintptr
 23875  	var zTarget uintptr
 23876  	var zStateDb uintptr = uintptr(0)
 23877  
 23878  	if objc != 3 && objc != 4 {
 23879  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9713)
 23880  		return TCL_ERROR
 23881  	}
 23882  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23883  	zTarget = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 23884  	if objc == 4 {
 23885  		zStateDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 23886  	}
 23887  	if zStateDb != 0 && int32(*(*int8)(unsafe.Pointer(zStateDb))) == 0 {
 23888  		zStateDb = uintptr(0)
 23889  	}
 23890  
 23891  	pRbu = sqlite3.Xsqlite3rbu_vacuum(tls, zTarget, zStateDb)
 23892  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 23893  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 23894  	}{test_sqlite3rbu_cmd})), pRbu, uintptr(0))
 23895  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23896  	return TCL_OK
 23897  }
 23898  
 23899  func test_sqlite3rbu_create_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23900  	var zName uintptr
 23901  	var zParent uintptr
 23902  	var rc int32
 23903  
 23904  	if objc != 3 && objc != 4 {
 23905  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9739)
 23906  		return TCL_ERROR
 23907  	}
 23908  
 23909  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 23910  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)))
 23911  	if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 23912  		zParent = uintptr(0)
 23913  	}
 23914  
 23915  	rc = sqlite3.Xsqlite3rbu_create_vfs(tls, zName, zParent)
 23916  	if rc != SQLITE_OK {
 23917  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 23918  		return TCL_ERROR
 23919  	} else if objc == 4 {
 23920  		var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, zName)
 23921  		sqlite3.Xsqlite3_vfs_register(tls, pVfs, 1)
 23922  	}
 23923  
 23924  	tcl.XTcl_ResetResult(tls, interp)
 23925  	return TCL_OK
 23926  }
 23927  
 23928  func test_sqlite3rbu_destroy_vfs(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23929  	var zName uintptr
 23930  
 23931  	if objc != 2 {
 23932  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 23933  		return TCL_ERROR
 23934  	}
 23935  
 23936  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 23937  	sqlite3.Xsqlite3rbu_destroy_vfs(tls, zName)
 23938  	return TCL_OK
 23939  }
 23940  
 23941  func test_sqlite3rbu_internal_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 23942  	bp := tls.Alloc(16)
 23943  	defer tls.Free(16)
 23944  
 23945  	var db uintptr
 23946  
 23947  	if objc != 1 {
 23948  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 23949  		return TCL_ERROR
 23950  	}
 23951  
 23952  	db = sqlite3.Xsqlite3rbu_db(tls, uintptr(0), 0)
 23953  	if db != uintptr(0) {
 23954  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9767, 0))
 23955  		return TCL_ERROR
 23956  	}
 23957  
 23958  	return TCL_OK
 23959  }
 23960  
 23961  func SqliteRbu_Init(tls *libc.TLS, interp uintptr) int32 {
 23962  	var i int32
 23963  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd))/uint64(unsafe.Sizeof(struct {
 23964  		FzName uintptr
 23965  		FxProc uintptr
 23966  	}{})); i++ {
 23967  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd[i].FzName, aObjCmd[i].FxProc, uintptr(0), uintptr(0))
 23968  	}
 23969  	return TCL_OK
 23970  }
 23971  
 23972  var aObjCmd = [5]struct {
 23973  	FzName uintptr
 23974  	FxProc uintptr
 23975  }{
 23976  	{FzName: ts + 9790, FxProc: 0},
 23977  	{FzName: ts + 9801, FxProc: 0},
 23978  	{FzName: ts + 9819, FxProc: 0},
 23979  	{FzName: ts + 9841, FxProc: 0},
 23980  	{FzName: ts + 9864, FxProc: 0},
 23981  }
 23982  
 23983  type sqlite31 = sqlite32
 23984  
 23985  type sqlite3_str = sqlite3_str1
 23986  
 23987  type int_least8_t = int8
 23988  type uint_least8_t = uint8
 23989  type int_least16_t = int16
 23990  type uint_least16_t = uint16
 23991  type int_least32_t = int32
 23992  type uint_least32_t = uint32
 23993  type int_least64_t = int64
 23994  type uint_least64_t = uint64
 23995  
 23996  type int_fast8_t = int32
 23997  type uint_fast8_t = uint32
 23998  type int_fast16_t = int32
 23999  type uint_fast16_t = uint32
 24000  type int_fast32_t = int32
 24001  type uint_fast32_t = uint32
 24002  type int_fast64_t = int64
 24003  type uint_fast64_t = uint64
 24004  
 24005  type uintptr_t = uint64
 24006  
 24007  type intmax_t = int64
 24008  type uintmax_t = uint64
 24009  
 24010  type imaxdiv_t = struct {
 24011  	Fquot intmax_t
 24012  	Frem  intmax_t
 24013  }
 24014  
 24015  type Hash1 = struct {
 24016  	Fhtsize uint32
 24017  	Fcount  uint32
 24018  	Ffirst  uintptr
 24019  	Fht     uintptr
 24020  }
 24021  
 24022  type Hash = Hash1
 24023  type HashElem1 = struct {
 24024  	Fnext uintptr
 24025  	Fprev uintptr
 24026  	Fdata uintptr
 24027  	FpKey uintptr
 24028  }
 24029  
 24030  type HashElem = HashElem1
 24031  
 24032  type _ht = struct {
 24033  	Fcount       uint32
 24034  	F__ccgo_pad1 [4]byte
 24035  	Fchain       uintptr
 24036  }
 24037  
 24038  type wint_t = int32
 24039  
 24040  type mbstate_t = struct {
 24041  	F__ccgo_pad1 [0]uint64
 24042  	F__mbstate8  [128]int8
 24043  }
 24044  
 24045  type max_align_t = struct {
 24046  	F__max_align_ll int64
 24047  	F__max_align_ld float64
 24048  }
 24049  type i16 = int16_t
 24050  type i8 = int8_t
 24051  
 24052  type tRowcnt = u32
 24053  
 24054  type LogEst = int16_t
 24055  
 24056  type uptr = uintptr_t
 24057  
 24058  type BusyHandler1 = struct {
 24059  	FxBusyHandler uintptr
 24060  	FpBusyArg     uintptr
 24061  	FnBusy        int32
 24062  	F__ccgo_pad1  [4]byte
 24063  }
 24064  
 24065  type BusyHandler = BusyHandler1
 24066  
 24067  type AggInfo1 = struct {
 24068  	FdirectMode     u8
 24069  	FuseSortingIdx  u8
 24070  	F__ccgo_pad1    [2]byte
 24071  	FsortingIdx     int32
 24072  	FsortingIdxPTab int32
 24073  	FnSortingColumn int32
 24074  	FmnReg          int32
 24075  	FmxReg          int32
 24076  	FpGroupBy       uintptr
 24077  	FaCol           uintptr
 24078  	FnColumn        int32
 24079  	FnAccumulator   int32
 24080  	FaFunc          uintptr
 24081  	FnFunc          int32
 24082  	FselId          u32
 24083  }
 24084  
 24085  type AggInfo = AggInfo1
 24086  type AuthContext1 = struct {
 24087  	FzAuthContext uintptr
 24088  	FpParse       uintptr
 24089  }
 24090  
 24091  type AuthContext = AuthContext1
 24092  type AutoincInfo1 = struct {
 24093  	FpNext  uintptr
 24094  	FpTab   uintptr
 24095  	FiDb    int32
 24096  	FregCtr int32
 24097  }
 24098  
 24099  type AutoincInfo = AutoincInfo1
 24100  type CollSeq1 = struct {
 24101  	FzName       uintptr
 24102  	Fenc         u8
 24103  	F__ccgo_pad1 [7]byte
 24104  	FpUser       uintptr
 24105  	FxCmp        uintptr
 24106  	FxDel        uintptr
 24107  }
 24108  
 24109  type CollSeq = CollSeq1
 24110  type Column1 = struct {
 24111  	FzCnName     uintptr
 24112  	FnotNull     uint8
 24113  	F__ccgo_pad1 [1]byte
 24114  	Faffinity    int8
 24115  	FszEst       u8
 24116  	FhName       u8
 24117  	F__ccgo_pad2 [1]byte
 24118  	FiDflt       u16
 24119  	FcolFlags    u16
 24120  	F__ccgo_pad3 [6]byte
 24121  }
 24122  
 24123  type Column = Column1
 24124  type Cte1 = struct {
 24125  	FzName       uintptr
 24126  	FpCols       uintptr
 24127  	FpSelect     uintptr
 24128  	FzCteErr     uintptr
 24129  	FpUse        uintptr
 24130  	FeM10d       u8
 24131  	F__ccgo_pad1 [7]byte
 24132  }
 24133  
 24134  type Cte = Cte1
 24135  type CteUse1 = struct {
 24136  	FnUse        int32
 24137  	FaddrM9e     int32
 24138  	FregRtn      int32
 24139  	FiCur        int32
 24140  	FnRowEst     LogEst
 24141  	FeM10d       u8
 24142  	F__ccgo_pad1 [1]byte
 24143  }
 24144  
 24145  type CteUse = CteUse1
 24146  type Db1 = struct {
 24147  	FzDbSName     uintptr
 24148  	FpBt          uintptr
 24149  	Fsafety_level u8
 24150  	FbSyncSet     u8
 24151  	F__ccgo_pad1  [6]byte
 24152  	FpSchema      uintptr
 24153  }
 24154  
 24155  type Db = Db1
 24156  type DbFixer1 = struct {
 24157  	FpParse      uintptr
 24158  	Fw           Walker
 24159  	FpSchema     uintptr
 24160  	FbTemp       u8
 24161  	F__ccgo_pad1 [7]byte
 24162  	FzDb         uintptr
 24163  	FzType       uintptr
 24164  	FpName       uintptr
 24165  }
 24166  
 24167  type DbFixer = DbFixer1
 24168  type Schema1 = struct {
 24169  	Fschema_cookie int32
 24170  	FiGeneration   int32
 24171  	FtblHash       Hash
 24172  	FidxHash       Hash
 24173  	FtrigHash      Hash
 24174  	FfkeyHash      Hash
 24175  	FpSeqTab       uintptr
 24176  	Ffile_format   u8
 24177  	Fenc           u8
 24178  	FschemaFlags   u16
 24179  	Fcache_size    int32
 24180  }
 24181  
 24182  type Schema = Schema1
 24183  type Expr1 = struct {
 24184  	Fop          u8
 24185  	FaffExpr     int8
 24186  	Fop2         u8
 24187  	F__ccgo_pad1 [1]byte
 24188  	Fflags       u32
 24189  	Fu           struct{ FzToken uintptr }
 24190  	FpLeft       uintptr
 24191  	FpRight      uintptr
 24192  	Fx           struct{ FpList uintptr }
 24193  	FnHeight     int32
 24194  	FiTable      int32
 24195  	FiColumn     ynVar
 24196  	FiAgg        i16
 24197  	Fw           struct{ FiJoin int32 }
 24198  	FpAggInfo    uintptr
 24199  	Fy           struct{ FpTab uintptr }
 24200  }
 24201  
 24202  type Expr = Expr1
 24203  type ExprList1 = struct {
 24204  	FnExpr  int32
 24205  	FnAlloc int32
 24206  	Fa      [1]struct {
 24207  		FpExpr  uintptr
 24208  		FzEName uintptr
 24209  		Ffg     struct {
 24210  			F__ccgo_pad1 [0]uint32
 24211  			FsortFlags   u8
 24212  			F__ccgo_pad2 [3]byte
 24213  			FeEName      uint16
 24214  			F__ccgo_pad3 [2]byte
 24215  		}
 24216  		Fu struct {
 24217  			F__ccgo_pad1 [0]uint32
 24218  			Fx           struct {
 24219  				FiOrderByCol u16
 24220  				FiAlias      u16
 24221  			}
 24222  		}
 24223  		F__ccgo_pad1 [4]byte
 24224  	}
 24225  }
 24226  
 24227  type ExprList = ExprList1
 24228  type FKey1 = struct {
 24229  	FpFrom       uintptr
 24230  	FpNextFrom   uintptr
 24231  	FzTo         uintptr
 24232  	FpNextTo     uintptr
 24233  	FpPrevTo     uintptr
 24234  	FnCol        int32
 24235  	FisDeferred  u8
 24236  	FaAction     [2]u8
 24237  	F__ccgo_pad1 [1]byte
 24238  	FapTrigger   [2]uintptr
 24239  	FaCol        [1]struct {
 24240  		FiFrom       int32
 24241  		F__ccgo_pad1 [4]byte
 24242  		FzCol        uintptr
 24243  	}
 24244  }
 24245  
 24246  type FKey = FKey1
 24247  type FuncDestructor1 = struct {
 24248  	FnRef        int32
 24249  	F__ccgo_pad1 [4]byte
 24250  	FxDestroy    uintptr
 24251  	FpUserData   uintptr
 24252  }
 24253  
 24254  type FuncDestructor = FuncDestructor1
 24255  type FuncDef1 = struct {
 24256  	FnArg        i8
 24257  	F__ccgo_pad1 [3]byte
 24258  	FfuncFlags   u32
 24259  	FpUserData   uintptr
 24260  	FpNext       uintptr
 24261  	FxSFunc      uintptr
 24262  	FxFinalize   uintptr
 24263  	FxValue      uintptr
 24264  	FxInverse    uintptr
 24265  	FzName       uintptr
 24266  	Fu           struct{ FpHash uintptr }
 24267  }
 24268  
 24269  type FuncDef = FuncDef1
 24270  type FuncDefHash1 = struct{ Fa [23]uintptr }
 24271  
 24272  type FuncDefHash = FuncDefHash1
 24273  type IdList1 = struct {
 24274  	FnId         int32
 24275  	FeU4         u8
 24276  	F__ccgo_pad1 [3]byte
 24277  	Fa           [1]struct {
 24278  		FzName uintptr
 24279  		Fu4    struct {
 24280  			F__ccgo_pad1 [0]uint64
 24281  			Fidx         int32
 24282  			F__ccgo_pad2 [4]byte
 24283  		}
 24284  	}
 24285  }
 24286  
 24287  type IdList = IdList1
 24288  type Index1 = struct {
 24289  	FzName         uintptr
 24290  	FaiColumn      uintptr
 24291  	FaiRowLogEst   uintptr
 24292  	FpTable        uintptr
 24293  	FzColAff       uintptr
 24294  	FpNext         uintptr
 24295  	FpSchema       uintptr
 24296  	FaSortOrder    uintptr
 24297  	FazColl        uintptr
 24298  	FpPartIdxWhere uintptr
 24299  	FaColExpr      uintptr
 24300  	Ftnum          Pgno
 24301  	FszIdxRow      LogEst
 24302  	FnKeyCol       u16
 24303  	FnColumn       u16
 24304  	FonError       u8
 24305  	F__ccgo_pad1   [1]byte
 24306  	FidxType       uint16
 24307  	F__ccgo_pad2   [2]byte
 24308  	FnSample       int32
 24309  	FnSampleCol    int32
 24310  	FaAvgEq        uintptr
 24311  	FaSample       uintptr
 24312  	FaiRowEst      uintptr
 24313  	FnRowEst0      tRowcnt
 24314  	F__ccgo_pad3   [4]byte
 24315  	FcolNotIdxed   Bitmask
 24316  }
 24317  
 24318  type Index = Index1
 24319  type IndexSample1 = struct {
 24320  	Fp           uintptr
 24321  	Fn           int32
 24322  	F__ccgo_pad1 [4]byte
 24323  	FanEq        uintptr
 24324  	FanLt        uintptr
 24325  	FanDLt       uintptr
 24326  }
 24327  
 24328  type IndexSample = IndexSample1
 24329  type KeyInfo1 = struct {
 24330  	FnRef        u32
 24331  	Fenc         u8
 24332  	F__ccgo_pad1 [1]byte
 24333  	FnKeyField   u16
 24334  	FnAllField   u16
 24335  	F__ccgo_pad2 [6]byte
 24336  	Fdb          uintptr
 24337  	FaSortFlags  uintptr
 24338  	FaColl       [1]uintptr
 24339  }
 24340  
 24341  type KeyInfo = KeyInfo1
 24342  type Lookaside1 = struct {
 24343  	FbDisable    u32
 24344  	Fsz          u16
 24345  	FszTrue      u16
 24346  	FbMalloced   u8
 24347  	F__ccgo_pad1 [3]byte
 24348  	FnSlot       u32
 24349  	FanStat      [3]u32
 24350  	F__ccgo_pad2 [4]byte
 24351  	FpInit       uintptr
 24352  	FpFree       uintptr
 24353  	FpSmallInit  uintptr
 24354  	FpSmallFree  uintptr
 24355  	FpMiddle     uintptr
 24356  	FpStart      uintptr
 24357  	FpEnd        uintptr
 24358  }
 24359  
 24360  type Lookaside = Lookaside1
 24361  type LookasideSlot1 = struct{ FpNext uintptr }
 24362  
 24363  type LookasideSlot = LookasideSlot1
 24364  type Module1 = struct {
 24365  	FpModule     uintptr
 24366  	FzName       uintptr
 24367  	FnRefModule  int32
 24368  	F__ccgo_pad1 [4]byte
 24369  	FpAux        uintptr
 24370  	FxDestroy    uintptr
 24371  	FpEpoTab     uintptr
 24372  }
 24373  
 24374  type Module = Module1
 24375  type NameContext1 = struct {
 24376  	FpParse      uintptr
 24377  	FpSrcList    uintptr
 24378  	FuNC         struct{ FpEList uintptr }
 24379  	FpNext       uintptr
 24380  	FnRef        int32
 24381  	FnNcErr      int32
 24382  	FncFlags     int32
 24383  	F__ccgo_pad1 [4]byte
 24384  	FpWinSelect  uintptr
 24385  }
 24386  
 24387  type NameContext = NameContext1
 24388  type OnOrUsing1 = struct {
 24389  	FpOn    uintptr
 24390  	FpUsing uintptr
 24391  }
 24392  
 24393  type OnOrUsing = OnOrUsing1
 24394  type Parse1 = struct {
 24395  	Fdb               uintptr
 24396  	FzErrMsg          uintptr
 24397  	FpVdbe            uintptr
 24398  	Frc               int32
 24399  	FcolNamesSet      u8
 24400  	FcheckSchema      u8
 24401  	Fnested           u8
 24402  	FnTempReg         u8
 24403  	FisMultiWrite     u8
 24404  	FmayAbort         u8
 24405  	FhasCompound      u8
 24406  	FokConstFactor    u8
 24407  	FdisableLookaside u8
 24408  	FdisableVtab      u8
 24409  	FwithinRJSubrtn   u8
 24410  	F__ccgo_pad1      [1]byte
 24411  	FnRangeReg        int32
 24412  	FiRangeReg        int32
 24413  	FnErr             int32
 24414  	FnTab             int32
 24415  	FnMem             int32
 24416  	FszOpAlloc        int32
 24417  	FiSelfTab         int32
 24418  	FnLabel           int32
 24419  	FnLabelAlloc      int32
 24420  	F__ccgo_pad2      [4]byte
 24421  	FaLabel           uintptr
 24422  	FpConstExpr       uintptr
 24423  	FconstraintName   Token
 24424  	FwriteMask        yDbMask
 24425  	FcookieMask       yDbMask
 24426  	FregRowid         int32
 24427  	FregRoot          int32
 24428  	FnMaxArg          int32
 24429  	FnSelect          int32
 24430  	FnTableLock       int32
 24431  	F__ccgo_pad3      [4]byte
 24432  	FaTableLock       uintptr
 24433  	FpAinc            uintptr
 24434  	FpToplevel        uintptr
 24435  	FpTriggerTab      uintptr
 24436  	FpTriggerPrg      uintptr
 24437  	FpCleanup         uintptr
 24438  	Fu1               struct {
 24439  		F__ccgo_pad1 [0]uint64
 24440  		FaddrCrTab   int32
 24441  		F__ccgo_pad2 [4]byte
 24442  	}
 24443  	FnQueryLoop      u32
 24444  	Foldmask         u32
 24445  	Fnewmask         u32
 24446  	FeTriggerOp      u8
 24447  	FbReturning      u8
 24448  	FeOrconf         u8
 24449  	FdisableTriggers u8
 24450  	FaTempReg        [8]int32
 24451  	FpOuterParse     uintptr
 24452  	FsNameToken      Token
 24453  	FsLastToken      Token
 24454  	FnVar            ynVar
 24455  	FiPkSortOrder    u8
 24456  	Fexplain         u8
 24457  	FeParseMode      u8
 24458  	F__ccgo_pad4     [3]byte
 24459  	FnVtabLock       int32
 24460  	FnHeight         int32
 24461  	FaddrExplain     int32
 24462  	F__ccgo_pad5     [4]byte
 24463  	FpVList          uintptr
 24464  	FpReprepare      uintptr
 24465  	FzTail           uintptr
 24466  	FpNewTable       uintptr
 24467  	FpNewIndex       uintptr
 24468  	FpNewTrigger     uintptr
 24469  	FzAuthContext    uintptr
 24470  	FsArg            Token
 24471  	FapVtabLock      uintptr
 24472  	FpWith           uintptr
 24473  	FpRename         uintptr
 24474  }
 24475  
 24476  type Parse = Parse1
 24477  type ParseCleanup1 = struct {
 24478  	FpNext    uintptr
 24479  	FpPtr     uintptr
 24480  	FxCleanup uintptr
 24481  }
 24482  
 24483  type ParseCleanup = ParseCleanup1
 24484  type PreUpdate1 = struct {
 24485  	Fv            uintptr
 24486  	FpCsr         uintptr
 24487  	Fop           int32
 24488  	F__ccgo_pad1  [4]byte
 24489  	FaRecord      uintptr
 24490  	Fkeyinfo      KeyInfo
 24491  	FpUnpacked    uintptr
 24492  	FpNewUnpacked uintptr
 24493  	FiNewReg      int32
 24494  	FiBlobWrite   int32
 24495  	FiKey1        i64
 24496  	FiKey2        i64
 24497  	FaNew         uintptr
 24498  	FpTab         uintptr
 24499  	FpPk          uintptr
 24500  }
 24501  
 24502  type PrintfArguments1 = struct {
 24503  	FnArg  int32
 24504  	FnUsed int32
 24505  	FapArg uintptr
 24506  }
 24507  
 24508  type PrintfArguments = PrintfArguments1
 24509  type Returning1 = struct {
 24510  	FpParse      uintptr
 24511  	FpReturnEL   uintptr
 24512  	FretTrig     Trigger
 24513  	FretTStep    TriggerStep
 24514  	FiRetCur     int32
 24515  	FnRetCol     int32
 24516  	FiRetReg     int32
 24517  	F__ccgo_pad1 [4]byte
 24518  }
 24519  
 24520  type Returning = Returning1
 24521  type Savepoint1 = struct {
 24522  	FzName            uintptr
 24523  	FnDeferredCons    i64
 24524  	FnDeferredImmCons i64
 24525  	FpNext            uintptr
 24526  }
 24527  
 24528  type Savepoint = Savepoint1
 24529  type Select1 = struct {
 24530  	Fop           u8
 24531  	F__ccgo_pad1  [1]byte
 24532  	FnSelectRow   LogEst
 24533  	FselFlags     u32
 24534  	FiLimit       int32
 24535  	FiOffset      int32
 24536  	FselId        u32
 24537  	FaddrOpenEphm [2]int32
 24538  	F__ccgo_pad2  [4]byte
 24539  	FpEList       uintptr
 24540  	FpSrc         uintptr
 24541  	FpWhere       uintptr
 24542  	FpGroupBy     uintptr
 24543  	FpHaving      uintptr
 24544  	FpOrderBy     uintptr
 24545  	FpPrior       uintptr
 24546  	FpNext        uintptr
 24547  	FpLimit       uintptr
 24548  	FpWith        uintptr
 24549  	FpWin         uintptr
 24550  	FpWinDefn     uintptr
 24551  }
 24552  
 24553  type Select = Select1
 24554  type SelectDest1 = struct {
 24555  	FeDest       u8
 24556  	F__ccgo_pad1 [3]byte
 24557  	FiSDParm     int32
 24558  	FiSDParm2    int32
 24559  	FiSdst       int32
 24560  	FnSdst       int32
 24561  	F__ccgo_pad2 [4]byte
 24562  	FzAffSdst    uintptr
 24563  	FpOrderBy    uintptr
 24564  }
 24565  
 24566  type SelectDest = SelectDest1
 24567  type SrcItem1 = struct {
 24568  	FpSchema     uintptr
 24569  	FzDatabase   uintptr
 24570  	FzName       uintptr
 24571  	FzAlias      uintptr
 24572  	FpTab        uintptr
 24573  	FpSelect     uintptr
 24574  	FaddrFillSub int32
 24575  	FregReturn   int32
 24576  	FregResult   int32
 24577  	Ffg          struct {
 24578  		F__ccgo_pad1 [0]uint32
 24579  		Fjointype    u8
 24580  		F__ccgo_pad2 [3]byte
 24581  		FnotIndexed  uint16
 24582  		F__ccgo_pad3 [2]byte
 24583  	}
 24584  	FiCursor int32
 24585  	Fu3      struct{ FpOn uintptr }
 24586  	FcolUsed Bitmask
 24587  	Fu1      struct{ FzIndexedBy uintptr }
 24588  	Fu2      struct{ FpIBIndex uintptr }
 24589  }
 24590  
 24591  type SrcItem = SrcItem1
 24592  type SrcList1 = struct {
 24593  	FnSrc   int32
 24594  	FnAlloc u32
 24595  	Fa      [1]SrcItem
 24596  }
 24597  
 24598  type SrcList = SrcList1
 24599  type StrAccum = sqlite3_str1
 24600  type Table1 = struct {
 24601  	FzName      uintptr
 24602  	FaCol       uintptr
 24603  	FpIndex     uintptr
 24604  	FzColAff    uintptr
 24605  	FpCheck     uintptr
 24606  	Ftnum       Pgno
 24607  	FnTabRef    u32
 24608  	FtabFlags   u32
 24609  	FiPKey      i16
 24610  	FnCol       i16
 24611  	FnNVCol     i16
 24612  	FnRowLogEst LogEst
 24613  	FszTabRow   LogEst
 24614  	FkeyConf    u8
 24615  	FeTabType   u8
 24616  	Fu          struct {
 24617  		Ftab struct {
 24618  			FaddColOffset int32
 24619  			F__ccgo_pad1  [4]byte
 24620  			FpFKey        uintptr
 24621  			FpDfltList    uintptr
 24622  		}
 24623  	}
 24624  	FpTrigger uintptr
 24625  	FpSchema  uintptr
 24626  }
 24627  
 24628  type Table = Table1
 24629  type Token1 = struct {
 24630  	Fz           uintptr
 24631  	Fn           uint32
 24632  	F__ccgo_pad1 [4]byte
 24633  }
 24634  
 24635  type Token = Token1
 24636  type Trigger1 = struct {
 24637  	FzName       uintptr
 24638  	Ftable       uintptr
 24639  	Fop          u8
 24640  	Ftr_tm       u8
 24641  	FbReturning  u8
 24642  	F__ccgo_pad1 [5]byte
 24643  	FpWhen       uintptr
 24644  	FpColumns    uintptr
 24645  	FpSchema     uintptr
 24646  	FpTabSchema  uintptr
 24647  	Fstep_list   uintptr
 24648  	FpNext       uintptr
 24649  }
 24650  
 24651  type Trigger = Trigger1
 24652  type TriggerPrg1 = struct {
 24653  	FpTrigger    uintptr
 24654  	FpNext       uintptr
 24655  	FpProgram    uintptr
 24656  	Forconf      int32
 24657  	FaColmask    [2]u32
 24658  	F__ccgo_pad1 [4]byte
 24659  }
 24660  
 24661  type TriggerPrg = TriggerPrg1
 24662  type TriggerStep1 = struct {
 24663  	Fop          u8
 24664  	Forconf      u8
 24665  	F__ccgo_pad1 [6]byte
 24666  	FpTrig       uintptr
 24667  	FpSelect     uintptr
 24668  	FzTarget     uintptr
 24669  	FpFrom       uintptr
 24670  	FpWhere      uintptr
 24671  	FpExprList   uintptr
 24672  	FpIdList     uintptr
 24673  	FpUpsert     uintptr
 24674  	FzSpan       uintptr
 24675  	FpNext       uintptr
 24676  	FpLast       uintptr
 24677  }
 24678  
 24679  type TriggerStep = TriggerStep1
 24680  type UnpackedRecord1 = struct {
 24681  	FpKeyInfo    uintptr
 24682  	FaMem        uintptr
 24683  	Fu           struct{ Fz uintptr }
 24684  	Fn           int32
 24685  	FnField      u16
 24686  	Fdefault_rc  i8
 24687  	FerrCode     u8
 24688  	Fr1          i8
 24689  	Fr2          i8
 24690  	FeqSeen      u8
 24691  	F__ccgo_pad1 [5]byte
 24692  }
 24693  
 24694  type UnpackedRecord = UnpackedRecord1
 24695  type Upsert1 = struct {
 24696  	FpUpsertTarget      uintptr
 24697  	FpUpsertTargetWhere uintptr
 24698  	FpUpsertSet         uintptr
 24699  	FpUpsertWhere       uintptr
 24700  	FpNextUpsert        uintptr
 24701  	FisDoUpdate         u8
 24702  	F__ccgo_pad1        [7]byte
 24703  	FpToFree            uintptr
 24704  	FpUpsertIdx         uintptr
 24705  	FpUpsertSrc         uintptr
 24706  	FregData            int32
 24707  	FiDataCur           int32
 24708  	FiIdxCur            int32
 24709  	F__ccgo_pad2        [4]byte
 24710  }
 24711  
 24712  type Upsert = Upsert1
 24713  type VTable1 = struct {
 24714  	Fdb          uintptr
 24715  	FpMod        uintptr
 24716  	FpVtab       uintptr
 24717  	FnRef        int32
 24718  	FbConstraint u8
 24719  	FeVtabRisk   u8
 24720  	F__ccgo_pad1 [2]byte
 24721  	FiSavepoint  int32
 24722  	F__ccgo_pad2 [4]byte
 24723  	FpNext       uintptr
 24724  }
 24725  
 24726  type VTable = VTable1
 24727  type Walker1 = struct {
 24728  	FpParse           uintptr
 24729  	FxExprCallback    uintptr
 24730  	FxSelectCallback  uintptr
 24731  	FxSelectCallback2 uintptr
 24732  	FwalkerDepth      int32
 24733  	FeCode            u16
 24734  	F__ccgo_pad1      [2]byte
 24735  	Fu                struct{ FpNC uintptr }
 24736  }
 24737  
 24738  type Walker = Walker1
 24739  type Window1 = struct {
 24740  	FzName          uintptr
 24741  	FzBase          uintptr
 24742  	FpPartition     uintptr
 24743  	FpOrderBy       uintptr
 24744  	FeFrmType       u8
 24745  	FeStart         u8
 24746  	FeEnd           u8
 24747  	FbImplicitFrame u8
 24748  	FeExclude       u8
 24749  	F__ccgo_pad1    [3]byte
 24750  	FpStart         uintptr
 24751  	FpEnd           uintptr
 24752  	FppThis         uintptr
 24753  	FpNextWin       uintptr
 24754  	FpFilter        uintptr
 24755  	FpWFunc         uintptr
 24756  	FiEphCsr        int32
 24757  	FregAccum       int32
 24758  	FregResult      int32
 24759  	FcsrApp         int32
 24760  	FregApp         int32
 24761  	FregPart        int32
 24762  	FpOwner         uintptr
 24763  	FnBufferCol     int32
 24764  	FiArgCol        int32
 24765  	FregOne         int32
 24766  	FregStartRowid  int32
 24767  	FregEndRowid    int32
 24768  	FbExprArgs      u8
 24769  	F__ccgo_pad2    [3]byte
 24770  }
 24771  
 24772  type Window = Window1
 24773  type With1 = struct {
 24774  	FnCte   int32
 24775  	FbView  int32
 24776  	FpOuter uintptr
 24777  	Fa      [1]Cte
 24778  }
 24779  
 24780  type With = With1
 24781  
 24782  type Bitmask = u64
 24783  
 24784  type VList = int32
 24785  
 24786  type Pgno = u32
 24787  
 24788  type PgHdr1 = struct {
 24789  	FpPage      uintptr
 24790  	FpData      uintptr
 24791  	FpExtra     uintptr
 24792  	FpCache     uintptr
 24793  	FpDirty     uintptr
 24794  	FpPager     uintptr
 24795  	Fpgno       Pgno
 24796  	Fflags      u16
 24797  	FnRef       i16
 24798  	FpDirtyNext uintptr
 24799  	FpDirtyPrev uintptr
 24800  }
 24801  
 24802  type DbPage = PgHdr1
 24803  
 24804  type Btree1 = struct {
 24805  	Fdb             uintptr
 24806  	FpBt            uintptr
 24807  	FinTrans        u8
 24808  	Fsharable       u8
 24809  	Flocked         u8
 24810  	FhasIncrblobCur u8
 24811  	FwantToLock     int32
 24812  	FnBackup        int32
 24813  	FiBDataVersion  u32
 24814  	FpNext          uintptr
 24815  	FpPrev          uintptr
 24816  	Flock           BtLock
 24817  }
 24818  
 24819  type BtCursor1 = struct {
 24820  	FeState        u8
 24821  	FcurFlags      u8
 24822  	FcurPagerFlags u8
 24823  	Fhints         u8
 24824  	FskipNext      int32
 24825  	FpBtree        uintptr
 24826  	FaOverflow     uintptr
 24827  	FpKey          uintptr
 24828  	FpBt           uintptr
 24829  	FpNext         uintptr
 24830  	Finfo          CellInfo
 24831  	FnKey          i64
 24832  	FpgnoRoot      Pgno
 24833  	FiPage         i8
 24834  	FcurIntKey     u8
 24835  	Fix            u16
 24836  	FaiIdx         [19]u16
 24837  	F__ccgo_pad1   [2]byte
 24838  	FpKeyInfo      uintptr
 24839  	FpPage         uintptr
 24840  	FapPage        [19]uintptr
 24841  }
 24842  
 24843  type BtShared1 = struct {
 24844  	FpPager          uintptr
 24845  	Fdb              uintptr
 24846  	FpCursor         uintptr
 24847  	FpPage1          uintptr
 24848  	FopenFlags       u8
 24849  	FautoVacuum      u8
 24850  	FincrVacuum      u8
 24851  	FbDoTruncate     u8
 24852  	FinTransaction   u8
 24853  	Fmax1bytePayload u8
 24854  	FnReserveWanted  u8
 24855  	F__ccgo_pad1     [1]byte
 24856  	FbtsFlags        u16
 24857  	FmaxLocal        u16
 24858  	FminLocal        u16
 24859  	FmaxLeaf         u16
 24860  	FminLeaf         u16
 24861  	F__ccgo_pad2     [2]byte
 24862  	FpageSize        u32
 24863  	FusableSize      u32
 24864  	FnTransaction    int32
 24865  	FnPage           u32
 24866  	F__ccgo_pad3     [4]byte
 24867  	FpSchema         uintptr
 24868  	FxFreeSchema     uintptr
 24869  	Fmutex           uintptr
 24870  	FpHasContent     uintptr
 24871  	FnRef            int32
 24872  	F__ccgo_pad4     [4]byte
 24873  	FpNext           uintptr
 24874  	FpLock           uintptr
 24875  	FpWriter         uintptr
 24876  	FpTmpSpace       uintptr
 24877  	FnPreformatSize  int32
 24878  	F__ccgo_pad5     [4]byte
 24879  }
 24880  
 24881  type BtreePayload1 = struct {
 24882  	FpKey        uintptr
 24883  	FnKey        sqlite3_int64
 24884  	FpData       uintptr
 24885  	FaMem        uintptr
 24886  	FnMem        u16
 24887  	F__ccgo_pad1 [2]byte
 24888  	FnData       int32
 24889  	FnZero       int32
 24890  	F__ccgo_pad2 [4]byte
 24891  }
 24892  
 24893  type BtreePayload = BtreePayload1
 24894  
 24895  type Vdbe1 = struct {
 24896  	Fdb                 uintptr
 24897  	FpPrev              uintptr
 24898  	FpNext              uintptr
 24899  	FpParse             uintptr
 24900  	FnVar               ynVar
 24901  	F__ccgo_pad1        [2]byte
 24902  	FnMem               int32
 24903  	FnCursor            int32
 24904  	FcacheCtr           u32
 24905  	Fpc                 int32
 24906  	Frc                 int32
 24907  	FnChange            i64
 24908  	FiStatement         int32
 24909  	F__ccgo_pad2        [4]byte
 24910  	FiCurrentTime       i64
 24911  	FnFkConstraint      i64
 24912  	FnStmtDefCons       i64
 24913  	FnStmtDefImmCons    i64
 24914  	FaMem               uintptr
 24915  	FapArg              uintptr
 24916  	FapCsr              uintptr
 24917  	FaVar               uintptr
 24918  	FaOp                uintptr
 24919  	FnOp                int32
 24920  	FnOpAlloc           int32
 24921  	FaColName           uintptr
 24922  	FpResultSet         uintptr
 24923  	FzErrMsg            uintptr
 24924  	FpVList             uintptr
 24925  	FstartTime          i64
 24926  	FnResColumn         u16
 24927  	FerrorAction        u8
 24928  	FminWriteFileFormat u8
 24929  	FprepFlags          u8
 24930  	FeVdbeState         u8
 24931  	F__ccgo_pad3        [2]byte
 24932  	Fexpired            uint8
 24933  	F__ccgo_pad4        [3]byte
 24934  	FbtreeMask          yDbMask
 24935  	FlockMask           yDbMask
 24936  	FaCounter           [9]u32
 24937  	FzSql               uintptr
 24938  	FpFree              uintptr
 24939  	FpFrame             uintptr
 24940  	FpDelFrame          uintptr
 24941  	FnFrame             int32
 24942  	Fexpmask            u32
 24943  	FpProgram           uintptr
 24944  	FpAuxData           uintptr
 24945  }
 24946  
 24947  type SubProgram1 = struct {
 24948  	FaOp         uintptr
 24949  	FnOp         int32
 24950  	FnMem        int32
 24951  	FnCsr        int32
 24952  	F__ccgo_pad1 [4]byte
 24953  	FaOnce       uintptr
 24954  	Ftoken       uintptr
 24955  	FpNext       uintptr
 24956  }
 24957  
 24958  type SubProgram = SubProgram1
 24959  
 24960  type VdbeOp1 = struct {
 24961  	Fopcode u8
 24962  	Fp4type int8
 24963  	Fp5     u16
 24964  	Fp1     int32
 24965  	Fp2     int32
 24966  	Fp3     int32
 24967  	Fp4     struct {
 24968  		F__ccgo_pad1 [0]uint64
 24969  		Fi           int32
 24970  		F__ccgo_pad2 [4]byte
 24971  	}
 24972  	FzComment uintptr
 24973  }
 24974  
 24975  type p4union = struct {
 24976  	F__ccgo_pad1 [0]uint64
 24977  	Fi           int32
 24978  	F__ccgo_pad2 [4]byte
 24979  }
 24980  
 24981  type VdbeOp = VdbeOp1
 24982  
 24983  type VdbeOpList1 = struct {
 24984  	Fopcode u8
 24985  	Fp1     int8
 24986  	Fp2     int8
 24987  	Fp3     int8
 24988  }
 24989  
 24990  type VdbeOpList = VdbeOpList1
 24991  
 24992  type RecordCompare = uintptr
 24993  
 24994  type PgHdr = PgHdr1
 24995  
 24996  type sqlite3_xauth = uintptr
 24997  
 24998  type sqlite3InitInfo = struct {
 24999  	FnewTnum       Pgno
 25000  	FiDb           u8
 25001  	Fbusy          u8
 25002  	F__ccgo_pad1   [2]byte
 25003  	ForphanTrigger uint8
 25004  	F__ccgo_pad2   [7]byte
 25005  	FazInit        uintptr
 25006  }
 25007  
 25008  type sColMap = struct {
 25009  	FiFrom       int32
 25010  	F__ccgo_pad1 [4]byte
 25011  	FzCol        uintptr
 25012  }
 25013  
 25014  type AggInfo_col = struct {
 25015  	FpTab          uintptr
 25016  	FpCExpr        uintptr
 25017  	FiTable        int32
 25018  	FiMem          int32
 25019  	FiColumn       i16
 25020  	FiSorterColumn i16
 25021  	F__ccgo_pad1   [4]byte
 25022  }
 25023  
 25024  type AggInfo_func = struct {
 25025  	FpFExpr      uintptr
 25026  	FpFunc       uintptr
 25027  	FiMem        int32
 25028  	FiDistinct   int32
 25029  	FiDistAddr   int32
 25030  	F__ccgo_pad1 [4]byte
 25031  }
 25032  
 25033  type ynVar = i16
 25034  
 25035  type ExprList_item = struct {
 25036  	FpExpr  uintptr
 25037  	FzEName uintptr
 25038  	Ffg     struct {
 25039  		F__ccgo_pad1 [0]uint32
 25040  		FsortFlags   u8
 25041  		F__ccgo_pad2 [3]byte
 25042  		FeEName      uint16
 25043  		F__ccgo_pad3 [2]byte
 25044  	}
 25045  	Fu struct {
 25046  		F__ccgo_pad1 [0]uint32
 25047  		Fx           struct {
 25048  			FiOrderByCol u16
 25049  			FiAlias      u16
 25050  		}
 25051  	}
 25052  	F__ccgo_pad1 [4]byte
 25053  }
 25054  
 25055  type IdList_item = struct {
 25056  	FzName uintptr
 25057  	Fu4    struct {
 25058  		F__ccgo_pad1 [0]uint64
 25059  		Fidx         int32
 25060  		F__ccgo_pad2 [4]byte
 25061  	}
 25062  }
 25063  
 25064  type yDbMask = uint32
 25065  
 25066  type InitData = struct {
 25067  	Fdb          uintptr
 25068  	FpzErrMsg    uintptr
 25069  	FiDb         int32
 25070  	Frc          int32
 25071  	FmInitFlags  u32
 25072  	FnInitRow    u32
 25073  	FmxPage      Pgno
 25074  	F__ccgo_pad1 [4]byte
 25075  }
 25076  
 25077  type Sqlite3Config = struct {
 25078  	FbMemstat            int32
 25079  	FbCoreMutex          u8
 25080  	FbFullMutex          u8
 25081  	FbOpenUri            u8
 25082  	FbUseCis             u8
 25083  	FbSmallMalloc        u8
 25084  	FbExtraSchemaChecks  u8
 25085  	F__ccgo_pad1         [2]byte
 25086  	FmxStrlen            int32
 25087  	FneverCorrupt        int32
 25088  	FszLookaside         int32
 25089  	FnLookaside          int32
 25090  	FnStmtSpill          int32
 25091  	Fm                   sqlite3_mem_methods
 25092  	Fmutex               sqlite3_mutex_methods
 25093  	Fpcache2             sqlite3_pcache_methods2
 25094  	FpHeap               uintptr
 25095  	FnHeap               int32
 25096  	FmnReq               int32
 25097  	FmxReq               int32
 25098  	F__ccgo_pad2         [4]byte
 25099  	FszMmap              sqlite3_int64
 25100  	FmxMmap              sqlite3_int64
 25101  	FpPage               uintptr
 25102  	FszPage              int32
 25103  	FnPage               int32
 25104  	FmxParserStack       int32
 25105  	FsharedCacheEnabled  int32
 25106  	FszPma               u32
 25107  	FisInit              int32
 25108  	FinProgress          int32
 25109  	FisMutexInit         int32
 25110  	FisMallocInit        int32
 25111  	FisPCacheInit        int32
 25112  	FnRefInitMutex       int32
 25113  	F__ccgo_pad3         [4]byte
 25114  	FpInitMutex          uintptr
 25115  	FxLog                uintptr
 25116  	FpLogArg             uintptr
 25117  	FmxMemdbSize         sqlite3_int64
 25118  	FxTestCallback       uintptr
 25119  	FbLocaltimeFault     int32
 25120  	F__ccgo_pad4         [4]byte
 25121  	FxAltLocaltime       uintptr
 25122  	FiOnceResetThreshold int32
 25123  	FszSorterRef         u32
 25124  	FiPrngSeed           uint32
 25125  	F__ccgo_pad5         [4]byte
 25126  }
 25127  
 25128  type BoxGeomCtx1 = struct {
 25129  	Finterp  uintptr
 25130  	FpScript uintptr
 25131  }
 25132  
 25133  type BoxGeomCtx = BoxGeomCtx1
 25134  
 25135  type BoxQueryCtx1 = struct {
 25136  	Finterp  uintptr
 25137  	FpScript uintptr
 25138  }
 25139  
 25140  type BoxQueryCtx = BoxQueryCtx1
 25141  
 25142  func testDelUser(tls *libc.TLS, pCtx uintptr) {
 25143  	var p uintptr = pCtx
 25144  	tcl.XTcl_EvalObjEx(tls, (*BoxGeomCtx)(unsafe.Pointer(p)).Finterp, (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript, 0)
 25145  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25146  		var _objPtr uintptr = (*BoxGeomCtx)(unsafe.Pointer(p)).FpScript
 25147  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25148  			tcl.XTclFreeObj(tls, _objPtr)
 25149  		}
 25150  	}
 25151  	sqlite3.Xsqlite3_free(tls, p)
 25152  }
 25153  
 25154  func invokeTclGeomCb(tls *libc.TLS, zName uintptr, p uintptr, nCoord int32, aCoord uintptr) int32 {
 25155  	bp := tls.Alloc(96)
 25156  	defer tls.Free(96)
 25157  
 25158  	var rc int32 = SQLITE_OK
 25159  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext != 0 {
 25160  		var pCtx uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext
 25161  		var interp uintptr = (*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp
 25162  		var pScript uintptr = uintptr(0)
 25163  		var pParam uintptr = uintptr(0)
 25164  		var pCoord uintptr = uintptr(0)
 25165  		var ii int32
 25166  		var pRes uintptr
 25167  
 25168  		pScript = tcl.XTcl_DuplicateObj(tls, (*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)
 25169  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 25170  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 25171  
 25172  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp, (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpContext))
 25173  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25174  
 25175  		pParam = tcl.XTcl_NewObj(tls)
 25176  		for ii = 0; ii < (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam; ii++ {
 25177  			tcl.XTcl_ListObjAppendElement(tls,
 25178  				interp, pParam, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + uintptr(ii)*8))))
 25179  		}
 25180  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pParam)
 25181  
 25182  		pCoord = tcl.XTcl_NewObj(tls)
 25183  		for ii = 0; ii < nCoord; ii++ {
 25184  			tcl.XTcl_ListObjAppendElement(tls, interp, pCoord, tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + uintptr(ii)*8))))
 25185  		}
 25186  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pCoord)
 25187  
 25188  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([64]int8{}))-uint64(1)), bp+16, ts+9889, libc.VaList(bp+8, p))
 25189  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25190  
 25191  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 25192  		if rc != TCL_OK {
 25193  			rc = SQLITE_ERROR
 25194  		} else {
 25195  			*(*int32)(unsafe.Pointer(bp + 80)) = 0
 25196  			*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 25197  
 25198  			pRes = tcl.XTcl_GetObjResult(tls, interp)
 25199  			if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88) != 0 {
 25200  				return TCL_ERROR
 25201  			}
 25202  			if *(*int32)(unsafe.Pointer(bp + 80)) > 0 {
 25203  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)))))
 25204  				if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9892) {
 25205  					*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam)) = 0.0
 25206  					(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam = 1
 25207  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9897) {
 25208  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25209  						rc = SQLITE_ERROR
 25210  					} else {
 25211  						var pBGCtx uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(BoxGeomCtx{})))
 25212  						if pBGCtx == uintptr(0) {
 25213  							rc = SQLITE_NOMEM
 25214  						} else {
 25215  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).Finterp = interp
 25216  							(*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, pRes)
 25217  							(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript)).FrefCount++
 25218  							tcl.XTcl_ListObjReplace(tls, interp, (*BoxGeomCtx)(unsafe.Pointer(pBGCtx)).FpScript, 0, 1, 0, uintptr(0))
 25219  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pBGCtx
 25220  							(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testDelUser}))
 25221  						}
 25222  					}
 25223  				} else if 0 == sqlite3.Xsqlite3_stricmp(tls, zCmd, ts+9902) {
 25224  					if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser != 0 || (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser != 0 {
 25225  						rc = SQLITE_ERROR
 25226  					}
 25227  				}
 25228  			}
 25229  		}
 25230  	}
 25231  	return rc
 25232  }
 25233  
 25234  func box_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 25235  	var ii int32
 25236  
 25237  	if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != nCoord {
 25238  		invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord)
 25239  		return SQLITE_ERROR
 25240  	}
 25241  	if invokeTclGeomCb(tls, ts+9915, p, nCoord, aCoord) != 0 {
 25242  		return SQLITE_ERROR
 25243  	}
 25244  
 25245  	for ii = 0; ii < nCoord; ii = ii + 2 {
 25246  		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)) {
 25247  			*(*int32)(unsafe.Pointer(pRes)) = 0
 25248  			return SQLITE_OK
 25249  		}
 25250  	}
 25251  
 25252  	*(*int32)(unsafe.Pointer(pRes)) = 1
 25253  
 25254  	return SQLITE_OK
 25255  }
 25256  
 25257  func register_box_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25258  	bp := tls.Alloc(80)
 25259  	defer tls.Free(80)
 25260  
 25261  	var pCtx uintptr
 25262  
 25263  	if objc != 3 {
 25264  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25265  		return TCL_ERROR
 25266  	}
 25267  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 25268  		return TCL_ERROR
 25269  	}
 25270  
 25271  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(uintptr(0))))
 25272  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25273  	(*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25274  	(*Tcl_Obj)(unsafe.Pointer((*BoxGeomCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25275  
 25276  	sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), ts+9915, *(*uintptr)(unsafe.Pointer(&struct {
 25277  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 25278  	}{box_geom})), pCtx)
 25279  
 25280  	sqlite3.Xsqlite3_snprintf(tls, 64, bp+16, ts+9889, libc.VaList(bp, pCtx))
 25281  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 25282  	return TCL_OK
 25283  }
 25284  
 25285  func box_query(tls *libc.TLS, pInfo uintptr) int32 {
 25286  	bp := tls.Alloc(60)
 25287  	defer tls.Free(60)
 25288  
 25289  	*(*[4]uintptr)(unsafe.Pointer(bp)) = [4]uintptr{ts + 5854, ts + 9929, ts + 9936, uintptr(0)}
 25290  	var pCtx uintptr = (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FpContext
 25291  	var interp uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp
 25292  	var pEval uintptr
 25293  	var pArg uintptr
 25294  	var pTmp uintptr = uintptr(0)
 25295  	var rc int32
 25296  	var ii int32
 25297  
 25298  	pEval = tcl.XTcl_DuplicateObj(tls, (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)
 25299  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25300  	pArg = tcl.XTcl_NewObj(tls)
 25301  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 25302  
 25303  	pTmp = tcl.XTcl_NewObj(tls)
 25304  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25305  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnParam; ii++ {
 25306  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaParam + uintptr(ii)*8)))
 25307  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25308  	}
 25309  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9942, -1))
 25310  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25311  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25312  		var _objPtr uintptr = pTmp
 25313  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25314  			tcl.XTclFreeObj(tls, _objPtr)
 25315  		}
 25316  	}
 25317  
 25318  	pTmp = tcl.XTcl_NewObj(tls)
 25319  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25320  	for ii = 0; ii < (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FnCoord; ii++ {
 25321  		var p uintptr = tcl.XTcl_NewDoubleObj(tls, *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FaCoord + uintptr(ii)*8)))
 25322  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25323  	}
 25324  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9949, -1))
 25325  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25326  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 25327  		var _objPtr uintptr = pTmp
 25328  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25329  			tcl.XTclFreeObj(tls, _objPtr)
 25330  		}
 25331  	}
 25332  
 25333  	pTmp = tcl.XTcl_NewObj(tls)
 25334  	(*Tcl_Obj)(unsafe.Pointer(pTmp)).FrefCount++
 25335  	for ii = 0; ii <= (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel; ii++ {
 25336  		var p uintptr = tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FanQueue + uintptr(ii)*4))))
 25337  		tcl.XTcl_ListObjAppendElement(tls, interp, pTmp, p)
 25338  	}
 25339  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9956, -1))
 25340  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pTmp)
 25341  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 25342  		var _objPtr uintptr = pTmp
 25343  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25344  			tcl.XTclFreeObj(tls, _objPtr)
 25345  		}
 25346  	}
 25347  
 25348  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9964, -1))
 25349  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiLevel))
 25350  
 25351  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9971, -1))
 25352  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FmxLevel))
 25353  
 25354  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9979, -1))
 25355  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewWideIntObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FiRowid))
 25356  
 25357  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9986, -1))
 25358  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewDoubleObj(tls, (*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrParentScore))
 25359  
 25360  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg, tcl.XTcl_NewStringObj(tls, ts+9999, -1))
 25361  	tcl.XTcl_ListObjAppendElement(tls, interp, pArg,
 25362  		tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + uintptr((*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin)*8)), -1))
 25363  
 25364  	tcl.XTcl_ListObjAppendElement(tls, interp, pEval, pArg)
 25365  	if tcl.XTcl_EvalObjEx(tls, interp, pEval, 0) != 0 {
 25366  		rc = SQLITE_ERROR
 25367  	} else {
 25368  		rc = SQLITE_OK
 25369  	}
 25370  
 25371  	if rc == SQLITE_OK {
 25372  		*(*float64)(unsafe.Pointer(bp + 48)) = 0.0
 25373  		*(*int32)(unsafe.Pointer(bp + 32)) = 0
 25374  		*(*int32)(unsafe.Pointer(bp + 56)) = 0
 25375  		*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 25376  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 25377  
 25378  		if tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+32, bp+40) != 0 ||
 25379  			*(*int32)(unsafe.Pointer(bp + 32)) != 2 ||
 25380  			tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)) + 1*8)), bp+48) != 0 ||
 25381  			tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 40)))), bp, int32(unsafe.Sizeof(uintptr(0))), ts+10013, 0, bp+56) != 0 {
 25382  			rc = SQLITE_ERROR
 25383  		} else {
 25384  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FrScore = *(*float64)(unsafe.Pointer(bp + 48))
 25385  			(*sqlite3_rtree_query_info)(unsafe.Pointer(pInfo)).FeParentWithin = *(*int32)(unsafe.Pointer(bp + 56))
 25386  		}
 25387  	}
 25388  
 25389  	for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 25390  		var _objPtr uintptr = pArg
 25391  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25392  			tcl.XTclFreeObj(tls, _objPtr)
 25393  		}
 25394  	}
 25395  	for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 25396  		var _objPtr uintptr = pEval
 25397  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25398  			tcl.XTclFreeObj(tls, _objPtr)
 25399  		}
 25400  	}
 25401  	return rc
 25402  }
 25403  
 25404  func box_query_destroy(tls *libc.TLS, p uintptr) {
 25405  	var pCtx uintptr = p
 25406  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25407  		var _objPtr uintptr = (*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript
 25408  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25409  			tcl.XTclFreeObj(tls, _objPtr)
 25410  		}
 25411  	}
 25412  	tcl.XTcl_Free(tls, pCtx)
 25413  }
 25414  
 25415  func register_box_query(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25416  	bp := tls.Alloc(8)
 25417  	defer tls.Free(8)
 25418  
 25419  	var pCtx uintptr
 25420  
 25421  	if objc != 3 {
 25422  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9919)
 25423  		return TCL_ERROR
 25424  	}
 25425  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 25426  		return TCL_ERROR
 25427  	}
 25428  
 25429  	pCtx = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(BoxQueryCtx{})))
 25430  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).Finterp = interp
 25431  	(*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25432  	(*Tcl_Obj)(unsafe.Pointer((*BoxQueryCtx)(unsafe.Pointer(pCtx)).FpScript)).FrefCount++
 25433  
 25434  	sqlite3.Xsqlite3_rtree_query_callback(tls,
 25435  		*(*uintptr)(unsafe.Pointer(bp)), ts+10019, *(*uintptr)(unsafe.Pointer(&struct {
 25436  			f func(*libc.TLS, uintptr) int32
 25437  		}{box_query})), pCtx, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{box_query_destroy})))
 25438  
 25439  	tcl.XTcl_ResetResult(tls, interp)
 25440  	return TCL_OK
 25441  }
 25442  
 25443  func Sqlitetestrtreedoc_Init(tls *libc.TLS, interp uintptr) int32 {
 25444  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10024, *(*uintptr)(unsafe.Pointer(&struct {
 25445  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25446  	}{register_box_geom})), uintptr(0), uintptr(0))
 25447  	tcl.XTcl_CreateObjCommand(tls, interp, ts+10042, *(*uintptr)(unsafe.Pointer(&struct {
 25448  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25449  	}{register_box_query})), uintptr(0), uintptr(0))
 25450  	return TCL_OK
 25451  }
 25452  
 25453  type TestSession1 = struct {
 25454  	FpSession      uintptr
 25455  	Finterp        uintptr
 25456  	FpFilterScript uintptr
 25457  }
 25458  
 25459  type TestSession = TestSession1
 25460  
 25461  type TestStreamInput1 = struct {
 25462  	FnStream     int32
 25463  	F__ccgo_pad1 [4]byte
 25464  	FaData       uintptr
 25465  	FnData       int32
 25466  	FiData       int32
 25467  }
 25468  
 25469  type TestStreamInput = TestStreamInput1
 25470  
 25471  func dbHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, pDb uintptr) int32 {
 25472  	bp := tls.Alloc(88)
 25473  	defer tls.Free(88)
 25474  
 25475  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, pObj), bp+24) {
 25476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, pObj), 0))
 25477  		return TCL_ERROR
 25478  	}
 25479  
 25480  	*(*uintptr)(unsafe.Pointer(pDb)) = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25481  	return TCL_OK
 25482  }
 25483  
 25484  func sql_exec_changeset(tls *libc.TLS, db uintptr, zSql uintptr, pnChangeset uintptr, ppChangeset uintptr) int32 {
 25485  	bp := tls.Alloc(8)
 25486  	defer tls.Free(8)
 25487  
 25488  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 25489  	var rc int32
 25490  
 25491  	rc = sqlite3.Xsqlite3session_create(tls, db, ts+85, bp)
 25492  
 25493  	if rc == SQLITE_OK {
 25494  		rc = sqlite3.Xsqlite3session_attach(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0))
 25495  	}
 25496  
 25497  	if rc == SQLITE_OK {
 25498  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 25499  	}
 25500  
 25501  	if rc == SQLITE_OK {
 25502  		rc = sqlite3.Xsqlite3session_changeset(tls, *(*uintptr)(unsafe.Pointer(bp)), pnChangeset, ppChangeset)
 25503  	}
 25504  
 25505  	sqlite3.Xsqlite3session_delete(tls, *(*uintptr)(unsafe.Pointer(bp)))
 25506  
 25507  	return rc
 25508  }
 25509  
 25510  func test_sql_exec_changeset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25511  	bp := tls.Alloc(40)
 25512  	defer tls.Free(40)
 25513  
 25514  	var zSql uintptr
 25515  
 25516  	var rc int32
 25517  
 25518  	if objc != 3 {
 25519  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 25520  		return TCL_ERROR
 25521  	}
 25522  	if dbHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 25523  		return TCL_ERROR
 25524  	}
 25525  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25526  
 25527  	rc = sql_exec_changeset(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zSql, bp+24, bp+32)
 25528  	if rc != SQLITE_OK {
 25529  		tcl.XTcl_ResetResult(tls, interp)
 25530  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+10068, 0))
 25531  		return TCL_ERROR
 25532  	}
 25533  
 25534  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 24))))
 25535  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 25536  	return TCL_OK
 25537  }
 25538  
 25539  func test_tcl_integer(tls *libc.TLS, interp uintptr, zVar uintptr) int32 {
 25540  	bp := tls.Alloc(4)
 25541  	defer tls.Free(4)
 25542  
 25543  	var pObj uintptr
 25544  	*(*int32)(unsafe.Pointer(bp)) = 0
 25545  	var pName uintptr = tcl.XTcl_NewStringObj(tls, zVar, -1)
 25546  	(*Tcl_Obj)(unsafe.Pointer(pName)).FrefCount++
 25547  	pObj = tcl.XTcl_ObjGetVar2(tls, interp, pName, uintptr(0), TCL_GLOBAL_ONLY)
 25548  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25549  		var _objPtr uintptr = pName
 25550  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25551  			tcl.XTclFreeObj(tls, _objPtr)
 25552  		}
 25553  	}
 25554  	if pObj != 0 {
 25555  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), pObj, bp)
 25556  	}
 25557  	return *(*int32)(unsafe.Pointer(bp))
 25558  }
 25559  
 25560  func test_session_error(tls *libc.TLS, interp uintptr, rc int32, zErr uintptr) int32 {
 25561  	bp := tls.Alloc(24)
 25562  	defer tls.Free(24)
 25563  
 25564  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 25565  	if zErr != 0 {
 25566  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+9645, zErr, 0))
 25567  		sqlite3.Xsqlite3_free(tls, zErr)
 25568  	}
 25569  	return TCL_ERROR
 25570  }
 25571  
 25572  func test_table_filter(tls *libc.TLS, pCtx uintptr, zTbl uintptr) int32 {
 25573  	bp := tls.Alloc(4)
 25574  	defer tls.Free(4)
 25575  
 25576  	var p uintptr = pCtx
 25577  	var pEval uintptr
 25578  	var rc int32
 25579  	*(*int32)(unsafe.Pointer(bp)) = 0
 25580  
 25581  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestSession)(unsafe.Pointer(p)).FpFilterScript)
 25582  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25583  	rc = tcl.XTcl_ListObjAppendElement(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 25584  	if rc == TCL_OK {
 25585  		rc = tcl.XTcl_EvalObjEx(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 25586  	}
 25587  	if rc == TCL_OK {
 25588  		rc = tcl.XTcl_GetBooleanFromObj(tls, (*TestSession)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestSession)(unsafe.Pointer(p)).Finterp), bp)
 25589  	}
 25590  	if rc != TCL_OK {
 25591  		tcl.XTcl_BackgroundError(tls, (*TestSession)(unsafe.Pointer(p)).Finterp)
 25592  	}
 25593  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25594  		var _objPtr uintptr = pEval
 25595  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25596  			tcl.XTclFreeObj(tls, _objPtr)
 25597  		}
 25598  	}
 25599  
 25600  	return *(*int32)(unsafe.Pointer(bp))
 25601  }
 25602  
 25603  type TestSessionsBlob1 = struct {
 25604  	Fp           uintptr
 25605  	Fn           int32
 25606  	F__ccgo_pad1 [4]byte
 25607  }
 25608  
 25609  type TestSessionsBlob = TestSessionsBlob1
 25610  
 25611  func testStreamOutput(tls *libc.TLS, pCtx uintptr, pData uintptr, nData int32) int32 {
 25612  	var pBlob uintptr = pCtx
 25613  	var pNew uintptr
 25614  
 25615  	pNew = sqlite3.Xsqlite3_realloc(tls, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp, (*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn+nData)
 25616  	if pNew == uintptr(0) {
 25617  		return SQLITE_NOMEM
 25618  	}
 25619  	(*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fp = pNew
 25620  	libc.Xmemcpy(tls, pNew+uintptr((*TestSessionsBlob)(unsafe.Pointer(pBlob)).Fn), pData, uint64(nData))
 25621  	*(*int32)(unsafe.Pointer(pBlob + 8)) += nData
 25622  	return SQLITE_OK
 25623  }
 25624  
 25625  func test_session_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25626  	bp := tls.Alloc(44)
 25627  	defer tls.Free(44)
 25628  
 25629  	var p uintptr = clientData
 25630  	var pSession uintptr = (*TestSession)(unsafe.Pointer(p)).FpSession
 25631  
 25632  	var rc int32
 25633  
 25634  	if objc < 2 {
 25635  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 25636  		return TCL_ERROR
 25637  	}
 25638  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 25639  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub)), int32(unsafe.Sizeof(SessionSubcmd{})), ts+2014, 0, bp)
 25640  	if rc != TCL_OK {
 25641  		return rc
 25642  	}
 25643  	if objc != 2+aSub[*(*int32)(unsafe.Pointer(bp))].FnArg {
 25644  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 25645  		return TCL_ERROR
 25646  	}
 25647  
 25648  	switch *(*int32)(unsafe.Pointer(bp)) {
 25649  	case 0:
 25650  		{
 25651  			var zArg uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25652  			if int32(*(*int8)(unsafe.Pointer(zArg))) == '*' && int32(*(*int8)(unsafe.Pointer(zArg + 1))) == 0 {
 25653  				zArg = uintptr(0)
 25654  			}
 25655  			rc = sqlite3.Xsqlite3session_attach(tls, pSession, zArg)
 25656  			if rc != SQLITE_OK {
 25657  				return test_session_error(tls, interp, rc, uintptr(0))
 25658  			}
 25659  			break
 25660  
 25661  		}
 25662  
 25663  	case 7:
 25664  		fallthrough
 25665  	case 1:
 25666  		{
 25667  			*(*TestSessionsBlob)(unsafe.Pointer(bp + 8)) = TestSessionsBlob{}
 25668  			if test_tcl_integer(tls, interp, ts+10098) != 0 {
 25669  				var pCtx uintptr = bp + 8
 25670  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 25671  					rc = sqlite3.Xsqlite3session_patchset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25672  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 25673  					}{testStreamOutput})), pCtx)
 25674  				} else {
 25675  					rc = sqlite3.Xsqlite3session_changeset_strm(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25676  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 25677  					}{testStreamOutput})), pCtx)
 25678  				}
 25679  			} else {
 25680  				if *(*int32)(unsafe.Pointer(bp)) == 7 {
 25681  					rc = sqlite3.Xsqlite3session_patchset(tls, pSession, bp+8+8, bp+8)
 25682  				} else {
 25683  					rc = sqlite3.Xsqlite3session_changeset(tls, pSession, bp+8+8, bp+8)
 25684  				}
 25685  			}
 25686  			if rc == SQLITE_OK {
 25687  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fn))
 25688  			}
 25689  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+8)).Fp)
 25690  			if rc != SQLITE_OK {
 25691  				return test_session_error(tls, interp, rc, uintptr(0))
 25692  			}
 25693  			break
 25694  
 25695  		}
 25696  
 25697  	case 2:
 25698  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 25699  		break
 25700  
 25701  	case 3:
 25702  		{
 25703  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 25704  				return TCL_ERROR
 25705  			}
 25706  			*(*int32)(unsafe.Pointer(bp + 24)) = sqlite3.Xsqlite3session_enable(tls, pSession, *(*int32)(unsafe.Pointer(bp + 24)))
 25707  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 24)) != 0)))
 25708  			break
 25709  
 25710  		}
 25711  
 25712  	case 4:
 25713  		{
 25714  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+28) != 0 {
 25715  				return TCL_ERROR
 25716  			}
 25717  			*(*int32)(unsafe.Pointer(bp + 28)) = sqlite3.Xsqlite3session_indirect(tls, pSession, *(*int32)(unsafe.Pointer(bp + 28)))
 25718  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 28)) != 0)))
 25719  			break
 25720  
 25721  		}
 25722  
 25723  	case 5:
 25724  		{
 25725  			var val int32
 25726  			val = sqlite3.Xsqlite3session_isempty(tls, pSession)
 25727  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(val != 0)))
 25728  			break
 25729  
 25730  		}
 25731  
 25732  	case 6:
 25733  		{
 25734  			if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 25735  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25736  					var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 25737  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25738  						tcl.XTclFreeObj(tls, _objPtr)
 25739  					}
 25740  				}
 25741  			}
 25742  			(*TestSession)(unsafe.Pointer(p)).Finterp = interp
 25743  			(*TestSession)(unsafe.Pointer(p)).FpFilterScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 25744  			(*Tcl_Obj)(unsafe.Pointer((*TestSession)(unsafe.Pointer(p)).FpFilterScript)).FrefCount++
 25745  			sqlite3.Xsqlite3session_table_filter(tls, pSession, *(*uintptr)(unsafe.Pointer(&struct {
 25746  				f func(*libc.TLS, uintptr, uintptr) int32
 25747  			}{test_table_filter})), clientData)
 25748  			break
 25749  
 25750  		}
 25751  
 25752  	case 8:
 25753  		{
 25754  			*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(0)
 25755  			rc = sqlite3.Xsqlite3session_diff(tls, pSession,
 25756  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 25757  				tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))),
 25758  				bp+32)
 25759  
 25760  			if rc != 0 {
 25761  				return test_session_error(tls, interp, rc, *(*uintptr)(unsafe.Pointer(bp + 32)))
 25762  			}
 25763  			break
 25764  
 25765  		}
 25766  
 25767  	case 9:
 25768  		{
 25769  			var nMalloc sqlite3_int64 = sqlite3.Xsqlite3session_memory_used(tls, pSession)
 25770  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nMalloc))
 25771  			break
 25772  
 25773  		}
 25774  
 25775  	case 10:
 25776  		{
 25777  			var nSize sqlite3_int64 = sqlite3.Xsqlite3session_changeset_size(tls, pSession)
 25778  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, nSize))
 25779  			break
 25780  
 25781  		}
 25782  	case 11:
 25783  		{
 25784  			var rc int32
 25785  
 25786  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 25787  				return TCL_ERROR
 25788  			}
 25789  			rc = sqlite3.Xsqlite3session_object_config(tls,
 25790  				pSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+40)
 25791  			if rc != SQLITE_OK {
 25792  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 25793  			} else {
 25794  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 25795  			}
 25796  			break
 25797  
 25798  		}
 25799  	}
 25800  
 25801  	return TCL_OK
 25802  }
 25803  
 25804  type SessionSubcmd = struct {
 25805  	FzSub        uintptr
 25806  	FnArg        int32
 25807  	F__ccgo_pad1 [4]byte
 25808  	FzMsg        uintptr
 25809  	FiSub        int32
 25810  	F__ccgo_pad2 [4]byte
 25811  }
 25812  
 25813  var aSub = [13]SessionSubcmd{
 25814  	{FzSub: ts + 10121, FnArg: 1, FzMsg: ts + 1951},
 25815  	{FzSub: ts + 10128, FzMsg: ts + 584},
 25816  	{FzSub: ts + 10138, FzMsg: ts + 584},
 25817  	{FzSub: ts + 10145, FnArg: 1, FzMsg: ts + 10152},
 25818  	{FzSub: ts + 10157, FnArg: 1, FzMsg: ts + 10152},
 25819  	{FzSub: ts + 10166, FzMsg: ts + 584},
 25820  	{FzSub: ts + 10174, FnArg: 1, FzMsg: ts + 10187},
 25821  	{FzSub: ts + 10194, FzMsg: ts + 584},
 25822  	{FzSub: ts + 10203, FnArg: 2, FzMsg: ts + 10208},
 25823  	{FzSub: ts + 10219, FzMsg: ts + 584},
 25824  	{FzSub: ts + 10231, FzMsg: ts + 584},
 25825  	{FzSub: ts + 10246, FnArg: 1, FzMsg: ts + 2413},
 25826  	{},
 25827  }
 25828  
 25829  func test_session_del(tls *libc.TLS, clientData uintptr) {
 25830  	var p uintptr = clientData
 25831  	if (*TestSession)(unsafe.Pointer(p)).FpFilterScript != 0 {
 25832  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25833  			var _objPtr uintptr = (*TestSession)(unsafe.Pointer(p)).FpFilterScript
 25834  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25835  				tcl.XTclFreeObj(tls, _objPtr)
 25836  			}
 25837  		}
 25838  	}
 25839  	sqlite3.Xsqlite3session_delete(tls, (*TestSession)(unsafe.Pointer(p)).FpSession)
 25840  	tcl.XTcl_Free(tls, p)
 25841  }
 25842  
 25843  func test_sqlite3session(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 25844  	bp := tls.Alloc(92)
 25845  	defer tls.Free(92)
 25846  
 25847  	var db uintptr
 25848  
 25849  	var rc int32
 25850  	var p uintptr
 25851  	*(*int32)(unsafe.Pointer(bp + 88)) = -1
 25852  
 25853  	if objc != 4 {
 25854  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10265)
 25855  		return TCL_ERROR
 25856  	}
 25857  
 25858  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) {
 25859  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 25860  		return TCL_ERROR
 25861  	}
 25862  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 25863  
 25864  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestSession{})))
 25865  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TestSession{})))
 25866  	rc = sqlite3.Xsqlite3session_create(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))), p)
 25867  	if rc != SQLITE_OK {
 25868  		tcl.XTcl_Free(tls, p)
 25869  		return test_session_error(tls, interp, rc, uintptr(0))
 25870  	}
 25871  
 25872  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 25873  
 25874  	*(*int32)(unsafe.Pointer(bp + 88)) = 1
 25875  	sqlite3.Xsqlite3session_object_config(tls, (*TestSession)(unsafe.Pointer(p)).FpSession, SQLITE_SESSION_OBJCONFIG_SIZE, bp+88)
 25876  
 25877  	tcl.XTcl_CreateObjCommand(tls,
 25878  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 25879  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 25880  		}{test_session_cmd})), p,
 25881  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_session_del})))
 25882  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 25883  	return TCL_OK
 25884  }
 25885  
 25886  func test_append_value(tls *libc.TLS, pList uintptr, pVal uintptr) {
 25887  	if pVal == uintptr(0) {
 25888  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 25889  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewObj(tls))
 25890  	} else {
 25891  		var pObj uintptr
 25892  		switch sqlite3.Xsqlite3_value_type(tls, pVal) {
 25893  		case SQLITE_NULL:
 25894  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10287, 1))
 25895  			pObj = tcl.XTcl_NewObj(tls)
 25896  			break
 25897  			fallthrough
 25898  		case SQLITE_INTEGER:
 25899  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10289, 1))
 25900  			pObj = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, pVal))
 25901  			break
 25902  			fallthrough
 25903  		case SQLITE_FLOAT:
 25904  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10291, 1))
 25905  			pObj = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, pVal))
 25906  			break
 25907  			fallthrough
 25908  		case SQLITE_TEXT:
 25909  			{
 25910  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, pVal)
 25911  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 25912  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+10293, 1))
 25913  				pObj = tcl.XTcl_NewStringObj(tls, z, n)
 25914  				break
 25915  
 25916  			}
 25917  			fallthrough
 25918  		default:
 25919  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, tcl.XTcl_NewStringObj(tls, ts+6206, 1))
 25920  			pObj = tcl.XTcl_NewByteArrayObj(tls,
 25921  				sqlite3.Xsqlite3_value_blob(tls, pVal),
 25922  				sqlite3.Xsqlite3_value_bytes(tls, pVal))
 25923  			break
 25924  		}
 25925  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pList, pObj)
 25926  	}
 25927  }
 25928  
 25929  type TestConflictHandler1 = struct {
 25930  	Finterp          uintptr
 25931  	FpConflictScript uintptr
 25932  	FpFilterScript   uintptr
 25933  }
 25934  
 25935  type TestConflictHandler = TestConflictHandler1
 25936  
 25937  func test_obj_eq_string(tls *libc.TLS, p uintptr, z uintptr) int32 {
 25938  	bp := tls.Alloc(4)
 25939  	defer tls.Free(4)
 25940  
 25941  	var n int32
 25942  
 25943  	var zObj uintptr
 25944  
 25945  	n = int32(libc.Xstrlen(tls, z))
 25946  	zObj = tcl.XTcl_GetStringFromObj(tls, p, bp)
 25947  
 25948  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == n && (n == 0 || 0 == libc.Xmemcmp(tls, zObj, z, uint64(n))))
 25949  }
 25950  
 25951  func test_filter_handler(tls *libc.TLS, pCtx uintptr, zTab uintptr) int32 {
 25952  	bp := tls.Alloc(4)
 25953  	defer tls.Free(4)
 25954  
 25955  	var p uintptr = pCtx
 25956  	*(*int32)(unsafe.Pointer(bp)) = 1
 25957  	var pEval uintptr
 25958  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 25959  
 25960  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpFilterScript)
 25961  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25962  
 25963  	if TCL_OK != tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zTab, -1)) ||
 25964  		TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) ||
 25965  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 25966  		tcl.XTcl_BackgroundError(tls, interp)
 25967  	}
 25968  
 25969  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 25970  		var _objPtr uintptr = pEval
 25971  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 25972  			tcl.XTclFreeObj(tls, _objPtr)
 25973  		}
 25974  	}
 25975  	return *(*int32)(unsafe.Pointer(bp))
 25976  }
 25977  
 25978  func test_conflict_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 25979  	bp := tls.Alloc(104)
 25980  	defer tls.Free(104)
 25981  
 25982  	var p uintptr = pCtx
 25983  	var pEval uintptr
 25984  	var interp uintptr = (*TestConflictHandler)(unsafe.Pointer(p)).Finterp
 25985  	*(*int32)(unsafe.Pointer(bp + 100)) = 0
 25986  
 25987  	pEval = tcl.XTcl_DuplicateObj(tls, (*TestConflictHandler)(unsafe.Pointer(p)).FpConflictScript)
 25988  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 25989  
 25990  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 25991  
 25992  	if eConf == SQLITE_CHANGESET_FOREIGN_KEY {
 25993  		sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+16)
 25994  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, ts+10295, -1))
 25995  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 25996  	} else {
 25997  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls,
 25998  			func() uintptr {
 25999  				if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26000  					return ts + 10307
 26001  				}
 26002  				return func() uintptr {
 26003  					if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_UPDATE {
 26004  						return ts + 10314
 26005  					}
 26006  					return ts + 10321
 26007  				}()
 26008  			}(), -1))
 26009  
 26010  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp)), -1))
 26011  
 26012  		switch eConf {
 26013  		case SQLITE_CHANGESET_DATA:
 26014  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10328, -1))
 26015  			break
 26016  			fallthrough
 26017  		case SQLITE_CHANGESET_NOTFOUND:
 26018  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10333, -1))
 26019  			break
 26020  			fallthrough
 26021  		case SQLITE_CHANGESET_CONFLICT:
 26022  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10342, -1))
 26023  			break
 26024  			fallthrough
 26025  		case SQLITE_CHANGESET_CONSTRAINT:
 26026  			tcl.XTcl_ListObjAppendElement(tls, interp, pEval, tcl.XTcl_NewStringObj(tls, ts+10351, -1))
 26027  			break
 26028  		}
 26029  
 26030  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26031  			var i int32
 26032  			var pOld uintptr = tcl.XTcl_NewObj(tls)
 26033  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26034  				sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+24)
 26035  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26036  			}
 26037  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pOld)
 26038  		}
 26039  
 26040  		if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26041  			var i int32
 26042  			var pNew uintptr = tcl.XTcl_NewObj(tls)
 26043  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26044  				sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+32)
 26045  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26046  			}
 26047  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pNew)
 26048  		}
 26049  
 26050  		if eConf == SQLITE_CHANGESET_DATA || eConf == SQLITE_CHANGESET_CONFLICT {
 26051  			var i int32
 26052  			var pConflict uintptr = tcl.XTcl_NewObj(tls)
 26053  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26054  				var rc int32
 26055  				_ = rc
 26056  
 26057  				rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, i, bp+40)
 26058  
 26059  				test_append_value(tls, pConflict, *(*uintptr)(unsafe.Pointer(bp + 40)))
 26060  			}
 26061  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pConflict)
 26062  		}
 26063  
 26064  		if eConf == SQLITE_CHANGESET_CONSTRAINT ||
 26065  			eConf == SQLITE_CHANGESET_NOTFOUND {
 26066  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, 0, bp+48)
 26067  			_ = rc
 26068  
 26069  		} else {
 26070  			var rc int32 = sqlite3.Xsqlite3changeset_conflict(tls, pIter, -1, bp+56)
 26071  			_ = rc
 26072  
 26073  			rc = sqlite3.Xsqlite3changeset_conflict(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+56)
 26074  
 26075  		}
 26076  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_DELETE {
 26077  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, 0, bp+64)
 26078  			_ = rc
 26079  
 26080  		} else {
 26081  			var rc int32 = sqlite3.Xsqlite3changeset_new(tls, pIter, -1, bp+72)
 26082  			_ = rc
 26083  
 26084  			rc = sqlite3.Xsqlite3changeset_new(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+72)
 26085  
 26086  		}
 26087  		if *(*int32)(unsafe.Pointer(bp + 12)) == SQLITE_INSERT {
 26088  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, 0, bp+80)
 26089  			_ = rc
 26090  
 26091  		} else {
 26092  			var rc int32 = sqlite3.Xsqlite3changeset_old(tls, pIter, -1, bp+88)
 26093  			_ = rc
 26094  
 26095  			rc = sqlite3.Xsqlite3changeset_old(tls, pIter, *(*int32)(unsafe.Pointer(bp + 8)), bp+88)
 26096  
 26097  		}
 26098  		if eConf != SQLITE_CHANGESET_FOREIGN_KEY {
 26099  			var rc int32 = sqlite3.Xsqlite3changeset_fk_conflicts(tls, pIter, bp+96)
 26100  			_ = rc
 26101  
 26102  		}
 26103  
 26104  	}
 26105  
 26106  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, pEval, TCL_EVAL_GLOBAL) {
 26107  		tcl.XTcl_BackgroundError(tls, interp)
 26108  	} else {
 26109  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 26110  		if test_obj_eq_string(tls, pRes, ts+10362) != 0 || test_obj_eq_string(tls, pRes, ts+584) != 0 {
 26111  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_OMIT
 26112  		} else if test_obj_eq_string(tls, pRes, ts+7846) != 0 {
 26113  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_REPLACE
 26114  		} else if test_obj_eq_string(tls, pRes, ts+7840) != 0 {
 26115  			*(*int32)(unsafe.Pointer(bp + 100)) = SQLITE_CHANGESET_ABORT
 26116  		} else {
 26117  			tcl.XTcl_GetIntFromObj(tls, uintptr(0), pRes, bp+100)
 26118  		}
 26119  	}
 26120  
 26121  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 26122  		var _objPtr uintptr = pEval
 26123  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 26124  			tcl.XTclFreeObj(tls, _objPtr)
 26125  		}
 26126  	}
 26127  	return *(*int32)(unsafe.Pointer(bp + 100))
 26128  }
 26129  
 26130  func replace_handler(tls *libc.TLS, pCtx uintptr, eConf int32, pIter uintptr) int32 {
 26131  	bp := tls.Alloc(32)
 26132  	defer tls.Free(32)
 26133  
 26134  	var i int32
 26135  	var x int32 = 0
 26136  
 26137  	sqlite3.Xsqlite3changeset_op(tls, pIter, bp, bp+8, bp+12, uintptr(0))
 26138  
 26139  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_INSERT {
 26140  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26141  			sqlite3.Xsqlite3changeset_old(tls, pIter, i, bp+16)
 26142  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 26143  			x++
 26144  		}
 26145  	}
 26146  
 26147  	if *(*int32)(unsafe.Pointer(bp + 12)) != SQLITE_DELETE {
 26148  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 8)); i++ {
 26149  			sqlite3.Xsqlite3changeset_new(tls, pIter, i, bp+24)
 26150  			sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 26151  			x++
 26152  		}
 26153  	}
 26154  
 26155  	if eConf == SQLITE_CHANGESET_DATA {
 26156  		return SQLITE_CHANGESET_REPLACE
 26157  	}
 26158  	return SQLITE_CHANGESET_OMIT
 26159  }
 26160  
 26161  func testStreamInput(tls *libc.TLS, pCtx uintptr, pData uintptr, pnData uintptr) int32 {
 26162  	var p uintptr = pCtx
 26163  	var nReq int32 = *(*int32)(unsafe.Pointer(pnData))
 26164  	var nRem int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnData - (*TestStreamInput)(unsafe.Pointer(p)).FiData
 26165  	var nRet int32 = (*TestStreamInput)(unsafe.Pointer(p)).FnStream
 26166  
 26167  	var pAlloc uintptr = sqlite3.Xsqlite3_malloc(tls, 10)
 26168  	if pAlloc == uintptr(0) {
 26169  		return SQLITE_NOMEM
 26170  	}
 26171  	sqlite3.Xsqlite3_free(tls, pAlloc)
 26172  
 26173  	if nRet > nReq {
 26174  		nRet = nReq
 26175  	}
 26176  	if nRet > nRem {
 26177  		nRet = nRem
 26178  	}
 26179  
 26180  	if nRet > 0 {
 26181  		libc.Xmemcpy(tls, pData, (*TestStreamInput)(unsafe.Pointer(p)).FaData+uintptr((*TestStreamInput)(unsafe.Pointer(p)).FiData), uint64(nRet))
 26182  		*(*int32)(unsafe.Pointer(p + 20)) += nRet
 26183  	}
 26184  
 26185  	*(*int32)(unsafe.Pointer(pnData)) = nRet
 26186  	return SQLITE_OK
 26187  }
 26188  
 26189  func testSqlite3changesetApply(tls *libc.TLS, bV2 int32, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26190  	bp := tls.Alloc(156)
 26191  	defer tls.Free(156)
 26192  
 26193  	var db uintptr
 26194  
 26195  	var rc int32
 26196  	var pChangeset uintptr
 26197  
 26198  	*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 26199  	*(*int32)(unsafe.Pointer(bp + 152)) = 0
 26200  	var flags int32 = 0
 26201  
 26202  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26203  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26204  
 26205  	if bV2 != 0 {
 26206  		if objc > 1 {
 26207  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26208  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26209  			if n > 1 && n <= 12 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10367, z1, n) {
 26210  				flags = flags | SQLITE_CHANGESETAPPLY_NOSAVEPOINT
 26211  				objc--
 26212  				objv += 8
 26213  			}
 26214  		}
 26215  		if objc > 1 {
 26216  			var z1 uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26217  			var n int32 = int32(libc.Xstrlen(tls, z1))
 26218  			if n > 1 && n <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, ts+10380, z1, n) {
 26219  				flags = flags | SQLITE_CHANGESETAPPLY_INVERT
 26220  				objc--
 26221  				objv += 8
 26222  			}
 26223  		}
 26224  	}
 26225  
 26226  	if objc != 4 && objc != 5 {
 26227  		var zMsg uintptr
 26228  		if bV2 != 0 {
 26229  			zMsg = ts + 10388
 26230  		} else {
 26231  			zMsg = ts + 10459
 26232  		}
 26233  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zMsg)
 26234  		return TCL_ERROR
 26235  	}
 26236  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) {
 26237  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), 0))
 26238  		return TCL_ERROR
 26239  	}
 26240  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData))
 26241  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+112)
 26242  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpConflictScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26243  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).FpFilterScript = func() uintptr {
 26244  		if objc == 5 {
 26245  			return *(*uintptr)(unsafe.Pointer(objv + 4*8))
 26246  		}
 26247  		return uintptr(0)
 26248  	}()
 26249  	(*TestConflictHandler)(unsafe.Pointer(bp + 120)).Finterp = interp
 26250  
 26251  	if (*TestStreamInput)(unsafe.Pointer(bp+24)).FnStream == 0 {
 26252  		if bV2 == 0 {
 26253  			rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26254  				func() uintptr {
 26255  					if objc == 5 {
 26256  						return *(*uintptr)(unsafe.Pointer(&struct {
 26257  							f func(*libc.TLS, uintptr, uintptr) int32
 26258  						}{test_filter_handler}))
 26259  					}
 26260  					return uintptr(0)
 26261  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26262  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26263  				}{test_conflict_handler})), bp+120)
 26264  		} else {
 26265  			rc = sqlite3.Xsqlite3changeset_apply_v2(tls, db, *(*int32)(unsafe.Pointer(bp + 112)), pChangeset,
 26266  				func() uintptr {
 26267  					if objc == 5 {
 26268  						return *(*uintptr)(unsafe.Pointer(&struct {
 26269  							f func(*libc.TLS, uintptr, uintptr) int32
 26270  						}{test_filter_handler}))
 26271  					}
 26272  					return uintptr(0)
 26273  				}(), *(*uintptr)(unsafe.Pointer(&struct {
 26274  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26275  				}{test_conflict_handler})), bp+120,
 26276  				bp+144, bp+152, flags)
 26277  		}
 26278  	} else {
 26279  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = pChangeset
 26280  		(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnData = *(*int32)(unsafe.Pointer(bp + 112))
 26281  		if bV2 == 0 {
 26282  			rc = sqlite3.Xsqlite3changeset_apply_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26283  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26284  			}{testStreamInput})), bp+24,
 26285  				func() uintptr {
 26286  					if objc == 5 {
 26287  						return *(*uintptr)(unsafe.Pointer(&struct {
 26288  							f func(*libc.TLS, uintptr, uintptr) int32
 26289  						}{test_filter_handler}))
 26290  					}
 26291  					return uintptr(0)
 26292  				}(),
 26293  				*(*uintptr)(unsafe.Pointer(&struct {
 26294  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26295  				}{test_conflict_handler})), bp+120)
 26296  		} else {
 26297  			rc = sqlite3.Xsqlite3changeset_apply_v2_strm(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 26298  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26299  			}{testStreamInput})), bp+24,
 26300  				func() uintptr {
 26301  					if objc == 5 {
 26302  						return *(*uintptr)(unsafe.Pointer(&struct {
 26303  							f func(*libc.TLS, uintptr, uintptr) int32
 26304  						}{test_filter_handler}))
 26305  					}
 26306  					return uintptr(0)
 26307  				}(),
 26308  				*(*uintptr)(unsafe.Pointer(&struct {
 26309  					f func(*libc.TLS, uintptr, int32, uintptr) int32
 26310  				}{test_conflict_handler})), bp+120,
 26311  				bp+144, bp+152, flags)
 26312  		}
 26313  	}
 26314  
 26315  	if rc != SQLITE_OK {
 26316  		return test_session_error(tls, interp, rc, uintptr(0))
 26317  	} else {
 26318  		tcl.XTcl_ResetResult(tls, interp)
 26319  		if bV2 != 0 && *(*uintptr)(unsafe.Pointer(bp + 144)) != 0 {
 26320  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 144)), *(*int32)(unsafe.Pointer(bp + 152))))
 26321  		}
 26322  	}
 26323  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 144)))
 26324  	return TCL_OK
 26325  }
 26326  
 26327  func test_sqlite3changeset_apply(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26328  	return testSqlite3changesetApply(tls, 0, clientData, interp, objc, objv)
 26329  }
 26330  
 26331  func test_sqlite3changeset_apply_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26332  	return testSqlite3changesetApply(tls, 1, clientData, interp, objc, objv)
 26333  }
 26334  
 26335  func test_sqlite3changeset_apply_replace_all(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26336  	bp := tls.Alloc(92)
 26337  	defer tls.Free(92)
 26338  
 26339  	var db uintptr
 26340  
 26341  	var rc int32
 26342  	var pChangeset uintptr
 26343  
 26344  	if objc != 3 {
 26345  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10504)
 26346  		return TCL_ERROR
 26347  	}
 26348  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) {
 26349  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+1930, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 26350  		return TCL_ERROR
 26351  	}
 26352  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData))
 26353  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+88)
 26354  
 26355  	rc = sqlite3.Xsqlite3changeset_apply(tls, db, *(*int32)(unsafe.Pointer(bp + 88)), pChangeset, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 26356  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 26357  	}{replace_handler})), uintptr(0))
 26358  	if rc != SQLITE_OK {
 26359  		return test_session_error(tls, interp, rc, uintptr(0))
 26360  	}
 26361  	tcl.XTcl_ResetResult(tls, interp)
 26362  	return TCL_OK
 26363  }
 26364  
 26365  func test_sqlite3changeset_invert(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26366  	bp := tls.Alloc(40)
 26367  	defer tls.Free(40)
 26368  
 26369  	var rc int32
 26370  
 26371  	if objc != 2 {
 26372  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10517)
 26373  		return TCL_ERROR
 26374  	}
 26375  
 26376  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26377  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 26378  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26379  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26380  
 26381  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream != 0 {
 26382  		rc = sqlite3.Xsqlite3changeset_invert_strm(tls,
 26383  			*(*uintptr)(unsafe.Pointer(&struct {
 26384  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26385  			}{testStreamInput})), bp, *(*uintptr)(unsafe.Pointer(&struct {
 26386  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26387  			}{testStreamOutput})), bp+24)
 26388  	} else {
 26389  		rc = sqlite3.Xsqlite3changeset_invert(tls, (*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, bp+24+8, bp+24)
 26390  	}
 26391  	if rc != SQLITE_OK {
 26392  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26393  	} else {
 26394  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fn))
 26395  	}
 26396  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+24)).Fp)
 26397  	return rc
 26398  }
 26399  
 26400  func test_sqlite3changeset_concat(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26401  	bp := tls.Alloc(64)
 26402  	defer tls.Free(64)
 26403  
 26404  	var rc int32
 26405  
 26406  	*(*TestSessionsBlob)(unsafe.Pointer(bp + 48)) = TestSessionsBlob{}
 26407  
 26408  	if objc != 3 {
 26409  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10527)
 26410  		return TCL_ERROR
 26411  	}
 26412  
 26413  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26414  	libc.Xmemset(tls, bp+24, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26415  	(*TestStreamInput)(unsafe.Pointer(bp)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 26416  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24+16)
 26417  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26418  	(*TestStreamInput)(unsafe.Pointer(bp + 24)).FnStream = (*TestStreamInput)(unsafe.Pointer(bp)).FnStream
 26419  
 26420  	if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream > 0 {
 26421  		rc = sqlite3.Xsqlite3changeset_concat_strm(tls,
 26422  			*(*uintptr)(unsafe.Pointer(&struct {
 26423  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26424  			}{testStreamInput})), bp,
 26425  			*(*uintptr)(unsafe.Pointer(&struct {
 26426  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26427  			}{testStreamInput})), bp+24,
 26428  			*(*uintptr)(unsafe.Pointer(&struct {
 26429  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 26430  			}{testStreamOutput})), bp+48)
 26431  	} else {
 26432  		rc = sqlite3.Xsqlite3changeset_concat(tls,
 26433  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData, (*TestStreamInput)(unsafe.Pointer(bp)).FaData, (*TestStreamInput)(unsafe.Pointer(bp+24)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+24)).FaData, bp+48+8, bp+48)
 26434  	}
 26435  
 26436  	if rc != SQLITE_OK {
 26437  		rc = test_session_error(tls, interp, rc, uintptr(0))
 26438  	} else {
 26439  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fn))
 26440  	}
 26441  	sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+48)).Fp)
 26442  	return rc
 26443  }
 26444  
 26445  func test_sqlite3session_foreach(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26446  	bp := tls.Alloc(104)
 26447  	defer tls.Free(104)
 26448  
 26449  	var pChangeset uintptr
 26450  
 26451  	var rc int32
 26452  	var pVarname uintptr
 26453  	var pCS uintptr
 26454  	var pScript uintptr
 26455  	var isCheckNext int32 = 0
 26456  	var isInvert int32 = 0
 26457  
 26458  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26459  
 26460  	for objc > 1 {
 26461  		var zOpt uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26462  		var nOpt int32 = int32(libc.Xstrlen(tls, zOpt))
 26463  		if int32(*(*int8)(unsafe.Pointer(zOpt))) != '-' {
 26464  			break
 26465  		}
 26466  		if nOpt <= 7 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10380, nOpt) {
 26467  			isInvert = 1
 26468  		} else if nOpt <= 5 && 0 == sqlite3.Xsqlite3_strnicmp(tls, zOpt, ts+10538, nOpt) {
 26469  			isCheckNext = 1
 26470  		} else {
 26471  			break
 26472  		}
 26473  		objv += 8
 26474  		objc--
 26475  	}
 26476  	if objc != 4 {
 26477  		tcl.XTcl_WrongNumArgs(tls,
 26478  			interp, 1, objv, ts+10544)
 26479  		return TCL_ERROR
 26480  	}
 26481  
 26482  	pVarname = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 26483  	pCS = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 26484  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 26485  
 26486  	pChangeset = tcl.XTcl_GetByteArrayFromObj(tls, pCS, bp+24)
 26487  	(*TestStreamInput)(unsafe.Pointer(bp)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26488  	if isInvert != 0 {
 26489  		var f int32 = SQLITE_CHANGESETSTART_INVERT
 26490  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26491  			rc = sqlite3.Xsqlite3changeset_start_v2(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset, f)
 26492  		} else {
 26493  			var pCtx uintptr = bp
 26494  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26495  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26496  			rc = sqlite3.Xsqlite3changeset_start_v2_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26497  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26498  			}{testStreamInput})), pCtx, f)
 26499  		}
 26500  	} else {
 26501  		if (*TestStreamInput)(unsafe.Pointer(bp)).FnStream == 0 {
 26502  			rc = sqlite3.Xsqlite3changeset_start(tls, bp+32, *(*int32)(unsafe.Pointer(bp + 24)), pChangeset)
 26503  		} else {
 26504  			(*TestStreamInput)(unsafe.Pointer(bp)).FaData = pChangeset
 26505  			(*TestStreamInput)(unsafe.Pointer(bp)).FnData = *(*int32)(unsafe.Pointer(bp + 24))
 26506  			rc = sqlite3.Xsqlite3changeset_start_strm(tls, bp+32, *(*uintptr)(unsafe.Pointer(&struct {
 26507  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26508  			}{testStreamInput})), bp)
 26509  		}
 26510  	}
 26511  	if rc != SQLITE_OK {
 26512  		return test_session_error(tls, interp, rc, uintptr(0))
 26513  	}
 26514  
 26515  	for SQLITE_ROW == sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) {
 26516  		var pVar uintptr
 26517  		var pOld uintptr
 26518  		var pNew uintptr
 26519  
 26520  		var zPK uintptr
 26521  
 26522  		var i int32
 26523  
 26524  		if SQLITE_MISUSE != sqlite3.Xsqlite3changeset_fk_conflicts(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+40) {
 26525  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26526  			return TCL_ERROR
 26527  		}
 26528  
 26529  		sqlite3.Xsqlite3changeset_op(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+48, bp+56, bp+60, bp+64)
 26530  		pVar = tcl.XTcl_NewObj(tls)
 26531  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls,
 26532  			func() uintptr {
 26533  				if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_INSERT {
 26534  					return ts + 10307
 26535  				}
 26536  				return func() uintptr {
 26537  					if *(*int32)(unsafe.Pointer(bp + 60)) == SQLITE_UPDATE {
 26538  						return ts + 10314
 26539  					}
 26540  					return ts + 10321
 26541  				}()
 26542  			}(), -1))
 26543  
 26544  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), -1))
 26545  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewIntObj(tls, libc.Bool32(*(*int32)(unsafe.Pointer(bp + 64)) != 0)))
 26546  
 26547  		zPK = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26548  		libc.Xmemset(tls, zPK, 0, uint64(*(*int32)(unsafe.Pointer(bp + 56))+1))
 26549  		sqlite3.Xsqlite3changeset_pk(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), bp+72, bp+80)
 26550  
 26551  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26552  			*(*int8)(unsafe.Pointer(zPK + uintptr(i))) = func() int8 {
 26553  				if *(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 72)) + uintptr(i))) != 0 {
 26554  					return int8('X')
 26555  				}
 26556  				return int8('.')
 26557  			}()
 26558  		}
 26559  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, tcl.XTcl_NewStringObj(tls, zPK, -1))
 26560  		tcl.XTcl_Free(tls, zPK)
 26561  
 26562  		pOld = tcl.XTcl_NewObj(tls)
 26563  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_INSERT {
 26564  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26565  				sqlite3.Xsqlite3changeset_old(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+88)
 26566  				test_append_value(tls, pOld, *(*uintptr)(unsafe.Pointer(bp + 88)))
 26567  			}
 26568  		}
 26569  		pNew = tcl.XTcl_NewObj(tls)
 26570  		if *(*int32)(unsafe.Pointer(bp + 60)) != SQLITE_DELETE {
 26571  			for i = 0; i < *(*int32)(unsafe.Pointer(bp + 56)); i++ {
 26572  				sqlite3.Xsqlite3changeset_new(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), i, bp+96)
 26573  				test_append_value(tls, pNew, *(*uintptr)(unsafe.Pointer(bp + 96)))
 26574  			}
 26575  		}
 26576  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pOld)
 26577  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pVar, pNew)
 26578  
 26579  		tcl.XTcl_ObjSetVar2(tls, interp, pVarname, uintptr(0), pVar, 0)
 26580  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 26581  		if rc != TCL_OK && rc != TCL_CONTINUE {
 26582  			sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26583  			if rc == TCL_BREAK {
 26584  				return TCL_OK
 26585  			}
 26586  			return rc
 26587  		}
 26588  	}
 26589  
 26590  	if isCheckNext != 0 {
 26591  		var rc2 int32 = sqlite3.Xsqlite3changeset_next(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26592  		_ = rc2
 26593  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26594  
 26595  	} else {
 26596  		rc = sqlite3.Xsqlite3changeset_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 26597  	}
 26598  	if rc != SQLITE_OK {
 26599  		return test_session_error(tls, interp, rc, uintptr(0))
 26600  	}
 26601  
 26602  	return TCL_OK
 26603  }
 26604  
 26605  func test_rebaser_cmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26606  	bp := tls.Alloc(48)
 26607  	defer tls.Free(48)
 26608  
 26609  	var p uintptr = clientData
 26610  
 26611  	var rc int32
 26612  
 26613  	if objc < 2 {
 26614  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 26615  		return TCL_ERROR
 26616  	}
 26617  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26618  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub1)), int32(unsafe.Sizeof(RebaseSubcmd{})), ts+2014, 0, bp)
 26619  	if rc != TCL_OK {
 26620  		return rc
 26621  	}
 26622  	if objc != 2+aSub1[*(*int32)(unsafe.Pointer(bp))].FnArg {
 26623  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, aSub1[*(*int32)(unsafe.Pointer(bp))].FzMsg)
 26624  		return TCL_ERROR
 26625  	}
 26626  
 26627  	switch *(*int32)(unsafe.Pointer(bp)) {
 26628  	case 0:
 26629  		{
 26630  			*(*int32)(unsafe.Pointer(bp + 4)) = 0
 26631  			var pRebase uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4)
 26632  			rc = sqlite3.Xsqlite3rebaser_configure(tls, p, *(*int32)(unsafe.Pointer(bp + 4)), pRebase)
 26633  			break
 26634  
 26635  		}
 26636  
 26637  	case 1:
 26638  		tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 26639  		break
 26640  
 26641  	default:
 26642  		{
 26643  			libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(TestStreamInput{})))
 26644  			libc.Xmemset(tls, bp+32, 0, uint64(unsafe.Sizeof(TestSessionsBlob{})))
 26645  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FaData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8+16)
 26646  			(*TestStreamInput)(unsafe.Pointer(bp + 8)).FnStream = test_tcl_integer(tls, interp, ts+10098)
 26647  
 26648  			if (*TestStreamInput)(unsafe.Pointer(bp+8)).FnStream != 0 {
 26649  				rc = sqlite3.Xsqlite3rebaser_rebase_strm(tls, p,
 26650  					*(*uintptr)(unsafe.Pointer(&struct {
 26651  						f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 26652  					}{testStreamInput})), bp+8,
 26653  					*(*uintptr)(unsafe.Pointer(&struct {
 26654  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 26655  					}{testStreamOutput})), bp+32)
 26656  			} else {
 26657  				rc = sqlite3.Xsqlite3rebaser_rebase(tls, p, (*TestStreamInput)(unsafe.Pointer(bp+8)).FnData, (*TestStreamInput)(unsafe.Pointer(bp+8)).FaData, bp+32+8, bp+32)
 26658  			}
 26659  
 26660  			if rc == SQLITE_OK {
 26661  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fn))
 26662  			}
 26663  			sqlite3.Xsqlite3_free(tls, (*TestSessionsBlob)(unsafe.Pointer(bp+32)).Fp)
 26664  			break
 26665  
 26666  		}
 26667  	}
 26668  
 26669  	if rc != SQLITE_OK {
 26670  		return test_session_error(tls, interp, rc, uintptr(0))
 26671  	}
 26672  	return TCL_OK
 26673  }
 26674  
 26675  type RebaseSubcmd = struct {
 26676  	FzSub        uintptr
 26677  	FnArg        int32
 26678  	F__ccgo_pad1 [4]byte
 26679  	FzMsg        uintptr
 26680  	FiSub        int32
 26681  	F__ccgo_pad2 [4]byte
 26682  }
 26683  
 26684  var aSub1 = [4]RebaseSubcmd{
 26685  	{FzSub: ts + 10587, FnArg: 1, FzMsg: ts + 10597},
 26686  	{FzSub: ts + 10138, FzMsg: ts + 584},
 26687  	{FzSub: ts + 10609, FnArg: 1, FzMsg: ts + 10517},
 26688  	{},
 26689  }
 26690  
 26691  func test_rebaser_del(tls *libc.TLS, clientData uintptr) {
 26692  	var p uintptr = clientData
 26693  	sqlite3.Xsqlite3rebaser_delete(tls, p)
 26694  }
 26695  
 26696  func test_sqlite3rebaser_create(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26697  	bp := tls.Alloc(8)
 26698  	defer tls.Free(8)
 26699  
 26700  	var rc int32
 26701  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 26702  	if objc != 2 {
 26703  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 26704  		return SQLITE_ERROR
 26705  	}
 26706  
 26707  	rc = sqlite3.Xsqlite3rebaser_create(tls, bp)
 26708  	if rc != SQLITE_OK {
 26709  		return test_session_error(tls, interp, rc, uintptr(0))
 26710  	}
 26711  
 26712  	tcl.XTcl_CreateObjCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 26713  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26714  	}{test_rebaser_cmd})),
 26715  		*(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_rebaser_del})))
 26716  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 26717  	return TCL_OK
 26718  }
 26719  
 26720  func test_sqlite3session_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 26721  	bp := tls.Alloc(8)
 26722  	defer tls.Free(8)
 26723  
 26724  	var rc int32
 26725  
 26726  	if objc != 3 {
 26727  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10616)
 26728  		return SQLITE_ERROR
 26729  	}
 26730  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 26731  		*(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&aSub2)), int32(unsafe.Sizeof(ConfigOpt{})), ts+2014, 0, bp)
 26732  	if rc != TCL_OK {
 26733  		return rc
 26734  	}
 26735  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 26736  		return TCL_ERROR
 26737  	}
 26738  
 26739  	rc = sqlite3.Xsqlite3session_config(tls, aSub2[*(*int32)(unsafe.Pointer(bp))].Fop, bp+4)
 26740  	if rc != SQLITE_OK {
 26741  		return test_session_error(tls, interp, rc, uintptr(0))
 26742  	}
 26743  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 26744  	return TCL_OK
 26745  }
 26746  
 26747  type ConfigOpt = struct {
 26748  	FzSub        uintptr
 26749  	Fop          int32
 26750  	F__ccgo_pad1 [4]byte
 26751  }
 26752  
 26753  var aSub2 = [3]ConfigOpt{
 26754  	{FzSub: ts + 10625, Fop: SQLITE_SESSION_CONFIG_STRMSIZE},
 26755  	{FzSub: ts + 2758},
 26756  	{},
 26757  }
 26758  
 26759  func TestSession_Init(tls *libc.TLS, interp uintptr) int32 {
 26760  	bp := tls.Alloc(160)
 26761  	defer tls.Free(160)
 26762  
 26763  	*(*[10]struct {
 26764  		FzCmd  uintptr
 26765  		FxProc uintptr
 26766  	})(unsafe.Pointer(bp)) = [10]struct {
 26767  		FzCmd  uintptr
 26768  		FxProc uintptr
 26769  	}{
 26770  		{FzCmd: ts + 10635, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26771  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26772  		}{test_sqlite3session}))},
 26773  		{FzCmd: ts + 10650, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26774  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26775  		}{test_sqlite3session_foreach}))},
 26776  		{FzCmd: ts + 10673, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26777  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26778  		}{test_sqlite3changeset_invert}))},
 26779  		{FzCmd: ts + 10697, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26780  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26781  		}{test_sqlite3changeset_concat}))},
 26782  		{FzCmd: ts + 10721, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26783  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26784  		}{test_sqlite3changeset_apply}))},
 26785  		{FzCmd: ts + 10744, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26786  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26787  		}{test_sqlite3changeset_apply_v2}))},
 26788  		{FzCmd: ts + 10770,
 26789  			FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26790  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26791  			}{test_sqlite3changeset_apply_replace_all}))},
 26792  		{FzCmd: ts + 10805, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26793  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26794  		}{test_sql_exec_changeset}))},
 26795  		{FzCmd: ts + 10824, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26796  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26797  		}{test_sqlite3rebaser_create}))},
 26798  		{FzCmd: ts + 10846, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 26799  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 26800  		}{test_sqlite3session_config}))},
 26801  	}
 26802  	var i int32
 26803  
 26804  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([10]struct {
 26805  		FzCmd  uintptr
 26806  		FxProc uintptr
 26807  	}{}))/uint64(unsafe.Sizeof(struct {
 26808  		FzCmd  uintptr
 26809  		FxProc uintptr
 26810  	}{})); i++ {
 26811  		var p uintptr = bp + uintptr(i)*16
 26812  		tcl.XTcl_CreateObjCommand(tls, interp, (*struct {
 26813  			FzCmd  uintptr
 26814  			FxProc uintptr
 26815  		})(unsafe.Pointer(p)).FzCmd, (*struct {
 26816  			FzCmd  uintptr
 26817  			FxProc uintptr
 26818  		})(unsafe.Pointer(p)).FxProc, uintptr(0), uintptr(0))
 26819  	}
 26820  
 26821  	return TCL_OK
 26822  }
 26823  
 26824  type sig_atomic_t = int32
 26825  
 26826  type sigcontext = struct {
 26827  	Fsc_rdi      int64
 26828  	Fsc_rsi      int64
 26829  	Fsc_rdx      int64
 26830  	Fsc_rcx      int64
 26831  	Fsc_r8       int64
 26832  	Fsc_r9       int64
 26833  	Fsc_r10      int64
 26834  	Fsc_r11      int64
 26835  	Fsc_r12      int64
 26836  	Fsc_r13      int64
 26837  	Fsc_r14      int64
 26838  	Fsc_r15      int64
 26839  	Fsc_rbp      int64
 26840  	Fsc_rbx      int64
 26841  	Fsc_rax      int64
 26842  	Fsc_gs       int64
 26843  	Fsc_fs       int64
 26844  	Fsc_es       int64
 26845  	Fsc_ds       int64
 26846  	Fsc_trapno   int64
 26847  	Fsc_err      int64
 26848  	Fsc_rip      int64
 26849  	Fsc_cs       int64
 26850  	Fsc_rflags   int64
 26851  	Fsc_rsp      int64
 26852  	Fsc_ss       int64
 26853  	Fsc_fpstate  uintptr
 26854  	F__sc_unused int32
 26855  	Fsc_mask     int32
 26856  	Fsc_cookie   int64
 26857  }
 26858  
 26859  type sigval = struct {
 26860  	F__ccgo_pad1 [0]uint64
 26861  	Fsival_int   int32
 26862  	F__ccgo_pad2 [4]byte
 26863  }
 26864  
 26865  type siginfo_t = struct {
 26866  	Fsi_signo    int32
 26867  	Fsi_code     int32
 26868  	Fsi_errno    int32
 26869  	F__ccgo_pad1 [4]byte
 26870  	F_data       struct {
 26871  		F__ccgo_pad1 [0]uint64
 26872  		F_pad        [29]int32
 26873  		F__ccgo_pad2 [4]byte
 26874  	}
 26875  }
 26876  
 26877  type sigaction = struct {
 26878  	F__sigaction_u struct{ F__sa_handler uintptr }
 26879  	Fsa_mask       sigset_t
 26880  	Fsa_flags      int32
 26881  }
 26882  
 26883  type sig_t = uintptr
 26884  
 26885  type sigvec = struct {
 26886  	Fsv_handler uintptr
 26887  	Fsv_mask    int32
 26888  	Fsv_flags   int32
 26889  }
 26890  
 26891  type sigaltstack = struct {
 26892  	Fss_sp       uintptr
 26893  	Fss_size     size_t
 26894  	Fss_flags    int32
 26895  	F__ccgo_pad1 [4]byte
 26896  }
 26897  
 26898  type stack_t = sigaltstack
 26899  
 26900  type ucontext_t = sigcontext
 26901  
 26902  type SqliteDb = struct {
 26903  	Fdb             uintptr
 26904  	Finterp         uintptr
 26905  	FzBusy          uintptr
 26906  	FzCommit        uintptr
 26907  	FzTrace         uintptr
 26908  	FzTraceV2       uintptr
 26909  	FzProfile       uintptr
 26910  	FzProgress      uintptr
 26911  	FzBindFallback  uintptr
 26912  	FzAuth          uintptr
 26913  	FdisableAuth    int32
 26914  	F__ccgo_pad1    [4]byte
 26915  	FzNull          uintptr
 26916  	FpFunc          uintptr
 26917  	FpUpdateHook    uintptr
 26918  	FpPreUpdateHook uintptr
 26919  	FpRollbackHook  uintptr
 26920  	FpWalHook       uintptr
 26921  	FpUnlockNotify  uintptr
 26922  	FpCollate       uintptr
 26923  	Frc             int32
 26924  	F__ccgo_pad2    [4]byte
 26925  	FpCollateNeeded uintptr
 26926  	FstmtList       uintptr
 26927  	FstmtLast       uintptr
 26928  	FmaxStmt        int32
 26929  	FnStmt          int32
 26930  	FpIncrblob      uintptr
 26931  	FnStep          int32
 26932  	FnSort          int32
 26933  	FnIndex         int32
 26934  	FnVMStep        int32
 26935  	FnTransaction   int32
 26936  	FopenFlags      int32
 26937  	FnRef           int32
 26938  	FbLegacyPrepare int32
 26939  }
 26940  
 26941  type SqlFunc1 = struct {
 26942  	Finterp      uintptr
 26943  	FpScript     uintptr
 26944  	FpDb         uintptr
 26945  	FuseEvalObjv int32
 26946  	FeType       int32
 26947  	FzName       uintptr
 26948  	FpNext       uintptr
 26949  }
 26950  
 26951  type SqlFunc = SqlFunc1
 26952  
 26953  type SqlCollate1 = struct {
 26954  	Finterp  uintptr
 26955  	FzScript uintptr
 26956  	FpNext   uintptr
 26957  }
 26958  
 26959  type SqlCollate = SqlCollate1
 26960  
 26961  type SqlPreparedStmt1 = struct {
 26962  	FpNext       uintptr
 26963  	FpPrev       uintptr
 26964  	FpStmt       uintptr
 26965  	FnSql        int32
 26966  	F__ccgo_pad1 [4]byte
 26967  	FzSql        uintptr
 26968  	FnParm       int32
 26969  	F__ccgo_pad2 [4]byte
 26970  	FapParm      uintptr
 26971  }
 26972  
 26973  type SqlPreparedStmt = SqlPreparedStmt1
 26974  
 26975  type IncrblobChannel1 = struct {
 26976  	FpBlob       uintptr
 26977  	FpDb         uintptr
 26978  	FiSeek       int32
 26979  	F__ccgo_pad1 [4]byte
 26980  	Fchannel     Tcl_Channel
 26981  	FpNext       uintptr
 26982  	FpPrev       uintptr
 26983  }
 26984  
 26985  type IncrblobChannel = IncrblobChannel1
 26986  
 26987  func strlen30(tls *libc.TLS, z uintptr) int32 {
 26988  	var z2 uintptr = z
 26989  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 26990  		z2++
 26991  	}
 26992  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 26993  }
 26994  
 26995  func closeIncrblobChannels(tls *libc.TLS, pDb uintptr) {
 26996  	var p uintptr
 26997  	var pNext uintptr
 26998  
 26999  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob; p != 0; p = pNext {
 27000  		pNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27001  
 27002  		tcl.XTcl_UnregisterChannel(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27003  	}
 27004  }
 27005  
 27006  func incrblobClose(tls *libc.TLS, instanceData ClientData, interp uintptr) int32 {
 27007  	var p uintptr = instanceData
 27008  	var rc int32 = sqlite3.Xsqlite3_blob_close(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27009  	var db uintptr = (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).Fdb
 27010  
 27011  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27012  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev
 27013  	}
 27014  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpPrev != 0 {
 27015  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpPrev)).FpNext = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27016  	}
 27017  	if (*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob == p {
 27018  		(*SqliteDb)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpDb)).FpIncrblob = (*IncrblobChannel)(unsafe.Pointer(p)).FpNext
 27019  	}
 27020  
 27021  	tcl.XTcl_Free(tls, p)
 27022  
 27023  	if rc != SQLITE_OK {
 27024  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(1))
 27025  		return TCL_ERROR
 27026  	}
 27027  	return TCL_OK
 27028  }
 27029  
 27030  func incrblobInput(tls *libc.TLS, instanceData ClientData, buf uintptr, bufSize int32, errorCodePtr uintptr) int32 {
 27031  	var p uintptr = instanceData
 27032  	var nRead int32 = bufSize
 27033  	var nBlob int32
 27034  	var rc int32
 27035  
 27036  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27037  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nRead > nBlob {
 27038  		nRead = nBlob - (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27039  	}
 27040  	if nRead <= 0 {
 27041  		return 0
 27042  	}
 27043  
 27044  	rc = sqlite3.Xsqlite3_blob_read(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nRead, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27045  	if rc != SQLITE_OK {
 27046  		*(*int32)(unsafe.Pointer(errorCodePtr)) = rc
 27047  		return -1
 27048  	}
 27049  
 27050  	*(*int32)(unsafe.Pointer(p + 16)) += nRead
 27051  	return nRead
 27052  }
 27053  
 27054  func incrblobOutput(tls *libc.TLS, instanceData ClientData, buf uintptr, toWrite int32, errorCodePtr uintptr) int32 {
 27055  	var p uintptr = instanceData
 27056  	var nWrite int32 = toWrite
 27057  	var nBlob int32
 27058  	var rc int32
 27059  
 27060  	nBlob = sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)
 27061  	if (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek+nWrite > nBlob {
 27062  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EINVAL
 27063  		return -1
 27064  	}
 27065  	if nWrite <= 0 {
 27066  		return 0
 27067  	}
 27068  
 27069  	rc = sqlite3.Xsqlite3_blob_write(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob, buf, nWrite, (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek)
 27070  	if rc != SQLITE_OK {
 27071  		*(*int32)(unsafe.Pointer(errorCodePtr)) = EIO
 27072  		return -1
 27073  	}
 27074  
 27075  	*(*int32)(unsafe.Pointer(p + 16)) += nWrite
 27076  	return nWrite
 27077  }
 27078  
 27079  func incrblobSeek(tls *libc.TLS, instanceData ClientData, offset int64, seekMode int32, errorCodePtr uintptr) int32 {
 27080  	var p uintptr = instanceData
 27081  
 27082  	switch seekMode {
 27083  	case SEEK_SET:
 27084  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(offset)
 27085  		break
 27086  	case SEEK_CUR:
 27087  		*(*int32)(unsafe.Pointer(p + 16)) += int32(offset)
 27088  		break
 27089  	case SEEK_END:
 27090  		(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = int32(int64(sqlite3.Xsqlite3_blob_bytes(tls, (*IncrblobChannel)(unsafe.Pointer(p)).FpBlob)) + offset)
 27091  		break
 27092  
 27093  	default:
 27094  	}
 27095  
 27096  	return (*IncrblobChannel)(unsafe.Pointer(p)).FiSeek
 27097  }
 27098  
 27099  func incrblobWatch(tls *libc.TLS, instanceData ClientData, mode int32) {
 27100  }
 27101  
 27102  func incrblobHandle(tls *libc.TLS, instanceData ClientData, dir int32, hPtr uintptr) int32 {
 27103  	return TCL_ERROR
 27104  }
 27105  
 27106  var IncrblobChannelType = Tcl_ChannelType{
 27107  	FtypeName:      ts + 10868,
 27108  	Fversion:       uintptr(0x2),
 27109  	FcloseProc:     0,
 27110  	FinputProc:     0,
 27111  	FoutputProc:    0,
 27112  	FseekProc:      0,
 27113  	FwatchProc:     0,
 27114  	FgetHandleProc: 0,
 27115  }
 27116  
 27117  func createIncrblobChannel(tls *libc.TLS, interp uintptr, pDb uintptr, zDb uintptr, zTable uintptr, zColumn uintptr, iRow sqlite_int64, isReadonly int32) int32 {
 27118  	bp := tls.Alloc(80)
 27119  	defer tls.Free(80)
 27120  
 27121  	var p uintptr
 27122  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 27123  
 27124  	var rc int32
 27125  	var flags int32 = int32(1)<<1 | func() int32 {
 27126  		if isReadonly != 0 {
 27127  			return 0
 27128  		}
 27129  		return int32(1) << 2
 27130  	}()
 27131  
 27132  	rc = sqlite3.Xsqlite3_blob_open(tls, db, zDb, zTable, zColumn, iRow, libc.BoolInt32(!(isReadonly != 0)), bp+8)
 27133  	if rc != SQLITE_OK {
 27134  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 27135  		return TCL_ERROR
 27136  	}
 27137  
 27138  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(IncrblobChannel{})))
 27139  	(*IncrblobChannel)(unsafe.Pointer(p)).FiSeek = 0
 27140  	(*IncrblobChannel)(unsafe.Pointer(p)).FpBlob = *(*uintptr)(unsafe.Pointer(bp + 8))
 27141  
 27142  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+10877, libc.VaList(bp, libc.PreIncInt32(&count, 1)))
 27143  	(*IncrblobChannel)(unsafe.Pointer(p)).Fchannel = tcl.XTcl_CreateChannel(tls, uintptr(unsafe.Pointer(&IncrblobChannelType)), bp+16, p, flags)
 27144  	tcl.XTcl_RegisterChannel(tls, interp, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel)
 27145  
 27146  	(*IncrblobChannel)(unsafe.Pointer(p)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob
 27147  	(*IncrblobChannel)(unsafe.Pointer(p)).FpPrev = uintptr(0)
 27148  	if (*IncrblobChannel)(unsafe.Pointer(p)).FpNext != 0 {
 27149  		(*IncrblobChannel)(unsafe.Pointer((*IncrblobChannel)(unsafe.Pointer(p)).FpNext)).FpPrev = p
 27150  	}
 27151  	(*SqliteDb)(unsafe.Pointer(pDb)).FpIncrblob = p
 27152  	(*IncrblobChannel)(unsafe.Pointer(p)).FpDb = pDb
 27153  
 27154  	tcl.XTcl_SetResult(tls, interp, tcl.XTcl_GetChannelName(tls, (*IncrblobChannel)(unsafe.Pointer(p)).Fchannel), uintptr(1))
 27155  	return TCL_OK
 27156  }
 27157  
 27158  var count int32 = 0
 27159  
 27160  func safeToUseEvalObjv(tls *libc.TLS, interp uintptr, pCmd uintptr) int32 {
 27161  	bp := tls.Alloc(4)
 27162  	defer tls.Free(4)
 27163  
 27164  	var z uintptr
 27165  
 27166  	z = tcl.XTcl_GetStringFromObj(tls, pCmd, bp)
 27167  	for libc.PostDecInt32(&*(*int32)(unsafe.Pointer(bp)), 1) > 0 {
 27168  		var c int32 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 27169  		if c == '$' || c == '[' || c == ';' {
 27170  			return 0
 27171  		}
 27172  	}
 27173  	return 1
 27174  }
 27175  
 27176  func findSqlFunc(tls *libc.TLS, pDb uintptr, zName uintptr) uintptr {
 27177  	var p uintptr
 27178  	var pNew uintptr
 27179  	var nName int32 = strlen30(tls, zName)
 27180  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlFunc{}))+uint64(nName)+uint64(1)))
 27181  	(*SqlFunc)(unsafe.Pointer(pNew)).FzName = pNew + 1*48
 27182  	libc.Xmemcpy(tls, (*SqlFunc)(unsafe.Pointer(pNew)).FzName, zName, uint64(nName+1))
 27183  	for p = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc; p != 0; p = (*SqlFunc)(unsafe.Pointer(p)).FpNext {
 27184  		if sqlite3.Xsqlite3_stricmp(tls, (*SqlFunc)(unsafe.Pointer(p)).FzName, (*SqlFunc)(unsafe.Pointer(pNew)).FzName) == 0 {
 27185  			tcl.XTcl_Free(tls, pNew)
 27186  			return p
 27187  		}
 27188  	}
 27189  	(*SqlFunc)(unsafe.Pointer(pNew)).Finterp = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27190  	(*SqlFunc)(unsafe.Pointer(pNew)).FpDb = pDb
 27191  	(*SqlFunc)(unsafe.Pointer(pNew)).FpScript = uintptr(0)
 27192  	(*SqlFunc)(unsafe.Pointer(pNew)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27193  	(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = pNew
 27194  	return pNew
 27195  }
 27196  
 27197  func dbFreeStmt(tls *libc.TLS, pStmt uintptr) {
 27198  	if sqlite3.Xsqlite3_sql(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt) == uintptr(0) {
 27199  		tcl.XTcl_Free(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FzSql)
 27200  	}
 27201  	sqlite3.Xsqlite3_finalize(tls, (*SqlPreparedStmt)(unsafe.Pointer(pStmt)).FpStmt)
 27202  	tcl.XTcl_Free(tls, pStmt)
 27203  }
 27204  
 27205  func flushStmtCache(tls *libc.TLS, pDb uintptr) {
 27206  	var pPreStmt uintptr
 27207  	var pNext uintptr
 27208  
 27209  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = pNext {
 27210  		pNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 27211  		dbFreeStmt(tls, pPreStmt)
 27212  	}
 27213  	(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt = 0
 27214  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = uintptr(0)
 27215  	(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = uintptr(0)
 27216  }
 27217  
 27218  func addDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27219  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef++
 27220  }
 27221  
 27222  func delDatabaseRef(tls *libc.TLS, pDb uintptr) {
 27223  	(*SqliteDb)(unsafe.Pointer(pDb)).FnRef--
 27224  	if (*SqliteDb)(unsafe.Pointer(pDb)).FnRef == 0 {
 27225  		flushStmtCache(tls, pDb)
 27226  		closeIncrblobChannels(tls, pDb)
 27227  		sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 27228  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc != 0 {
 27229  			var pFunc uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpFunc
 27230  			(*SqliteDb)(unsafe.Pointer(pDb)).FpFunc = (*SqlFunc)(unsafe.Pointer(pFunc)).FpNext
 27231  
 27232  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27233  				var _objPtr uintptr = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 27234  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27235  					tcl.XTclFreeObj(tls, _objPtr)
 27236  				}
 27237  			}
 27238  			tcl.XTcl_Free(tls, pFunc)
 27239  		}
 27240  		for (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate != 0 {
 27241  			var pCollate uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 27242  			(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = (*SqlCollate)(unsafe.Pointer(pCollate)).FpNext
 27243  			tcl.XTcl_Free(tls, pCollate)
 27244  		}
 27245  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0 {
 27246  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 27247  		}
 27248  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0 {
 27249  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 27250  		}
 27251  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0 {
 27252  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 27253  		}
 27254  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0 {
 27255  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 27256  		}
 27257  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0 {
 27258  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 27259  		}
 27260  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0 {
 27261  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 27262  		}
 27263  		if (*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0 {
 27264  			tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 27265  		}
 27266  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 27267  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27268  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook
 27269  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27270  					tcl.XTclFreeObj(tls, _objPtr)
 27271  				}
 27272  			}
 27273  		}
 27274  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 27275  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27276  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook
 27277  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27278  					tcl.XTclFreeObj(tls, _objPtr)
 27279  				}
 27280  			}
 27281  		}
 27282  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 27283  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27284  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook
 27285  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27286  					tcl.XTclFreeObj(tls, _objPtr)
 27287  				}
 27288  			}
 27289  		}
 27290  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 27291  			for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 {
 27292  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook
 27293  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27294  					tcl.XTclFreeObj(tls, _objPtr)
 27295  				}
 27296  			}
 27297  		}
 27298  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0 {
 27299  			for __ccgo5 := true; __ccgo5; __ccgo5 = 0 != 0 {
 27300  				var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 27301  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27302  					tcl.XTclFreeObj(tls, _objPtr)
 27303  				}
 27304  			}
 27305  		}
 27306  		tcl.XTcl_Free(tls, pDb)
 27307  	}
 27308  }
 27309  
 27310  func DbDeleteCmd(tls *libc.TLS, db uintptr) {
 27311  	var pDb uintptr = db
 27312  	delDatabaseRef(tls, pDb)
 27313  }
 27314  
 27315  func DbBusyHandler(tls *libc.TLS, cd uintptr, nTries int32) int32 {
 27316  	bp := tls.Alloc(70)
 27317  	defer tls.Free(70)
 27318  
 27319  	var pDb uintptr = cd
 27320  	var rc int32
 27321  
 27322  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+40, ts+1333, libc.VaList(bp, nTries))
 27323  	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)))
 27324  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27325  		return 0
 27326  	}
 27327  	return 1
 27328  }
 27329  
 27330  func DbProgressHandler(tls *libc.TLS, cd uintptr) int32 {
 27331  	var pDb uintptr = cd
 27332  	var rc int32
 27333  
 27334  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 27335  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27336  		return 1
 27337  	}
 27338  	return 0
 27339  }
 27340  
 27341  func DbTraceHandler(tls *libc.TLS, cd uintptr, zSql uintptr) {
 27342  	bp := tls.Alloc(216)
 27343  	defer tls.Free(216)
 27344  
 27345  	var pDb uintptr = cd
 27346  
 27347  	tcl.XTcl_DStringInit(tls, bp)
 27348  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, -1)
 27349  	tcl.XTcl_DStringAppendElement(tls, bp, zSql)
 27350  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27351  	tcl.XTcl_DStringFree(tls, bp)
 27352  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27353  }
 27354  
 27355  func DbTraceV2Handler(tls *libc.TLS, type1 uint32, cd uintptr, pd uintptr, xd uintptr) int32 {
 27356  	var pDb uintptr = cd
 27357  	var pCmd uintptr
 27358  
 27359  	switch type1 {
 27360  	case uint32(SQLITE_TRACE_STMT):
 27361  		{
 27362  			var pStmt uintptr = pd
 27363  			var zSql uintptr = xd
 27364  
 27365  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27366  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27367  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27368  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27369  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27370  				tcl.XTcl_NewStringObj(tls, zSql, -1))
 27371  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27372  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27373  				var _objPtr uintptr = pCmd
 27374  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27375  					tcl.XTclFreeObj(tls, _objPtr)
 27376  				}
 27377  			}
 27378  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27379  			break
 27380  
 27381  		}
 27382  	case uint32(SQLITE_TRACE_PROFILE):
 27383  		{
 27384  			var pStmt uintptr = pd
 27385  			var ns sqlite3_int64 = *(*sqlite3_int64)(unsafe.Pointer(xd))
 27386  
 27387  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27388  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27389  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27390  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27391  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27392  				tcl.XTcl_NewWideIntObj(tls, ns))
 27393  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27394  			for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27395  				var _objPtr uintptr = pCmd
 27396  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27397  					tcl.XTclFreeObj(tls, _objPtr)
 27398  				}
 27399  			}
 27400  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27401  			break
 27402  
 27403  		}
 27404  	case uint32(SQLITE_TRACE_ROW):
 27405  		{
 27406  			var pStmt uintptr = pd
 27407  
 27408  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27409  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27410  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27411  				tcl.XTcl_NewWideIntObj(tls, int64(pStmt)))
 27412  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27413  			for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27414  				var _objPtr uintptr = pCmd
 27415  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27416  					tcl.XTclFreeObj(tls, _objPtr)
 27417  				}
 27418  			}
 27419  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27420  			break
 27421  
 27422  		}
 27423  	case uint32(SQLITE_TRACE_CLOSE):
 27424  		{
 27425  			var db uintptr = pd
 27426  
 27427  			pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, -1)
 27428  			(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27429  			tcl.XTcl_ListObjAppendElement(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd,
 27430  				tcl.XTcl_NewWideIntObj(tls, int64(db)))
 27431  			tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27432  			for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 27433  				var _objPtr uintptr = pCmd
 27434  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27435  					tcl.XTclFreeObj(tls, _objPtr)
 27436  				}
 27437  			}
 27438  			tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27439  			break
 27440  
 27441  		}
 27442  	}
 27443  	return SQLITE_OK
 27444  }
 27445  
 27446  func DbProfileHandler(tls *libc.TLS, cd uintptr, zSql uintptr, tm1 sqlite_uint64) {
 27447  	bp := tls.Alloc(328)
 27448  	defer tls.Free(328)
 27449  
 27450  	var pDb uintptr = cd
 27451  
 27452  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([100]int8{}))-uint64(1)), bp+8, ts+6325, libc.VaList(bp, tm1))
 27453  	tcl.XTcl_DStringInit(tls, bp+112)
 27454  	tcl.XTcl_DStringAppend(tls, bp+112, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, -1)
 27455  	tcl.XTcl_DStringAppendElement(tls, bp+112, zSql)
 27456  	tcl.XTcl_DStringAppendElement(tls, bp+112, bp+8)
 27457  	tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+112)).Fstring)
 27458  	tcl.XTcl_DStringFree(tls, bp+112)
 27459  	tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27460  }
 27461  
 27462  func DbCommitHandler(tls *libc.TLS, cd uintptr) int32 {
 27463  	var pDb uintptr = cd
 27464  	var rc int32
 27465  
 27466  	rc = tcl.XTcl_Eval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 27467  	if rc != TCL_OK || libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)) != 0 {
 27468  		return 1
 27469  	}
 27470  	return 0
 27471  }
 27472  
 27473  func DbRollbackHandler(tls *libc.TLS, clientData uintptr) {
 27474  	var pDb uintptr = clientData
 27475  
 27476  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook, 0) {
 27477  		tcl.XTcl_BackgroundError(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27478  	}
 27479  }
 27480  
 27481  func DbWalHandler(tls *libc.TLS, clientData uintptr, db uintptr, zDb uintptr, nEntry int32) int32 {
 27482  	bp := tls.Alloc(4)
 27483  	defer tls.Free(4)
 27484  
 27485  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 27486  	var p uintptr
 27487  	var pDb uintptr = clientData
 27488  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 27489  
 27490  	p = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook)
 27491  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 27492  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27493  	tcl.XTcl_ListObjAppendElement(tls, interp, p, tcl.XTcl_NewIntObj(tls, nEntry))
 27494  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, interp, p, 0) ||
 27495  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, tcl.XTcl_GetObjResult(tls, interp), bp) {
 27496  		tcl.XTcl_BackgroundError(tls, interp)
 27497  	}
 27498  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27499  		var _objPtr uintptr = p
 27500  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27501  			tcl.XTclFreeObj(tls, _objPtr)
 27502  		}
 27503  	}
 27504  
 27505  	return *(*int32)(unsafe.Pointer(bp))
 27506  }
 27507  
 27508  func setTestUnlockNotifyVars(tls *libc.TLS, interp uintptr, iArg int32, nArg int32) {
 27509  	bp := tls.Alloc(80)
 27510  	defer tls.Free(80)
 27511  
 27512  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp, iArg))
 27513  	tcl.XTcl_SetVar2(tls, interp, ts+10889, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 27514  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([64]int8{})), bp+16, ts+1333, libc.VaList(bp+8, nArg))
 27515  	tcl.XTcl_SetVar2(tls, interp, ts+10914, uintptr(0), bp+16, TCL_GLOBAL_ONLY)
 27516  }
 27517  
 27518  func DbUnlockNotify(tls *libc.TLS, apArg uintptr, nArg int32) {
 27519  	var i int32
 27520  	for i = 0; i < nArg; i++ {
 27521  		var flags int32 = TCL_EVAL_GLOBAL | TCL_EVAL_DIRECT
 27522  		var pDb uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 27523  		setTestUnlockNotifyVars(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, i, nArg)
 27524  
 27525  		tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify, flags)
 27526  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27527  			var _objPtr uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 27528  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27529  				tcl.XTclFreeObj(tls, _objPtr)
 27530  			}
 27531  		}
 27532  		(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 27533  	}
 27534  }
 27535  
 27536  func DbPreUpdateHandler(tls *libc.TLS, p uintptr, db uintptr, op int32, zDb uintptr, zTbl uintptr, iKey1 sqlite_int64, iKey2 sqlite_int64) {
 27537  	var pDb uintptr = p
 27538  	var pCmd uintptr
 27539  
 27540  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook)
 27541  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27542  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr[(op-1)/9], -1))
 27543  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27544  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 27545  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey1))
 27546  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, iKey2))
 27547  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27548  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27549  		var _objPtr uintptr = pCmd
 27550  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27551  			tcl.XTclFreeObj(tls, _objPtr)
 27552  		}
 27553  	}
 27554  }
 27555  
 27556  var azStr = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 27557  
 27558  func DbUpdateHandler(tls *libc.TLS, p uintptr, op int32, zDb uintptr, zTbl uintptr, rowid sqlite_int64) {
 27559  	var pDb uintptr = p
 27560  	var pCmd uintptr
 27561  
 27562  	pCmd = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook)
 27563  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27564  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, azStr1[(op-1)/9], -1))
 27565  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zDb, -1))
 27566  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewStringObj(tls, zTbl, -1))
 27567  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pCmd, tcl.XTcl_NewWideIntObj(tls, rowid))
 27568  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27569  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27570  		var _objPtr uintptr = pCmd
 27571  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27572  			tcl.XTclFreeObj(tls, _objPtr)
 27573  		}
 27574  	}
 27575  }
 27576  
 27577  var azStr1 = [3]uintptr{ts + 10321, ts + 10307, ts + 10314}
 27578  
 27579  func tclCollateNeeded(tls *libc.TLS, pCtx uintptr, db uintptr, enc int32, zName uintptr) {
 27580  	var pDb uintptr = pCtx
 27581  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)
 27582  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 27583  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zName, -1))
 27584  	tcl.XTcl_EvalObjEx(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, pScript, 0)
 27585  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27586  		var _objPtr uintptr = pScript
 27587  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27588  			tcl.XTclFreeObj(tls, _objPtr)
 27589  		}
 27590  	}
 27591  }
 27592  
 27593  func tclSqlCollate(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 27594  	var p uintptr = pCtx
 27595  	var pCmd uintptr
 27596  
 27597  	pCmd = tcl.XTcl_NewStringObj(tls, (*SqlCollate)(unsafe.Pointer(p)).FzScript, -1)
 27598  	(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27599  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zA, nA))
 27600  	tcl.XTcl_ListObjAppendElement(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, tcl.XTcl_NewStringObj(tls, zB, nB))
 27601  	tcl.XTcl_EvalObjEx(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27602  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27603  		var _objPtr uintptr = pCmd
 27604  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27605  			tcl.XTclFreeObj(tls, _objPtr)
 27606  		}
 27607  	}
 27608  	return libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, (*SqlCollate)(unsafe.Pointer(p)).Finterp))
 27609  }
 27610  
 27611  func tclSqlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 27612  	bp := tls.Alloc(40)
 27613  	defer tls.Free(40)
 27614  
 27615  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, context)
 27616  	var pCmd uintptr
 27617  	var i int32
 27618  	var rc int32
 27619  
 27620  	if argc == 0 {
 27621  		pCmd = (*SqlFunc)(unsafe.Pointer(p)).FpScript
 27622  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27623  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, 0)
 27624  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 27625  			var _objPtr uintptr = pCmd
 27626  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27627  				tcl.XTclFreeObj(tls, _objPtr)
 27628  			}
 27629  		}
 27630  	} else {
 27631  		if tcl.XTcl_ListObjGetElements(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, (*SqlFunc)(unsafe.Pointer(p)).FpScript, bp, bp+8) != 0 {
 27632  			sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27633  			return
 27634  		}
 27635  		pCmd = tcl.XTcl_NewListObj(tls, *(*int32)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(bp + 8)))
 27636  		(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 27637  		for i = 0; i < argc; i++ {
 27638  			var pIn uintptr = *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 27639  			var pVal uintptr
 27640  
 27641  			switch sqlite3.Xsqlite3_value_type(tls, pIn) {
 27642  			case SQLITE_BLOB:
 27643  				{
 27644  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 27645  					pVal = tcl.XTcl_NewByteArrayObj(tls, sqlite3.Xsqlite3_value_blob(tls, pIn), bytes)
 27646  					break
 27647  
 27648  				}
 27649  				fallthrough
 27650  			case SQLITE_INTEGER:
 27651  				{
 27652  					var v sqlite_int64 = sqlite3.Xsqlite3_value_int64(tls, pIn)
 27653  					if v >= int64(-2147483647) && v <= int64(2147483647) {
 27654  						pVal = tcl.XTcl_NewIntObj(tls, int32(v))
 27655  					} else {
 27656  						pVal = tcl.XTcl_NewWideIntObj(tls, v)
 27657  					}
 27658  					break
 27659  
 27660  				}
 27661  				fallthrough
 27662  			case SQLITE_FLOAT:
 27663  				{
 27664  					var r float64 = sqlite3.Xsqlite3_value_double(tls, pIn)
 27665  					pVal = tcl.XTcl_NewDoubleObj(tls, r)
 27666  					break
 27667  
 27668  				}
 27669  				fallthrough
 27670  			case SQLITE_NULL:
 27671  				{
 27672  					pVal = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*SqlFunc)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 27673  					break
 27674  
 27675  				}
 27676  				fallthrough
 27677  			default:
 27678  				{
 27679  					var bytes int32 = sqlite3.Xsqlite3_value_bytes(tls, pIn)
 27680  					pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pIn), bytes)
 27681  					break
 27682  
 27683  				}
 27684  			}
 27685  			rc = tcl.XTcl_ListObjAppendElement(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, pVal)
 27686  			if rc != 0 {
 27687  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 27688  					var _objPtr uintptr = pCmd
 27689  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27690  						tcl.XTclFreeObj(tls, _objPtr)
 27691  					}
 27692  				}
 27693  				sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27694  				return
 27695  			}
 27696  		}
 27697  		if !((*SqlFunc)(unsafe.Pointer(p)).FuseEvalObjv != 0) {
 27698  			tcl.XTcl_GetString(tls, pCmd)
 27699  		}
 27700  		rc = tcl.XTcl_EvalObjEx(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp, pCmd, TCL_EVAL_DIRECT)
 27701  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 27702  			var _objPtr uintptr = pCmd
 27703  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 27704  				tcl.XTclFreeObj(tls, _objPtr)
 27705  			}
 27706  		}
 27707  	}
 27708  
 27709  	if rc != 0 && rc != TCL_RETURN {
 27710  		sqlite3.Xsqlite3_result_error(tls, context, tcl.XTcl_GetStringResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp), -1)
 27711  	} else {
 27712  		var pVar uintptr = tcl.XTcl_GetObjResult(tls, (*SqlFunc)(unsafe.Pointer(p)).Finterp)
 27713  
 27714  		var data uintptr
 27715  		var zType uintptr = func() uintptr {
 27716  			if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 27717  				return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 27718  			}
 27719  			return ts + 584
 27720  		}()
 27721  		var c int8 = *(*int8)(unsafe.Pointer(zType))
 27722  		var eType int32 = (*SqlFunc)(unsafe.Pointer(p)).FeType
 27723  
 27724  		if eType == SQLITE_NULL {
 27725  			if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 27726  				eType = SQLITE_BLOB
 27727  			} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 ||
 27728  				int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 ||
 27729  				int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 27730  				eType = SQLITE_INTEGER
 27731  			} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 27732  				eType = SQLITE_FLOAT
 27733  			} else {
 27734  				eType = SQLITE_TEXT
 27735  			}
 27736  		}
 27737  
 27738  		switch eType {
 27739  		case SQLITE_BLOB:
 27740  			{
 27741  				data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+16)
 27742  				sqlite3.Xsqlite3_result_blob(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 27743  				break
 27744  
 27745  			}
 27746  			fallthrough
 27747  		case SQLITE_INTEGER:
 27748  			{
 27749  				if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), pVar, bp+24) {
 27750  					sqlite3.Xsqlite3_result_int64(tls, context, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 27751  					break
 27752  				}
 27753  
 27754  			}
 27755  			fallthrough
 27756  		case SQLITE_FLOAT:
 27757  			{
 27758  				if TCL_OK == tcl.XTcl_GetDoubleFromObj(tls, uintptr(0), pVar, bp+32) {
 27759  					sqlite3.Xsqlite3_result_double(tls, context, *(*float64)(unsafe.Pointer(bp + 32)))
 27760  					break
 27761  				}
 27762  
 27763  			}
 27764  			fallthrough
 27765  		default:
 27766  			{
 27767  				data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+16)
 27768  				sqlite3.Xsqlite3_result_text(tls, context, data, *(*int32)(unsafe.Pointer(bp + 16)), libc.UintptrFromInt32(-1))
 27769  				break
 27770  
 27771  			}
 27772  		}
 27773  
 27774  	}
 27775  }
 27776  
 27777  func auth_callback(tls *libc.TLS, pArg uintptr, code int32, zArg1 uintptr, zArg2 uintptr, zArg3 uintptr, zArg4 uintptr) int32 {
 27778  	bp := tls.Alloc(216)
 27779  	defer tls.Free(216)
 27780  
 27781  	var zCode uintptr
 27782  
 27783  	var rc int32
 27784  	var zReply uintptr
 27785  
 27786  	var pDb uintptr = pArg
 27787  	if (*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth != 0 {
 27788  		return SQLITE_OK
 27789  	}
 27790  
 27791  	switch code {
 27792  	case SQLITE_COPY:
 27793  		zCode = ts + 10944
 27794  		break
 27795  	case SQLITE_CREATE_INDEX:
 27796  		zCode = ts + 10956
 27797  		break
 27798  	case SQLITE_CREATE_TABLE:
 27799  		zCode = ts + 10976
 27800  		break
 27801  	case SQLITE_CREATE_TEMP_INDEX:
 27802  		zCode = ts + 10996
 27803  		break
 27804  	case SQLITE_CREATE_TEMP_TABLE:
 27805  		zCode = ts + 11021
 27806  		break
 27807  	case SQLITE_CREATE_TEMP_TRIGGER:
 27808  		zCode = ts + 11046
 27809  		break
 27810  	case SQLITE_CREATE_TEMP_VIEW:
 27811  		zCode = ts + 11073
 27812  		break
 27813  	case SQLITE_CREATE_TRIGGER:
 27814  		zCode = ts + 11097
 27815  		break
 27816  	case SQLITE_CREATE_VIEW:
 27817  		zCode = ts + 11119
 27818  		break
 27819  	case SQLITE_DELETE:
 27820  		zCode = ts + 11138
 27821  		break
 27822  	case SQLITE_DROP_INDEX:
 27823  		zCode = ts + 11152
 27824  		break
 27825  	case SQLITE_DROP_TABLE:
 27826  		zCode = ts + 11170
 27827  		break
 27828  	case SQLITE_DROP_TEMP_INDEX:
 27829  		zCode = ts + 11188
 27830  		break
 27831  	case SQLITE_DROP_TEMP_TABLE:
 27832  		zCode = ts + 11211
 27833  		break
 27834  	case SQLITE_DROP_TEMP_TRIGGER:
 27835  		zCode = ts + 11234
 27836  		break
 27837  	case SQLITE_DROP_TEMP_VIEW:
 27838  		zCode = ts + 11259
 27839  		break
 27840  	case SQLITE_DROP_TRIGGER:
 27841  		zCode = ts + 11281
 27842  		break
 27843  	case SQLITE_DROP_VIEW:
 27844  		zCode = ts + 11301
 27845  		break
 27846  	case SQLITE_INSERT:
 27847  		zCode = ts + 11318
 27848  		break
 27849  	case SQLITE_PRAGMA:
 27850  		zCode = ts + 11332
 27851  		break
 27852  	case SQLITE_READ:
 27853  		zCode = ts + 11346
 27854  		break
 27855  	case SQLITE_SELECT:
 27856  		zCode = ts + 11358
 27857  		break
 27858  	case SQLITE_TRANSACTION:
 27859  		zCode = ts + 11372
 27860  		break
 27861  	case SQLITE_UPDATE:
 27862  		zCode = ts + 11391
 27863  		break
 27864  	case SQLITE_ATTACH:
 27865  		zCode = ts + 11405
 27866  		break
 27867  	case SQLITE_DETACH:
 27868  		zCode = ts + 11419
 27869  		break
 27870  	case SQLITE_ALTER_TABLE:
 27871  		zCode = ts + 11433
 27872  		break
 27873  	case SQLITE_REINDEX:
 27874  		zCode = ts + 11452
 27875  		break
 27876  	case SQLITE_ANALYZE:
 27877  		zCode = ts + 11467
 27878  		break
 27879  	case SQLITE_CREATE_VTABLE:
 27880  		zCode = ts + 11482
 27881  		break
 27882  	case SQLITE_DROP_VTABLE:
 27883  		zCode = ts + 11503
 27884  		break
 27885  	case SQLITE_FUNCTION:
 27886  		zCode = ts + 11522
 27887  		break
 27888  	case SQLITE_SAVEPOINT:
 27889  		zCode = ts + 11538
 27890  		break
 27891  	case SQLITE_RECURSIVE:
 27892  		zCode = ts + 11555
 27893  		break
 27894  	default:
 27895  		zCode = ts + 11572
 27896  		break
 27897  	}
 27898  	tcl.XTcl_DStringInit(tls, bp)
 27899  	tcl.XTcl_DStringAppend(tls, bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, -1)
 27900  	tcl.XTcl_DStringAppendElement(tls, bp, zCode)
 27901  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27902  		if zArg1 != 0 {
 27903  			return zArg1
 27904  		}
 27905  		return ts + 584
 27906  	}())
 27907  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27908  		if zArg2 != 0 {
 27909  			return zArg2
 27910  		}
 27911  		return ts + 584
 27912  	}())
 27913  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27914  		if zArg3 != 0 {
 27915  			return zArg3
 27916  		}
 27917  		return ts + 584
 27918  	}())
 27919  	tcl.XTcl_DStringAppendElement(tls, bp, func() uintptr {
 27920  		if zArg4 != 0 {
 27921  			return zArg4
 27922  		}
 27923  		return ts + 584
 27924  	}())
 27925  	rc = tcl.XTcl_GlobalEval(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 27926  	tcl.XTcl_DStringFree(tls, bp)
 27927  	if rc == TCL_OK {
 27928  		zReply = tcl.XTcl_GetStringResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 27929  	} else {
 27930  		zReply = ts + 11577
 27931  	}
 27932  	if libc.Xstrcmp(tls, zReply, ts+2127) == 0 {
 27933  		rc = SQLITE_OK
 27934  	} else if libc.Xstrcmp(tls, zReply, ts+11577) == 0 {
 27935  		rc = SQLITE_DENY
 27936  	} else if libc.Xstrcmp(tls, zReply, ts+11589) == 0 {
 27937  		rc = SQLITE_IGNORE
 27938  	} else {
 27939  		rc = 999
 27940  	}
 27941  	return rc
 27942  }
 27943  
 27944  func local_getline(tls *libc.TLS, zPrompt uintptr, in uintptr) uintptr {
 27945  	var zLine uintptr
 27946  	var nLine int32
 27947  	var n int32
 27948  
 27949  	nLine = 100
 27950  	zLine = libc.Xmalloc(tls, uint64(nLine))
 27951  	if zLine == uintptr(0) {
 27952  		return uintptr(0)
 27953  	}
 27954  	n = 0
 27955  	for 1 != 0 {
 27956  		if n+100 > nLine {
 27957  			nLine = nLine*2 + 100
 27958  			zLine = libc.Xrealloc(tls, zLine, uint64(nLine))
 27959  			if zLine == uintptr(0) {
 27960  				return uintptr(0)
 27961  			}
 27962  		}
 27963  		if libc.Xfgets(tls, zLine+uintptr(n), nLine-n, in) == uintptr(0) {
 27964  			if n == 0 {
 27965  				libc.Xfree(tls, zLine)
 27966  				return uintptr(0)
 27967  			}
 27968  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 27969  			break
 27970  		}
 27971  		for *(*int8)(unsafe.Pointer(zLine + uintptr(n))) != 0 {
 27972  			n++
 27973  		}
 27974  		if n > 0 && int32(*(*int8)(unsafe.Pointer(zLine + uintptr(n-1)))) == '\n' {
 27975  			n--
 27976  			*(*int8)(unsafe.Pointer(zLine + uintptr(n))) = int8(0)
 27977  			break
 27978  		}
 27979  	}
 27980  	zLine = libc.Xrealloc(tls, zLine, uint64(n+1))
 27981  	return zLine
 27982  }
 27983  
 27984  func DbTransPostCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 27985  	bp := tls.Alloc(16)
 27986  	defer tls.Free(16)
 27987  
 27988  	var pDb uintptr = *(*ClientData)(unsafe.Pointer(data))
 27989  	var rc int32 = result
 27990  	var zEnd uintptr
 27991  
 27992  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction--
 27993  	zEnd = azEnd[libc.Bool32(rc == TCL_ERROR)*2+libc.Bool32((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0)]
 27994  
 27995  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 27996  	if sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zEnd, uintptr(0), uintptr(0), uintptr(0)) != 0 {
 27997  		if rc != TCL_ERROR {
 27998  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 27999  			rc = TCL_ERROR
 28000  		}
 28001  		sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+7824, uintptr(0), uintptr(0), uintptr(0))
 28002  	}
 28003  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 28004  
 28005  	delDatabaseRef(tls, pDb)
 28006  	return rc
 28007  }
 28008  
 28009  var azEnd = [4]uintptr{
 28010  	ts + 11603,
 28011  	ts + 11628,
 28012  	ts + 11635,
 28013  	ts + 7824,
 28014  }
 28015  
 28016  func dbPrepare(tls *libc.TLS, pDb uintptr, zSql uintptr, ppStmt uintptr, pzOut uintptr) int32 {
 28017  	var prepFlags uint32 = uint32(0)
 28018  	if (*SqliteDb)(unsafe.Pointer(pDb)).FbLegacyPrepare != 0 {
 28019  		return sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, ppStmt, pzOut)
 28020  	}
 28021  
 28022  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt > 5 {
 28023  		prepFlags = uint32(SQLITE_PREPARE_PERSISTENT)
 28024  	}
 28025  
 28026  	return sqlite3.Xsqlite3_prepare_v3(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, prepFlags, ppStmt, pzOut)
 28027  }
 28028  
 28029  func dbPrepareAndBind(tls *libc.TLS, pDb uintptr, zIn uintptr, pzOut uintptr, ppPreStmt uintptr) int32 {
 28030  	bp := tls.Alloc(32)
 28031  	defer tls.Free(32)
 28032  
 28033  	var zSql uintptr = zIn
 28034  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 28035  	var pPreStmt uintptr
 28036  	var nSql int32
 28037  	var nVar int32 = 0
 28038  	var iParm int32 = 0
 28039  	var c int8
 28040  	var i int32
 28041  	var needResultReset int32 = 0
 28042  	var rc int32 = SQLITE_OK
 28043  	var interp uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Finterp
 28044  
 28045  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = uintptr(0)
 28046  
 28047  	for int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer(zSql)))) == ' ' || int32(c) == '\t' || int32(c) == '\r' || int32(c) == '\n' {
 28048  		zSql++
 28049  	}
 28050  	nSql = strlen30(tls, zSql)
 28051  
 28052  	for pPreStmt = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList; pPreStmt != 0; pPreStmt = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext {
 28053  		var n int32 = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql
 28054  		if nSql >= n &&
 28055  			libc.Xmemcmp(tls, (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql, zSql, uint64(n)) == 0 &&
 28056  			(int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n)))) == 0 || int32(*(*int8)(unsafe.Pointer(zSql + uintptr(n-1)))) == ';') {
 28057  			*(*uintptr)(unsafe.Pointer(bp)) = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28058  			*(*uintptr)(unsafe.Pointer(pzOut)) = zSql + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql)
 28059  
 28060  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev != 0 {
 28061  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev)).FpNext = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28062  			} else {
 28063  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext
 28064  			}
 28065  			if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext != 0 {
 28066  				(*SqlPreparedStmt)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext)).FpPrev = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28067  			} else {
 28068  				(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev
 28069  			}
 28070  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28071  			nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28072  			break
 28073  		}
 28074  	}
 28075  
 28076  	if pPreStmt == uintptr(0) {
 28077  		var nByte int32
 28078  
 28079  		if SQLITE_OK != dbPrepare(tls, pDb, zSql, bp, pzOut) {
 28080  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28081  			return TCL_ERROR
 28082  		}
 28083  		if *(*uintptr)(unsafe.Pointer(bp)) == uintptr(0) {
 28084  			if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb) {
 28085  				tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28086  				return TCL_ERROR
 28087  			} else {
 28088  				return TCL_OK
 28089  			}
 28090  		}
 28091  
 28092  		nVar = sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28093  		nByte = int32(uint64(unsafe.Sizeof(SqlPreparedStmt{})) + uint64(nVar)*uint64(unsafe.Sizeof(uintptr(0))))
 28094  		pPreStmt = tcl.XTcl_Alloc(tls, uint32(nByte))
 28095  		libc.Xmemset(tls, pPreStmt, 0, uint64(nByte))
 28096  
 28097  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt = *(*uintptr)(unsafe.Pointer(bp))
 28098  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql = int32((int64(*(*uintptr)(unsafe.Pointer(pzOut))) - int64(zSql)) / 1)
 28099  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 28100  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm = pPreStmt + 1*56
 28101  		if (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql == uintptr(0) {
 28102  			var zCopy uintptr = tcl.XTcl_Alloc(tls, uint32((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql+1))
 28103  			libc.Xmemcpy(tls, zCopy, zSql, uint64((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))
 28104  			*(*int8)(unsafe.Pointer(zCopy + uintptr((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnSql))) = int8(0)
 28105  			(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FzSql = zCopy
 28106  		}
 28107  	}
 28108  
 28109  	for i = 1; i <= nVar; i++ {
 28110  		var zVar uintptr = sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28111  		if zVar != uintptr(0) && (int32(*(*int8)(unsafe.Pointer(zVar))) == '$' || int32(*(*int8)(unsafe.Pointer(zVar))) == ':' || int32(*(*int8)(unsafe.Pointer(zVar))) == '@') {
 28112  			var pVar uintptr = tcl.XTcl_GetVar2Ex(tls, interp, zVar+1, uintptr(0), 0)
 28113  			if pVar == uintptr(0) && (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != uintptr(0) {
 28114  				var pCmd uintptr
 28115  				var rx int32
 28116  				pCmd = tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, -1)
 28117  				(*Tcl_Obj)(unsafe.Pointer(pCmd)).FrefCount++
 28118  				tcl.XTcl_ListObjAppendElement(tls, interp, pCmd, tcl.XTcl_NewStringObj(tls, zVar, -1))
 28119  				if needResultReset != 0 {
 28120  					tcl.XTcl_ResetResult(tls, interp)
 28121  				}
 28122  				needResultReset = 1
 28123  				rx = tcl.XTcl_EvalObjEx(tls, interp, pCmd, TCL_EVAL_DIRECT)
 28124  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28125  					var _objPtr uintptr = pCmd
 28126  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28127  						tcl.XTclFreeObj(tls, _objPtr)
 28128  					}
 28129  				}
 28130  				if rx == TCL_OK {
 28131  					pVar = tcl.XTcl_GetObjResult(tls, interp)
 28132  				} else if rx == TCL_ERROR {
 28133  					rc = TCL_ERROR
 28134  					break
 28135  				} else {
 28136  					pVar = uintptr(0)
 28137  				}
 28138  			}
 28139  			if pVar != 0 {
 28140  				var data uintptr
 28141  				var zType uintptr = func() uintptr {
 28142  					if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 28143  						return (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname
 28144  					}
 28145  					return ts + 584
 28146  				}()
 28147  				c = *(*int8)(unsafe.Pointer(zType))
 28148  				if int32(*(*int8)(unsafe.Pointer(zVar))) == '@' || int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2544) == 0 && (*Tcl_Obj)(unsafe.Pointer(pVar)).Fbytes == uintptr(0) {
 28149  					data = tcl.XTcl_GetByteArrayFromObj(tls, pVar, bp+8)
 28150  					sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28151  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28152  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28153  				} else if int32(c) == 'b' && libc.Xstrcmp(tls, zType, ts+2554) == 0 {
 28154  					tcl.XTcl_GetIntFromObj(tls, interp, pVar, bp+8)
 28155  					sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*int32)(unsafe.Pointer(bp + 8)))
 28156  				} else if int32(c) == 'd' && libc.Xstrcmp(tls, zType, ts+2562) == 0 {
 28157  					tcl.XTcl_GetDoubleFromObj(tls, interp, pVar, bp+16)
 28158  					sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*float64)(unsafe.Pointer(bp + 16)))
 28159  				} else if int32(c) == 'w' && libc.Xstrcmp(tls, zType, ts+2569) == 0 || int32(c) == 'i' && libc.Xstrcmp(tls, zType, ts+2577) == 0 {
 28160  					tcl.XTcl_GetWideIntFromObj(tls, interp, pVar, bp+24)
 28161  					sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp)), i, *(*Tcl_WideInt)(unsafe.Pointer(bp + 24)))
 28162  				} else {
 28163  					data = tcl.XTcl_GetStringFromObj(tls, pVar, bp+8)
 28164  					sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), i, data, *(*int32)(unsafe.Pointer(bp + 8)), uintptr(0))
 28165  					(*Tcl_Obj)(unsafe.Pointer(pVar)).FrefCount++
 28166  					*(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(libc.PostIncInt32(&iParm, 1))*8)) = pVar
 28167  				}
 28168  			} else {
 28169  				sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp)), i)
 28170  			}
 28171  			if needResultReset != 0 {
 28172  				tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28173  			}
 28174  		}
 28175  	}
 28176  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = iParm
 28177  	*(*uintptr)(unsafe.Pointer(ppPreStmt)) = pPreStmt
 28178  	if needResultReset != 0 && rc == TCL_OK {
 28179  		tcl.XTcl_ResetResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp)
 28180  	}
 28181  
 28182  	return rc
 28183  }
 28184  
 28185  func dbReleaseStmt(tls *libc.TLS, pDb uintptr, pPreStmt uintptr, discard int32) {
 28186  	var i int32
 28187  
 28188  	for i = 0; i < (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm; i++ {
 28189  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28190  			var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FapParm + uintptr(i)*8))
 28191  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28192  				tcl.XTclFreeObj(tls, _objPtr)
 28193  			}
 28194  		}
 28195  	}
 28196  	(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FnParm = 0
 28197  
 28198  	if (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt <= 0 || discard != 0 {
 28199  		dbFreeStmt(tls, pPreStmt)
 28200  	} else {
 28201  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList
 28202  		(*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpPrev = uintptr(0)
 28203  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 28204  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpPrev = pPreStmt
 28205  		}
 28206  		(*SqliteDb)(unsafe.Pointer(pDb)).FstmtList = pPreStmt
 28207  		if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast == uintptr(0) {
 28208  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = pPreStmt
 28209  		} else {
 28210  		}
 28211  		(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt++
 28212  
 28213  		for (*SqliteDb)(unsafe.Pointer(pDb)).FnStmt > (*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt {
 28214  			var pLast uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast
 28215  			(*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast = (*SqlPreparedStmt)(unsafe.Pointer(pLast)).FpPrev
 28216  			(*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtLast)).FpNext = uintptr(0)
 28217  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStmt--
 28218  			dbFreeStmt(tls, pLast)
 28219  		}
 28220  	}
 28221  }
 28222  
 28223  type DbEvalContext1 = struct {
 28224  	FpDb       uintptr
 28225  	FpSql      uintptr
 28226  	FzSql      uintptr
 28227  	FpPreStmt  uintptr
 28228  	FnCol      int32
 28229  	FevalFlags int32
 28230  	FpArray    uintptr
 28231  	FapColName uintptr
 28232  }
 28233  
 28234  type DbEvalContext = DbEvalContext1
 28235  
 28236  func dbReleaseColumnNames(tls *libc.TLS, p uintptr) {
 28237  	if (*DbEvalContext)(unsafe.Pointer(p)).FapColName != 0 {
 28238  		var i int32
 28239  		for i = 0; i < (*DbEvalContext)(unsafe.Pointer(p)).FnCol; i++ {
 28240  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28241  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FapColName + uintptr(i)*8))
 28242  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28243  					tcl.XTclFreeObj(tls, _objPtr)
 28244  				}
 28245  			}
 28246  		}
 28247  		tcl.XTcl_Free(tls, (*DbEvalContext)(unsafe.Pointer(p)).FapColName)
 28248  		(*DbEvalContext)(unsafe.Pointer(p)).FapColName = uintptr(0)
 28249  	}
 28250  	(*DbEvalContext)(unsafe.Pointer(p)).FnCol = 0
 28251  }
 28252  
 28253  func dbEvalInit(tls *libc.TLS, p uintptr, pDb uintptr, pSql uintptr, pArray uintptr, evalFlags int32) {
 28254  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(DbEvalContext{})))
 28255  	(*DbEvalContext)(unsafe.Pointer(p)).FpDb = pDb
 28256  	(*DbEvalContext)(unsafe.Pointer(p)).FzSql = tcl.XTcl_GetString(tls, pSql)
 28257  	(*DbEvalContext)(unsafe.Pointer(p)).FpSql = pSql
 28258  	(*Tcl_Obj)(unsafe.Pointer(pSql)).FrefCount++
 28259  	if pArray != 0 {
 28260  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = pArray
 28261  		(*Tcl_Obj)(unsafe.Pointer(pArray)).FrefCount++
 28262  	}
 28263  	(*DbEvalContext)(unsafe.Pointer(p)).FevalFlags = evalFlags
 28264  	addDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28265  }
 28266  
 28267  func dbEvalRowInfo(tls *libc.TLS, p uintptr, pnCol uintptr, papColName uintptr) {
 28268  	if uintptr(0) == (*DbEvalContext)(unsafe.Pointer(p)).FapColName {
 28269  		var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28270  		var i int32
 28271  		var nCol int32
 28272  		var apColName uintptr = uintptr(0)
 28273  
 28274  		(*DbEvalContext)(unsafe.Pointer(p)).FnCol = libc.AssignInt32(&nCol, sqlite3.Xsqlite3_column_count(tls, pStmt))
 28275  		if nCol > 0 && (papColName != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0) {
 28276  			apColName = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol)))
 28277  			for i = 0; i < nCol; i++ {
 28278  				*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)) = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_name(tls, pStmt, i), -1)
 28279  				(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))).FrefCount++
 28280  			}
 28281  			(*DbEvalContext)(unsafe.Pointer(p)).FapColName = apColName
 28282  		}
 28283  
 28284  		if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28285  			var interp uintptr = (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).Finterp
 28286  			var pColList uintptr = tcl.XTcl_NewObj(tls)
 28287  			var pStar uintptr = tcl.XTcl_NewStringObj(tls, ts+3840, -1)
 28288  
 28289  			for i = 0; i < nCol; i++ {
 28290  				tcl.XTcl_ListObjAppendElement(tls, interp, pColList, *(*uintptr)(unsafe.Pointer(apColName + uintptr(i)*8)))
 28291  			}
 28292  			(*Tcl_Obj)(unsafe.Pointer(pStar)).FrefCount++
 28293  			tcl.XTcl_ObjSetVar2(tls, interp, (*DbEvalContext)(unsafe.Pointer(p)).FpArray, pStar, pColList, 0)
 28294  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28295  				var _objPtr uintptr = pStar
 28296  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28297  					tcl.XTclFreeObj(tls, _objPtr)
 28298  				}
 28299  			}
 28300  		}
 28301  	}
 28302  
 28303  	if papColName != 0 {
 28304  		*(*uintptr)(unsafe.Pointer(papColName)) = (*DbEvalContext)(unsafe.Pointer(p)).FapColName
 28305  	}
 28306  	if pnCol != 0 {
 28307  		*(*int32)(unsafe.Pointer(pnCol)) = (*DbEvalContext)(unsafe.Pointer(p)).FnCol
 28308  	}
 28309  }
 28310  
 28311  func dbEvalStep(tls *libc.TLS, p uintptr) int32 {
 28312  	var zPrevSql uintptr = uintptr(0)
 28313  
 28314  	for *(*int8)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FzSql)) != 0 || (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28315  		var rc int32
 28316  		if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt == uintptr(0) {
 28317  			zPrevSql = func() uintptr {
 28318  				if (*DbEvalContext)(unsafe.Pointer(p)).FzSql == zPrevSql {
 28319  					return uintptr(0)
 28320  				}
 28321  				return (*DbEvalContext)(unsafe.Pointer(p)).FzSql
 28322  			}()
 28323  			rc = dbPrepareAndBind(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FzSql, p+16, p+24)
 28324  			if rc != TCL_OK {
 28325  				return rc
 28326  			}
 28327  		} else {
 28328  			var rcs int32
 28329  			var pDb uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpDb
 28330  			var pPreStmt uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt
 28331  			var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer(pPreStmt)).FpStmt
 28332  
 28333  			rcs = sqlite3.Xsqlite3_step(tls, pStmt)
 28334  			if rcs == SQLITE_ROW {
 28335  				return TCL_OK
 28336  			}
 28337  			if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28338  				dbEvalRowInfo(tls, p, uintptr(0), uintptr(0))
 28339  			}
 28340  			rcs = sqlite3.Xsqlite3_reset(tls, pStmt)
 28341  
 28342  			(*SqliteDb)(unsafe.Pointer(pDb)).FnStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_FULLSCAN_STEP, 1)
 28343  			(*SqliteDb)(unsafe.Pointer(pDb)).FnSort = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_SORT, 1)
 28344  			(*SqliteDb)(unsafe.Pointer(pDb)).FnIndex = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_AUTOINDEX, 1)
 28345  			(*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep = sqlite3.Xsqlite3_stmt_status(tls, pStmt, SQLITE_STMTSTATUS_VM_STEP, 1)
 28346  			dbReleaseColumnNames(tls, p)
 28347  			(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28348  
 28349  			if rcs != SQLITE_OK {
 28350  				dbReleaseStmt(tls, pDb, pPreStmt, 1)
 28351  				if (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FbLegacyPrepare != 0 && rcs == SQLITE_SCHEMA && zPrevSql != 0 {
 28352  					(*DbEvalContext)(unsafe.Pointer(p)).FzSql = zPrevSql
 28353  					continue
 28354  				}
 28355  				tcl.XTcl_SetObjResult(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Finterp,
 28356  					tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), -1))
 28357  				return TCL_ERROR
 28358  			} else {
 28359  				dbReleaseStmt(tls, pDb, pPreStmt, 0)
 28360  			}
 28361  		}
 28362  	}
 28363  
 28364  	return TCL_BREAK
 28365  }
 28366  
 28367  func dbEvalFinalize(tls *libc.TLS, p uintptr) {
 28368  	if (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt != 0 {
 28369  		sqlite3.Xsqlite3_reset(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt)
 28370  		dbReleaseStmt(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb, (*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt, 0)
 28371  		(*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt = uintptr(0)
 28372  	}
 28373  	if (*DbEvalContext)(unsafe.Pointer(p)).FpArray != 0 {
 28374  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28375  			var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28376  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28377  				tcl.XTclFreeObj(tls, _objPtr)
 28378  			}
 28379  		}
 28380  		(*DbEvalContext)(unsafe.Pointer(p)).FpArray = uintptr(0)
 28381  	}
 28382  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 28383  		var _objPtr uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpSql
 28384  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28385  			tcl.XTclFreeObj(tls, _objPtr)
 28386  		}
 28387  	}
 28388  	dbReleaseColumnNames(tls, p)
 28389  	delDatabaseRef(tls, (*DbEvalContext)(unsafe.Pointer(p)).FpDb)
 28390  }
 28391  
 28392  func dbEvalColumnValue(tls *libc.TLS, p uintptr, iCol int32) uintptr {
 28393  	var pStmt uintptr = (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt
 28394  	switch sqlite3.Xsqlite3_column_type(tls, pStmt, iCol) {
 28395  	case SQLITE_BLOB:
 28396  		{
 28397  			var bytes int32 = sqlite3.Xsqlite3_column_bytes(tls, pStmt, iCol)
 28398  			var zBlob uintptr = sqlite3.Xsqlite3_column_blob(tls, pStmt, iCol)
 28399  			if !(zBlob != 0) {
 28400  				bytes = 0
 28401  			}
 28402  			return tcl.XTcl_NewByteArrayObj(tls, zBlob, bytes)
 28403  
 28404  		}
 28405  	case SQLITE_INTEGER:
 28406  		{
 28407  			var v sqlite_int64 = sqlite3.Xsqlite3_column_int64(tls, pStmt, iCol)
 28408  			if v >= int64(-2147483647) && v <= int64(2147483647) {
 28409  				return tcl.XTcl_NewIntObj(tls, int32(v))
 28410  			} else {
 28411  				return tcl.XTcl_NewWideIntObj(tls, v)
 28412  			}
 28413  
 28414  		}
 28415  		fallthrough
 28416  	case SQLITE_FLOAT:
 28417  		{
 28418  			return tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_column_double(tls, pStmt, iCol))
 28419  
 28420  		}
 28421  	case SQLITE_NULL:
 28422  		{
 28423  			return tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpDb)).FzNull, -1)
 28424  
 28425  		}
 28426  	}
 28427  
 28428  	return tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_column_text(tls, pStmt, iCol), -1)
 28429  }
 28430  
 28431  func DbUseNre(tls *libc.TLS) int32 {
 28432  	bp := tls.Alloc(8)
 28433  	defer tls.Free(8)
 28434  
 28435  	tcl.XTcl_GetVersion(tls, bp, bp+4, uintptr(0), uintptr(0))
 28436  	return libc.Bool32(*(*int32)(unsafe.Pointer(bp)) == 8 && *(*int32)(unsafe.Pointer(bp + 4)) >= 6 || *(*int32)(unsafe.Pointer(bp)) > 8)
 28437  }
 28438  
 28439  func DbEvalNextCmd(tls *libc.TLS, data uintptr, interp uintptr, result int32) int32 {
 28440  	bp := tls.Alloc(16)
 28441  	defer tls.Free(16)
 28442  
 28443  	var rc int32 = result
 28444  
 28445  	var p uintptr = *(*ClientData)(unsafe.Pointer(data))
 28446  	var pScript uintptr = *(*ClientData)(unsafe.Pointer(data + 1*8))
 28447  	var pArray uintptr = (*DbEvalContext)(unsafe.Pointer(p)).FpArray
 28448  
 28449  	for (rc == TCL_OK || rc == TCL_CONTINUE) && TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, p)) {
 28450  		var i int32
 28451  
 28452  		dbEvalRowInfo(tls, p, bp, bp+8)
 28453  		for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 28454  			if pArray == uintptr(0) {
 28455  				tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(0), dbEvalColumnValue(tls, p, i), 0)
 28456  			} else if (*DbEvalContext)(unsafe.Pointer(p)).FevalFlags&SQLITE_EVAL_WITHOUTNULLS != 0 &&
 28457  				sqlite3.Xsqlite3_column_type(tls, (*SqlPreparedStmt)(unsafe.Pointer((*DbEvalContext)(unsafe.Pointer(p)).FpPreStmt)).FpStmt, i) == SQLITE_NULL {
 28458  				tcl.XTcl_UnsetVar2(tls, interp, tcl.XTcl_GetString(tls, pArray),
 28459  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8))), 0)
 28460  			} else {
 28461  				tcl.XTcl_ObjSetVar2(tls, interp, pArray, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), dbEvalColumnValue(tls, p, i), 0)
 28462  			}
 28463  		}
 28464  
 28465  		if DbUseNre(tls) != 0 {
 28466  			tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 28467  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 28468  			}{DbEvalNextCmd})), p, pScript, uintptr(0), uintptr(0))
 28469  			return tcl.XTcl_NREvalObj(tls, interp, pScript, 0)
 28470  		} else {
 28471  			rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, 0)
 28472  		}
 28473  	}
 28474  
 28475  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28476  		var _objPtr uintptr = pScript
 28477  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28478  			tcl.XTclFreeObj(tls, _objPtr)
 28479  		}
 28480  	}
 28481  	dbEvalFinalize(tls, p)
 28482  	tcl.XTcl_Free(tls, p)
 28483  
 28484  	if rc == TCL_OK || rc == TCL_BREAK {
 28485  		tcl.XTcl_ResetResult(tls, interp)
 28486  		rc = TCL_OK
 28487  	}
 28488  	return rc
 28489  }
 28490  
 28491  func DbHookCmd(tls *libc.TLS, interp uintptr, pDb uintptr, pArg uintptr, ppHook uintptr) {
 28492  	var db uintptr = (*SqliteDb)(unsafe.Pointer(pDb)).Fdb
 28493  
 28494  	if *(*uintptr)(unsafe.Pointer(ppHook)) != 0 {
 28495  		tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(ppHook)))
 28496  		if pArg != 0 {
 28497  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 28498  				var _objPtr uintptr = *(*uintptr)(unsafe.Pointer(ppHook))
 28499  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 28500  					tcl.XTclFreeObj(tls, _objPtr)
 28501  				}
 28502  			}
 28503  			*(*uintptr)(unsafe.Pointer(ppHook)) = uintptr(0)
 28504  		}
 28505  	}
 28506  	if pArg != 0 {
 28507  		if tcl.XTcl_GetCharLength(tls, pArg) > 0 {
 28508  			*(*uintptr)(unsafe.Pointer(ppHook)) = pArg
 28509  			(*Tcl_Obj)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppHook)))).FrefCount++
 28510  		}
 28511  	}
 28512  
 28513  	sqlite3.Xsqlite3_preupdate_hook(tls, db, func() uintptr {
 28514  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpPreUpdateHook != 0 {
 28515  			return *(*uintptr)(unsafe.Pointer(&struct {
 28516  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, sqlite_int64, sqlite_int64)
 28517  			}{DbPreUpdateHandler}))
 28518  		}
 28519  		return uintptr(0)
 28520  	}(), pDb)
 28521  	sqlite3.Xsqlite3_update_hook(tls, db, func() uintptr {
 28522  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpUpdateHook != 0 {
 28523  			return *(*uintptr)(unsafe.Pointer(&struct {
 28524  				f func(*libc.TLS, uintptr, int32, uintptr, uintptr, sqlite_int64)
 28525  			}{DbUpdateHandler}))
 28526  		}
 28527  		return uintptr(0)
 28528  	}(), pDb)
 28529  	sqlite3.Xsqlite3_rollback_hook(tls, db, func() uintptr {
 28530  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpRollbackHook != 0 {
 28531  			return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbRollbackHandler}))
 28532  		}
 28533  		return uintptr(0)
 28534  	}(), pDb)
 28535  	sqlite3.Xsqlite3_wal_hook(tls, db, func() uintptr {
 28536  		if (*SqliteDb)(unsafe.Pointer(pDb)).FpWalHook != 0 {
 28537  			return *(*uintptr)(unsafe.Pointer(&struct {
 28538  				f func(*libc.TLS, uintptr, uintptr, uintptr, int32) int32
 28539  			}{DbWalHandler}))
 28540  		}
 28541  		return uintptr(0)
 28542  	}(), pDb)
 28543  }
 28544  
 28545  func DbObjCmd(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 28546  	bp := tls.Alloc(1588)
 28547  	defer tls.Free(1588)
 28548  	*(*uintptr)(unsafe.Pointer(bp + 1464)) = cd
 28549  
 28550  	var pDb uintptr
 28551  
 28552  	var rc int32
 28553  	var zAuth uintptr
 28554  
 28555  	var zDestFile uintptr
 28556  	var zSrcDb uintptr
 28557  
 28558  	var pBackup uintptr
 28559  	var zCallback uintptr
 28560  
 28561  	var zBusy uintptr
 28562  
 28563  	var subCmd uintptr
 28564  
 28565  	var pResult uintptr
 28566  	var pCollate uintptr
 28567  	var zName uintptr
 28568  	var zScript uintptr
 28569  
 28570  	var _objPtr uintptr
 28571  	var zCommit uintptr
 28572  
 28573  	var pResult1 uintptr
 28574  	var isComplete int32
 28575  
 28576  	var zOpt uintptr
 28577  
 28578  	var pResult2 uintptr
 28579  	var ii int32
 28580  	var zErr uintptr
 28581  	var nErr int32
 28582  	var z uintptr
 28583  	var zTable uintptr
 28584  	var zFile uintptr
 28585  	var zConflict uintptr
 28586  
 28587  	var nCol int32
 28588  	var nByte int32
 28589  	var i int32
 28590  	var j int32
 28591  	var nSep int32
 28592  	var nNull int32
 28593  	var zSql uintptr
 28594  	var zLine uintptr
 28595  	var azCol uintptr
 28596  	var zCommit1 uintptr
 28597  	var in uintptr
 28598  	var lineno int32
 28599  
 28600  	var pResult3 uintptr
 28601  
 28602  	var zSep uintptr
 28603  	var zNull uintptr
 28604  
 28605  	var z1 uintptr
 28606  	var flags int32
 28607  	var zSchema uintptr
 28608  	var pValue uintptr
 28609  	var pBA uintptr
 28610  	var pData uintptr
 28611  
 28612  	var xrc int32
 28613  
 28614  	var i1 int32
 28615  
 28616  	var pResult4 uintptr
 28617  
 28618  	var i2 int32
 28619  
 28620  	var _objPtr1 uintptr
 28621  
 28622  	var pRet uintptr
 28623  
 28624  	var p uintptr
 28625  	var pArray uintptr
 28626  	var pScript uintptr
 28627  	var evalFlags int32
 28628  	var zOpt1 uintptr
 28629  
 28630  	var z2 uintptr
 28631  	var n1 int32
 28632  	var _objPtr2 uintptr
 28633  	var flags1 int32
 28634  	var pFunc uintptr
 28635  	var pScript1 uintptr
 28636  	var zName1 uintptr
 28637  
 28638  	var i3 int32
 28639  
 28640  	var isReadonly1 int32
 28641  	var zDb uintptr
 28642  	var zTable1 uintptr
 28643  	var zColumn uintptr
 28644  
 28645  	var zNull1 uintptr
 28646  	var pResult5 uintptr
 28647  	var rowid Tcl_WideInt
 28648  	var zProgress uintptr
 28649  
 28650  	var zProfile uintptr
 28651  
 28652  	var zSrcFile uintptr
 28653  	var zDestDb uintptr
 28654  
 28655  	var pBackup1 uintptr
 28656  	var nTimeout int32
 28657  	var needFree int32
 28658  	var zSchema1 uintptr
 28659  
 28660  	var pData1 uintptr
 28661  	var v2 int32
 28662  	var zOp uintptr
 28663  
 28664  	var pResult6 uintptr
 28665  	var zTrace uintptr
 28666  
 28667  	var _objPtr3 uintptr
 28668  	var _objPtr4 uintptr
 28669  
 28670  	var pError uintptr
 28671  
 28672  	var i4 int32
 28673  	var zTraceV2 uintptr
 28674  
 28675  	var wMask Tcl_WideInt
 28676  
 28677  	var pScript2 uintptr
 28678  	var zBegin uintptr
 28679  	var _objPtr5 uintptr
 28680  	var xNotify uintptr
 28681  	var pNotifyArg uintptr
 28682  	var nCol2 int32
 28683  	var pRet1 uintptr
 28684  	var pObj1 uintptr
 28685  
 28686  	var ppHook uintptr
 28687  
 28688  	var zArg uintptr
 28689  	var i5 int32
 28690  	pDb = *(*uintptr)(unsafe.Pointer(bp + 1464))
 28691  	rc = TCL_OK
 28692  
 28693  	if !(objc < 2) {
 28694  		goto __1
 28695  	}
 28696  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 28697  	return TCL_ERROR
 28698  __1:
 28699  	;
 28700  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&DB_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+11691, 0, bp+1016) != 0) {
 28701  		goto __2
 28702  	}
 28703  	return TCL_ERROR
 28704  __2:
 28705  	;
 28706  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1016))) {
 28707  	case uint32(0):
 28708  		goto __4
 28709  
 28710  	case uint32(1):
 28711  		goto __5
 28712  
 28713  	case uint32(2):
 28714  		goto __6
 28715  
 28716  	case uint32(3):
 28717  		goto __7
 28718  
 28719  	case uint32(4):
 28720  		goto __8
 28721  
 28722  	case uint32(5):
 28723  		goto __9
 28724  
 28725  	case uint32(6):
 28726  		goto __10
 28727  
 28728  	case uint32(7):
 28729  		goto __11
 28730  
 28731  	case uint32(8):
 28732  		goto __12
 28733  
 28734  	case uint32(9):
 28735  		goto __13
 28736  
 28737  	case uint32(10):
 28738  		goto __14
 28739  
 28740  	case uint32(11):
 28741  		goto __15
 28742  
 28743  	case uint32(12):
 28744  		goto __16
 28745  
 28746  	case uint32(13):
 28747  		goto __17
 28748  
 28749  	case uint32(14):
 28750  		goto __18
 28751  
 28752  	case uint32(15):
 28753  		goto __19
 28754  
 28755  	case uint32(16):
 28756  		goto __20
 28757  
 28758  	case uint32(18):
 28759  		goto __21
 28760  	case uint32(24):
 28761  		goto __22
 28762  
 28763  	case uint32(17):
 28764  		goto __23
 28765  
 28766  	case uint32(19):
 28767  		goto __24
 28768  
 28769  	case uint32(20):
 28770  		goto __25
 28771  
 28772  	case uint32(21):
 28773  		goto __26
 28774  
 28775  	case uint32(23):
 28776  		goto __27
 28777  
 28778  	case uint32(22):
 28779  		goto __28
 28780  
 28781  	case uint32(27):
 28782  		goto __29
 28783  
 28784  	case uint32(26):
 28785  		goto __30
 28786  
 28787  	case uint32(28):
 28788  		goto __31
 28789  
 28790  	case uint32(29):
 28791  		goto __32
 28792  
 28793  	case uint32(31):
 28794  		goto __33
 28795  
 28796  	case uint32(32):
 28797  		goto __34
 28798  
 28799  	case uint32(33):
 28800  		goto __35
 28801  
 28802  	case uint32(34):
 28803  		goto __36
 28804  
 28805  	case uint32(35):
 28806  		goto __37
 28807  
 28808  	case uint32(36):
 28809  		goto __38
 28810  
 28811  	case uint32(37):
 28812  		goto __39
 28813  
 28814  	case uint32(38):
 28815  		goto __40
 28816  
 28817  	case uint32(25):
 28818  		goto __41
 28819  
 28820  	case uint32(41):
 28821  		goto __42
 28822  	case uint32(39):
 28823  		goto __43
 28824  	case uint32(30):
 28825  		goto __44
 28826  
 28827  	case uint32(40):
 28828  		goto __45
 28829  	}
 28830  	goto __3
 28831  
 28832  __4:
 28833  	if !(objc > 3) {
 28834  		goto __46
 28835  	}
 28836  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 28837  	return TCL_ERROR
 28838  	goto __47
 28839  __46:
 28840  	if !(objc == 2) {
 28841  		goto __48
 28842  	}
 28843  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28844  		goto __50
 28845  	}
 28846  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, uintptr(0)))
 28847  __50:
 28848  	;
 28849  	goto __49
 28850  __48:
 28851  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28852  		goto __51
 28853  	}
 28854  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth)
 28855  __51:
 28856  	;
 28857  	zAuth = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1020)
 28858  	if !(zAuth != 0 && *(*int32)(unsafe.Pointer(bp + 1020)) > 0) {
 28859  		goto __52
 28860  	}
 28861  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 28862  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzAuth, zAuth, uint64(*(*int32)(unsafe.Pointer(bp + 1020))+1))
 28863  	goto __53
 28864  __52:
 28865  	(*SqliteDb)(unsafe.Pointer(pDb)).FzAuth = uintptr(0)
 28866  __53:
 28867  	;
 28868  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzAuth != 0) {
 28869  		goto __54
 28870  	}
 28871  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 28872  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 28873  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr, uintptr) int32
 28874  	}{auth_callback})), pDb)
 28875  	goto __55
 28876  __54:
 28877  	sqlite3.Xsqlite3_set_authorizer(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 28878  __55:
 28879  	;
 28880  __49:
 28881  	;
 28882  __47:
 28883  	;
 28884  	goto __3
 28885  
 28886  __5:
 28887  	if !(objc == 3) {
 28888  		goto __56
 28889  	}
 28890  	zSrcDb = ts + 85
 28891  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28892  	goto __57
 28893  __56:
 28894  	if !(objc == 4) {
 28895  		goto __58
 28896  	}
 28897  	zSrcDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 28898  	zDestFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 28899  	goto __59
 28900  __58:
 28901  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 28902  	return TCL_ERROR
 28903  __59:
 28904  	;
 28905  __57:
 28906  	;
 28907  	rc = sqlite3.Xsqlite3_open_v2(tls, zDestFile, bp+1024,
 28908  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 28909  	if !(rc != SQLITE_OK) {
 28910  		goto __60
 28911  	}
 28912  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+11729,
 28913  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28914  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28915  	return TCL_ERROR
 28916  __60:
 28917  	;
 28918  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)), ts+85, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSrcDb)
 28919  	if !(pBackup == uintptr(0)) {
 28920  		goto __61
 28921  	}
 28922  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+11759,
 28923  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28924  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28925  	return TCL_ERROR
 28926  __61:
 28927  	;
 28928  __62:
 28929  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup, 100)) == SQLITE_OK) {
 28930  		goto __63
 28931  	}
 28932  	goto __62
 28933  __63:
 28934  	;
 28935  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 28936  	if !(rc == SQLITE_DONE) {
 28937  		goto __64
 28938  	}
 28939  	rc = TCL_OK
 28940  	goto __65
 28941  __64:
 28942  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, ts+11759,
 28943  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1024))), uintptr(0)))
 28944  	rc = TCL_ERROR
 28945  __65:
 28946  	;
 28947  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1024)))
 28948  	goto __3
 28949  
 28950  __6:
 28951  	if !(objc > 3) {
 28952  		goto __66
 28953  	}
 28954  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 28955  	return TCL_ERROR
 28956  	goto __67
 28957  __66:
 28958  	if !(objc == 2) {
 28959  		goto __68
 28960  	}
 28961  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 28962  		goto __70
 28963  	}
 28964  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+88, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, uintptr(0)))
 28965  __70:
 28966  	;
 28967  	goto __69
 28968  __68:
 28969  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback != 0) {
 28970  		goto __71
 28971  	}
 28972  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback)
 28973  __71:
 28974  	;
 28975  	zCallback = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1032)
 28976  	if !(zCallback != 0 && *(*int32)(unsafe.Pointer(bp + 1032)) > 0) {
 28977  		goto __72
 28978  	}
 28979  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 28980  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback, zCallback, uint64(*(*int32)(unsafe.Pointer(bp + 1032))+1))
 28981  	goto __73
 28982  __72:
 28983  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBindFallback = uintptr(0)
 28984  __73:
 28985  	;
 28986  __69:
 28987  	;
 28988  __67:
 28989  	;
 28990  	goto __3
 28991  
 28992  __7:
 28993  	if !(objc > 3) {
 28994  		goto __74
 28995  	}
 28996  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11775)
 28997  	return TCL_ERROR
 28998  	goto __75
 28999  __74:
 29000  	if !(objc == 2) {
 29001  		goto __76
 29002  	}
 29003  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29004  		goto __78
 29005  	}
 29006  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, uintptr(0)))
 29007  __78:
 29008  	;
 29009  	goto __77
 29010  __76:
 29011  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29012  		goto __79
 29013  	}
 29014  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy)
 29015  __79:
 29016  	;
 29017  	zBusy = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1036)
 29018  	if !(zBusy != 0 && *(*int32)(unsafe.Pointer(bp + 1036)) > 0) {
 29019  		goto __80
 29020  	}
 29021  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29022  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzBusy, zBusy, uint64(*(*int32)(unsafe.Pointer(bp + 1036))+1))
 29023  	goto __81
 29024  __80:
 29025  	(*SqliteDb)(unsafe.Pointer(pDb)).FzBusy = uintptr(0)
 29026  __81:
 29027  	;
 29028  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzBusy != 0) {
 29029  		goto __82
 29030  	}
 29031  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29032  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29033  		f func(*libc.TLS, uintptr, int32) int32
 29034  	}{DbBusyHandler})), pDb)
 29035  	goto __83
 29036  __82:
 29037  	sqlite3.Xsqlite3_busy_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29038  __83:
 29039  	;
 29040  __77:
 29041  	;
 29042  __75:
 29043  	;
 29044  	goto __3
 29045  
 29046  __8:
 29047  	if !(objc <= 2) {
 29048  		goto __84
 29049  	}
 29050  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+11784)
 29051  	return TCL_ERROR
 29052  __84:
 29053  	;
 29054  	subCmd = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29055  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 'f' && libc.Xstrcmp(tls, subCmd, ts+11803) == 0) {
 29056  		goto __85
 29057  	}
 29058  	if !(objc != 3) {
 29059  		goto __87
 29060  	}
 29061  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11803)
 29062  	return TCL_ERROR
 29063  	goto __88
 29064  __87:
 29065  	flushStmtCache(tls, pDb)
 29066  __88:
 29067  	;
 29068  	goto __86
 29069  __85:
 29070  	if !(int32(*(*int8)(unsafe.Pointer(subCmd))) == 's' && libc.Xstrcmp(tls, subCmd, ts+11809) == 0) {
 29071  		goto __89
 29072  	}
 29073  	if !(objc != 4) {
 29074  		goto __91
 29075  	}
 29076  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11814)
 29077  	return TCL_ERROR
 29078  	goto __92
 29079  __91:
 29080  	if !(TCL_ERROR == tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1040)) {
 29081  		goto __93
 29082  	}
 29083  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+120, ts+11821,
 29084  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0)), ts+11838, uintptr(0)))
 29085  	return TCL_ERROR
 29086  	goto __94
 29087  __93:
 29088  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) < 0) {
 29089  		goto __95
 29090  	}
 29091  	flushStmtCache(tls, pDb)
 29092  	*(*int32)(unsafe.Pointer(bp + 1040)) = 0
 29093  	goto __96
 29094  __95:
 29095  	if !(*(*int32)(unsafe.Pointer(bp + 1040)) > MAX_PREPARED_STMTS) {
 29096  		goto __97
 29097  	}
 29098  	*(*int32)(unsafe.Pointer(bp + 1040)) = MAX_PREPARED_STMTS
 29099  __97:
 29100  	;
 29101  __96:
 29102  	;
 29103  	(*SqliteDb)(unsafe.Pointer(pDb)).FmaxStmt = *(*int32)(unsafe.Pointer(bp + 1040))
 29104  __94:
 29105  	;
 29106  __92:
 29107  	;
 29108  	goto __90
 29109  __89:
 29110  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+152, ts+11851,
 29111  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)), ts+11864,
 29112  		uintptr(0)))
 29113  	return TCL_ERROR
 29114  __90:
 29115  	;
 29116  __86:
 29117  	;
 29118  	goto __3
 29119  
 29120  __9:
 29121  	if !(objc != 2) {
 29122  		goto __98
 29123  	}
 29124  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 29125  	return TCL_ERROR
 29126  __98:
 29127  	;
 29128  	pResult = tcl.XTcl_GetObjResult(tls, interp)
 29129  	tcl.XTcl_SetWideIntObj(tls, pResult, sqlite3.Xsqlite3_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 29130  	goto __3
 29131  
 29132  __10:
 29133  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)))
 29134  	goto __3
 29135  
 29136  __11:
 29137  	if !(objc != 4) {
 29138  		goto __99
 29139  	}
 29140  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11889)
 29141  	return TCL_ERROR
 29142  __99:
 29143  	;
 29144  	zName = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29145  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1044)
 29146  	pCollate = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlCollate{}))+uint64(*(*int32)(unsafe.Pointer(bp + 1044)))+uint64(1)))
 29147  	if !(pCollate == uintptr(0)) {
 29148  		goto __100
 29149  	}
 29150  	return TCL_ERROR
 29151  __100:
 29152  	;
 29153  	(*SqlCollate)(unsafe.Pointer(pCollate)).Finterp = interp
 29154  	(*SqlCollate)(unsafe.Pointer(pCollate)).FpNext = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollate
 29155  	(*SqlCollate)(unsafe.Pointer(pCollate)).FzScript = pCollate + 1*24
 29156  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollate = pCollate
 29157  	libc.Xmemcpy(tls, (*SqlCollate)(unsafe.Pointer(pCollate)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 1044))+1))
 29158  	if !(sqlite3.Xsqlite3_create_collation(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName, SQLITE_UTF8,
 29159  		pCollate, *(*uintptr)(unsafe.Pointer(&struct {
 29160  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 29161  		}{tclSqlCollate}))) != 0) {
 29162  		goto __101
 29163  	}
 29164  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 29165  	return TCL_ERROR
 29166  __101:
 29167  	;
 29168  	goto __3
 29169  
 29170  __12:
 29171  	if !(objc != 3) {
 29172  		goto __102
 29173  	}
 29174  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+10187)
 29175  	return TCL_ERROR
 29176  __102:
 29177  	;
 29178  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded != 0) {
 29179  		goto __103
 29180  	}
 29181  __104:
 29182  	_objPtr = (*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded
 29183  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1) {
 29184  		goto __107
 29185  	}
 29186  	tcl.XTclFreeObj(tls, _objPtr)
 29187  __107:
 29188  	;
 29189  	goto __105
 29190  __105:
 29191  	if 0 != 0 {
 29192  		goto __104
 29193  	}
 29194  	goto __106
 29195  __106:
 29196  	;
 29197  __103:
 29198  	;
 29199  	(*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29200  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpCollateNeeded)).FrefCount++
 29201  	sqlite3.Xsqlite3_collation_needed(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, pDb, *(*uintptr)(unsafe.Pointer(&struct {
 29202  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 29203  	}{tclCollateNeeded})))
 29204  	goto __3
 29205  
 29206  __13:
 29207  	if !(objc > 3) {
 29208  		goto __108
 29209  	}
 29210  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 29211  	return TCL_ERROR
 29212  	goto __109
 29213  __108:
 29214  	if !(objc == 2) {
 29215  		goto __110
 29216  	}
 29217  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29218  		goto __112
 29219  	}
 29220  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+184, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, uintptr(0)))
 29221  __112:
 29222  	;
 29223  	goto __111
 29224  __110:
 29225  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29226  		goto __113
 29227  	}
 29228  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit)
 29229  __113:
 29230  	;
 29231  	zCommit = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1048)
 29232  	if !(zCommit != 0 && *(*int32)(unsafe.Pointer(bp + 1048)) > 0) {
 29233  		goto __114
 29234  	}
 29235  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29236  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzCommit, zCommit, uint64(*(*int32)(unsafe.Pointer(bp + 1048))+1))
 29237  	goto __115
 29238  __114:
 29239  	(*SqliteDb)(unsafe.Pointer(pDb)).FzCommit = uintptr(0)
 29240  __115:
 29241  	;
 29242  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzCommit != 0) {
 29243  		goto __116
 29244  	}
 29245  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 29246  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 29247  		f func(*libc.TLS, uintptr) int32
 29248  	}{DbCommitHandler})), pDb)
 29249  	goto __117
 29250  __116:
 29251  	sqlite3.Xsqlite3_commit_hook(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 29252  __117:
 29253  	;
 29254  __111:
 29255  	;
 29256  __109:
 29257  	;
 29258  	goto __3
 29259  
 29260  __14:
 29261  	if !(objc != 3) {
 29262  		goto __118
 29263  	}
 29264  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29265  	return TCL_ERROR
 29266  __118:
 29267  	;
 29268  	isComplete = sqlite3.Xsqlite3_complete(tls, tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0)))
 29269  	pResult1 = tcl.XTcl_GetObjResult(tls, interp)
 29270  	tcl.XTcl_SetIntObj(tls, pResult1, libc.Bool32(isComplete != 0))
 29271  	goto __3
 29272  
 29273  __15:
 29274  	if !(objc > 4) {
 29275  		goto __119
 29276  	}
 29277  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11901)
 29278  	return TCL_ERROR
 29279  __119:
 29280  	;
 29281  	if !(objc == 2) {
 29282  		goto __120
 29283  	}
 29284  
 29285  	pResult2 = tcl.XTcl_NewListObj(tls, 0, uintptr(0))
 29286  	ii = 0
 29287  __122:
 29288  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29289  		goto __124
 29290  	}
 29291  	*(*int32)(unsafe.Pointer(bp + 1052)) = 0
 29292  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+200, -1, bp+1052))
 29293  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29294  		tcl.XTcl_NewStringObj(tls, aDbConfig[ii].FzName, -1))
 29295  	tcl.XTcl_ListObjAppendElement(tls, interp, pResult2,
 29296  		tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1052))))
 29297  	goto __123
 29298  __123:
 29299  	ii++
 29300  	goto __122
 29301  	goto __124
 29302  __124:
 29303  	;
 29304  	goto __121
 29305  __120:
 29306  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 29307  	*(*int32)(unsafe.Pointer(bp + 1056)) = -1
 29308  	*(*int32)(unsafe.Pointer(bp + 1060)) = 0
 29309  	if !(int32(*(*int8)(unsafe.Pointer(zOpt))) == '-') {
 29310  		goto __125
 29311  	}
 29312  	zOpt++
 29313  __125:
 29314  	;
 29315  	ii = 0
 29316  __126:
 29317  	if !(uint64(ii) < uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29318  		goto __128
 29319  	}
 29320  	if !(libc.Xstrcmp(tls, aDbConfig[ii].FzName, zOpt) == 0) {
 29321  		goto __129
 29322  	}
 29323  	goto __128
 29324  __129:
 29325  	;
 29326  	goto __127
 29327  __127:
 29328  	ii++
 29329  	goto __126
 29330  	goto __128
 29331  __128:
 29332  	;
 29333  	if !(uint64(ii) >= uint64(unsafe.Sizeof(aDbConfig))/uint64(unsafe.Sizeof(DbConfigChoices{}))) {
 29334  		goto __130
 29335  	}
 29336  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+216, ts+11920, zOpt,
 29337  		ts+11945, uintptr(0)))
 29338  	return TCL_ERROR
 29339  __130:
 29340  	;
 29341  	if !(objc == 4) {
 29342  		goto __131
 29343  	}
 29344  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1056) != 0) {
 29345  		goto __132
 29346  	}
 29347  	return TCL_ERROR
 29348  __132:
 29349  	;
 29350  __131:
 29351  	;
 29352  	sqlite3.Xsqlite3_db_config(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, aDbConfig[ii].Fop, libc.VaList(bp+248, *(*int32)(unsafe.Pointer(bp + 1056)), bp+1060))
 29353  	pResult2 = tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 1060)))
 29354  __121:
 29355  	;
 29356  	tcl.XTcl_SetObjResult(tls, interp, pResult2)
 29357  	goto __3
 29358  
 29359  __16:
 29360  	lineno = 0
 29361  	if !(objc < 5 || objc > 7) {
 29362  		goto __133
 29363  	}
 29364  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29365  		ts+11947)
 29366  	return TCL_ERROR
 29367  __133:
 29368  	;
 29369  	if !(objc >= 6) {
 29370  		goto __134
 29371  	}
 29372  	zSep = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0))
 29373  	goto __135
 29374  __134:
 29375  	zSep = ts + 12009
 29376  __135:
 29377  	;
 29378  	if !(objc >= 7) {
 29379  		goto __136
 29380  	}
 29381  	zNull = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)), uintptr(0))
 29382  	goto __137
 29383  __136:
 29384  	zNull = ts + 584
 29385  __137:
 29386  	;
 29387  	zConflict = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29388  	zTable = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), uintptr(0))
 29389  	zFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0))
 29390  	nSep = strlen30(tls, zSep)
 29391  	nNull = strlen30(tls, zNull)
 29392  	if !(nSep == 0) {
 29393  		goto __138
 29394  	}
 29395  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+264, ts+12011,
 29396  		uintptr(0)))
 29397  	return TCL_ERROR
 29398  __138:
 29399  	;
 29400  	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) {
 29401  		goto __139
 29402  	}
 29403  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+280, ts+12090, zConflict,
 29404  		ts+12099, uintptr(0)))
 29405  	return TCL_ERROR
 29406  __139:
 29407  	;
 29408  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+12179, libc.VaList(bp+312, zTable))
 29409  	if !(zSql == uintptr(0)) {
 29410  		goto __140
 29411  	}
 29412  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+320, ts+12198, zTable, uintptr(0)))
 29413  	return TCL_ERROR
 29414  __140:
 29415  	;
 29416  	nByte = strlen30(tls, zSql)
 29417  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29418  	sqlite3.Xsqlite3_free(tls, zSql)
 29419  	if !(rc != 0) {
 29420  		goto __141
 29421  	}
 29422  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+344, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29423  	nCol = 0
 29424  	goto __142
 29425  __141:
 29426  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29427  __142:
 29428  	;
 29429  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29430  	if !(nCol == 0) {
 29431  		goto __143
 29432  	}
 29433  	return TCL_ERROR
 29434  __143:
 29435  	;
 29436  	zSql = libc.Xmalloc(tls, uint64(nByte+50+nCol*2))
 29437  	if !(zSql == uintptr(0)) {
 29438  		goto __144
 29439  	}
 29440  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+368, ts+12229, uintptr(0)))
 29441  	return TCL_ERROR
 29442  __144:
 29443  	;
 29444  	sqlite3.Xsqlite3_snprintf(tls, nByte+50, zSql, ts+12251,
 29445  		libc.VaList(bp+384, zConflict, zTable))
 29446  	j = strlen30(tls, zSql)
 29447  	i = 1
 29448  __145:
 29449  	if !(i < nCol) {
 29450  		goto __147
 29451  	}
 29452  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(',')
 29453  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8('?')
 29454  	goto __146
 29455  __146:
 29456  	i++
 29457  	goto __145
 29458  	goto __147
 29459  __147:
 29460  	;
 29461  	*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = int8(')')
 29462  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 29463  	rc = sqlite3.Xsqlite3_prepare(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSql, -1, bp+1064, uintptr(0))
 29464  	libc.Xfree(tls, zSql)
 29465  	if !(rc != 0) {
 29466  		goto __148
 29467  	}
 29468  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+400, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29469  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29470  	return TCL_ERROR
 29471  __148:
 29472  	;
 29473  	in = libc.Xfopen(tls, zFile, ts+4402)
 29474  	if !(in == uintptr(0)) {
 29475  		goto __149
 29476  	}
 29477  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+424, ts+12283, zFile, uintptr(0)))
 29478  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29479  	return TCL_ERROR
 29480  __149:
 29481  	;
 29482  	azCol = libc.Xmalloc(tls, uint64(unsafe.Sizeof(uintptr(0)))*uint64(nCol+1))
 29483  	if !(azCol == uintptr(0)) {
 29484  		goto __150
 29485  	}
 29486  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+448, ts+12229, uintptr(0)))
 29487  	libc.Xfclose(tls, in)
 29488  	return TCL_ERROR
 29489  __150:
 29490  	;
 29491  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, ts+12309, uintptr(0), uintptr(0), uintptr(0))
 29492  	zCommit1 = ts + 11628
 29493  __151:
 29494  	if !(libc.AssignUintptr(&zLine, local_getline(tls, uintptr(0), in)) != uintptr(0)) {
 29495  		goto __152
 29496  	}
 29497  	lineno++
 29498  	*(*uintptr)(unsafe.Pointer(azCol)) = zLine
 29499  	i = 0
 29500  	z = zLine
 29501  __153:
 29502  	if !(*(*int8)(unsafe.Pointer(z)) != 0) {
 29503  		goto __155
 29504  	}
 29505  	if !(int32(*(*int8)(unsafe.Pointer(z))) == int32(*(*int8)(unsafe.Pointer(zSep))) && libc.Xstrncmp(tls, z, zSep, uint64(nSep)) == 0) {
 29506  		goto __156
 29507  	}
 29508  	*(*int8)(unsafe.Pointer(z)) = int8(0)
 29509  	i++
 29510  	if !(i < nCol) {
 29511  		goto __157
 29512  	}
 29513  	*(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)) = z + uintptr(nSep)
 29514  	z += uintptr(nSep - 1)
 29515  __157:
 29516  	;
 29517  __156:
 29518  	;
 29519  	goto __154
 29520  __154:
 29521  	z++
 29522  	goto __153
 29523  	goto __155
 29524  __155:
 29525  	;
 29526  	if !(i+1 != nCol) {
 29527  		goto __158
 29528  	}
 29529  	nErr = strlen30(tls, zFile) + 200
 29530  	zErr = libc.Xmalloc(tls, uint64(nErr))
 29531  	if !(zErr != 0) {
 29532  		goto __159
 29533  	}
 29534  	sqlite3.Xsqlite3_snprintf(tls, nErr, zErr,
 29535  		ts+12315,
 29536  		libc.VaList(bp+464, zFile, lineno, nCol, i+1))
 29537  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+496, zErr, uintptr(0)))
 29538  	libc.Xfree(tls, zErr)
 29539  __159:
 29540  	;
 29541  	zCommit1 = ts + 7824
 29542  	goto __152
 29543  __158:
 29544  	;
 29545  	i = 0
 29546  __160:
 29547  	if !(i < nCol) {
 29548  		goto __162
 29549  	}
 29550  
 29551  	if !(nNull > 0 && libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), zNull) == 0 ||
 29552  		strlen30(tls, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8))) == 0) {
 29553  		goto __163
 29554  	}
 29555  	sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1)
 29556  	goto __164
 29557  __163:
 29558  	sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)), i+1, *(*uintptr)(unsafe.Pointer(azCol + uintptr(i)*8)), -1, uintptr(0))
 29559  __164:
 29560  	;
 29561  	goto __161
 29562  __161:
 29563  	i++
 29564  	goto __160
 29565  	goto __162
 29566  __162:
 29567  	;
 29568  	sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29569  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29570  	libc.Xfree(tls, zLine)
 29571  	if !(rc != SQLITE_OK) {
 29572  		goto __165
 29573  	}
 29574  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+512, ts+12221, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 29575  	zCommit1 = ts + 7824
 29576  	goto __152
 29577  __165:
 29578  	;
 29579  	goto __151
 29580  __152:
 29581  	;
 29582  	libc.Xfree(tls, azCol)
 29583  	libc.Xfclose(tls, in)
 29584  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 1064)))
 29585  	sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zCommit1, uintptr(0), uintptr(0), uintptr(0))
 29586  
 29587  	if !(int32(*(*int8)(unsafe.Pointer(zCommit1))) == 'C') {
 29588  		goto __166
 29589  	}
 29590  
 29591  	pResult3 = tcl.XTcl_GetObjResult(tls, interp)
 29592  	tcl.XTcl_SetIntObj(tls, pResult3, lineno)
 29593  	rc = TCL_OK
 29594  	goto __167
 29595  __166:
 29596  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+1072, ts+1333, libc.VaList(bp+536, lineno))
 29597  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+544, ts+12375, bp+1072,
 29598  		uintptr(0)))
 29599  	rc = TCL_ERROR
 29600  __167:
 29601  	;
 29602  	goto __3
 29603  
 29604  __17:
 29605  	zSchema = uintptr(0)
 29606  	pValue = uintptr(0)
 29607  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = int64(0)
 29608  	*(*int32)(unsafe.Pointer(bp + 1160)) = 0
 29609  
 29610  	if !(objc < 3) {
 29611  		goto __168
 29612  	}
 29613  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12408)
 29614  	rc = TCL_ERROR
 29615  	goto __3
 29616  __168:
 29617  	;
 29618  	i1 = 2
 29619  __169:
 29620  	if !(i1 < objc-1) {
 29621  		goto __171
 29622  	}
 29623  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i1)*8)))
 29624  	if !(libc.Xstrcmp(tls, z1, ts+12425) == 0 && i1 < objc-2) {
 29625  		goto __172
 29626  	}
 29627  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1152)
 29628  	if !(rc != 0) {
 29629  		goto __173
 29630  	}
 29631  	goto deserialize_error
 29632  __173:
 29633  	;
 29634  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 1152))
 29635  	goto __170
 29636  __172:
 29637  	;
 29638  	if !(libc.Xstrcmp(tls, z1, ts+12434) == 0 && i1 < objc-2) {
 29639  		goto __174
 29640  	}
 29641  	rc = tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(libc.PreIncInt32(&i1, 1))*8)), bp+1160)
 29642  	if !(rc != 0) {
 29643  		goto __175
 29644  	}
 29645  	goto deserialize_error
 29646  __175:
 29647  	;
 29648  	goto __170
 29649  __174:
 29650  	;
 29651  	if !(zSchema == uintptr(0) && i1 == objc-2 && int32(*(*int8)(unsafe.Pointer(z1))) != '-') {
 29652  		goto __176
 29653  	}
 29654  	zSchema = z1
 29655  	goto __170
 29656  __176:
 29657  	;
 29658  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+568, ts+12444, z1, uintptr(0)))
 29659  	rc = TCL_ERROR
 29660  	goto deserialize_error
 29661  	goto __170
 29662  __170:
 29663  	i1++
 29664  	goto __169
 29665  	goto __171
 29666  __171:
 29667  	;
 29668  	pValue = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29669  	pBA = tcl.XTcl_GetByteArrayFromObj(tls, pValue, bp+1164)
 29670  	pData = sqlite3.Xsqlite3_malloc64(tls, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 29671  	if !(pData == uintptr(0) && *(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 29672  		goto __177
 29673  	}
 29674  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+592, ts+2069, uintptr(0)))
 29675  	rc = TCL_ERROR
 29676  	goto __178
 29677  __177:
 29678  	if !(*(*int32)(unsafe.Pointer(bp + 1164)) > 0) {
 29679  		goto __179
 29680  	}
 29681  	libc.Xmemcpy(tls, pData, pBA, uint64(*(*int32)(unsafe.Pointer(bp + 1164))))
 29682  __179:
 29683  	;
 29684  	if !(*(*int32)(unsafe.Pointer(bp + 1160)) != 0) {
 29685  		goto __180
 29686  	}
 29687  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_READONLY
 29688  	goto __181
 29689  __180:
 29690  	flags = SQLITE_DESERIALIZE_FREEONCLOSE | SQLITE_DESERIALIZE_RESIZEABLE
 29691  __181:
 29692  	;
 29693  	xrc = sqlite3.Xsqlite3_deserialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, pData, int64(*(*int32)(unsafe.Pointer(bp + 1164))), int64(*(*int32)(unsafe.Pointer(bp + 1164))), uint32(flags))
 29694  	if !(xrc != 0) {
 29695  		goto __182
 29696  	}
 29697  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+608, ts+12461, uintptr(0)))
 29698  	rc = TCL_ERROR
 29699  __182:
 29700  	;
 29701  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp + 1168)) > int64(0)) {
 29702  		goto __183
 29703  	}
 29704  	sqlite3.Xsqlite3_file_control(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema, SQLITE_FCNTL_SIZE_LIMIT, bp+1168)
 29705  __183:
 29706  	;
 29707  __178:
 29708  	;
 29709  deserialize_error:
 29710  	goto __3
 29711  
 29712  __18:
 29713  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+624, ts+12489,
 29714  		uintptr(0)))
 29715  	return TCL_ERROR
 29716  
 29717  __19:
 29718  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 29719  	goto __3
 29720  
 29721  __20:
 29722  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_error_offset(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)))
 29723  	goto __3
 29724  
 29725  __21:
 29726  __22:
 29727  	pResult4 = uintptr(0)
 29728  	if !(objc != 3) {
 29729  		goto __184
 29730  	}
 29731  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+9535)
 29732  	return TCL_ERROR
 29733  __184:
 29734  	;
 29735  	dbEvalInit(tls, bp+1176, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 29736  	rc = dbEvalStep(tls, bp+1176)
 29737  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 24) {
 29738  		goto __185
 29739  	}
 29740  	if !(rc == TCL_OK) {
 29741  		goto __187
 29742  	}
 29743  	pResult4 = dbEvalColumnValue(tls, bp+1176, 0)
 29744  	goto __188
 29745  __187:
 29746  	if !(rc == TCL_BREAK) {
 29747  		goto __189
 29748  	}
 29749  	tcl.XTcl_ResetResult(tls, interp)
 29750  __189:
 29751  	;
 29752  __188:
 29753  	;
 29754  	goto __186
 29755  __185:
 29756  	if !(rc == TCL_BREAK || rc == TCL_OK) {
 29757  		goto __190
 29758  	}
 29759  	pResult4 = tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(rc == TCL_OK) != 0))
 29760  __190:
 29761  	;
 29762  __186:
 29763  	;
 29764  	dbEvalFinalize(tls, bp+1176)
 29765  	if !(pResult4 != 0) {
 29766  		goto __191
 29767  	}
 29768  	tcl.XTcl_SetObjResult(tls, interp, pResult4)
 29769  __191:
 29770  	;
 29771  	if !(rc == TCL_BREAK) {
 29772  		goto __192
 29773  	}
 29774  	rc = TCL_OK
 29775  __192:
 29776  	;
 29777  	goto __3
 29778  
 29779  __23:
 29780  	evalFlags = 0
 29781  __193:
 29782  	if !(objc > 3 && libc.AssignUintptr(&zOpt1, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))) != uintptr(0) && int32(*(*int8)(unsafe.Pointer(zOpt1))) == '-') {
 29783  		goto __194
 29784  	}
 29785  	if !(libc.Xstrcmp(tls, zOpt1, ts+12537) == 0) {
 29786  		goto __195
 29787  	}
 29788  	evalFlags = evalFlags | SQLITE_EVAL_WITHOUTNULLS
 29789  	goto __196
 29790  __195:
 29791  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+640, ts+12551, zOpt1, ts+11945, uintptr(0)))
 29792  	return TCL_ERROR
 29793  __196:
 29794  	;
 29795  	objc--
 29796  	objv += 8
 29797  	goto __193
 29798  __194:
 29799  	;
 29800  	if !(objc < 3 || objc > 5) {
 29801  		goto __197
 29802  	}
 29803  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv,
 29804  		ts+12569)
 29805  	return TCL_ERROR
 29806  __197:
 29807  	;
 29808  	if !(objc == 3) {
 29809  		goto __198
 29810  	}
 29811  	pRet = tcl.XTcl_NewObj(tls)
 29812  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 29813  	dbEvalInit(tls, bp+1232, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), 0)
 29814  __200:
 29815  	if !(TCL_OK == libc.AssignInt32(&rc, dbEvalStep(tls, bp+1232))) {
 29816  		goto __201
 29817  	}
 29818  	dbEvalRowInfo(tls, bp+1232, bp+1288, uintptr(0))
 29819  	i2 = 0
 29820  __202:
 29821  	if !(i2 < *(*int32)(unsafe.Pointer(bp + 1288))) {
 29822  		goto __204
 29823  	}
 29824  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, dbEvalColumnValue(tls, bp+1232, i2))
 29825  	goto __203
 29826  __203:
 29827  	i2++
 29828  	goto __202
 29829  	goto __204
 29830  __204:
 29831  	;
 29832  	goto __200
 29833  __201:
 29834  	;
 29835  	dbEvalFinalize(tls, bp+1232)
 29836  	if !(rc == TCL_BREAK) {
 29837  		goto __205
 29838  	}
 29839  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 29840  	rc = TCL_OK
 29841  __205:
 29842  	;
 29843  __206:
 29844  	_objPtr1 = pRet
 29845  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr1)).FrefCount, 1) <= 1) {
 29846  		goto __209
 29847  	}
 29848  	tcl.XTclFreeObj(tls, _objPtr1)
 29849  __209:
 29850  	;
 29851  	goto __207
 29852  __207:
 29853  	if 0 != 0 {
 29854  		goto __206
 29855  	}
 29856  	goto __208
 29857  __208:
 29858  	;
 29859  	goto __199
 29860  __198:
 29861  	pArray = uintptr(0)
 29862  
 29863  	if !(objc >= 5 && *(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))) != 0) {
 29864  		goto __210
 29865  	}
 29866  	pArray = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 29867  __210:
 29868  	;
 29869  	pScript = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29870  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 29871  
 29872  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(DbEvalContext{})))
 29873  	dbEvalInit(tls, p, pDb, *(*uintptr)(unsafe.Pointer(objv + 2*8)), pArray, evalFlags)
 29874  
 29875  	*(*ClientData)(unsafe.Pointer(bp + 1296)) = p
 29876  	*(*ClientData)(unsafe.Pointer(bp + 1296 + 1*8)) = pScript
 29877  	rc = DbEvalNextCmd(tls, bp+1296, interp, TCL_OK)
 29878  __199:
 29879  	;
 29880  	goto __3
 29881  
 29882  __24:
 29883  	flags1 = SQLITE_UTF8
 29884  	*(*int32)(unsafe.Pointer(bp + 1312)) = -1
 29885  	*(*int32)(unsafe.Pointer(bp + 1368)) = SQLITE_NULL
 29886  	if !(objc < 4) {
 29887  		goto __211
 29888  	}
 29889  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12605)
 29890  	return TCL_ERROR
 29891  __211:
 29892  	;
 29893  	i3 = 3
 29894  __212:
 29895  	if !(i3 < objc-1) {
 29896  		goto __214
 29897  	}
 29898  	z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)))
 29899  	n1 = strlen30(tls, z2)
 29900  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12628, uint64(n1)) == 0) {
 29901  		goto __215
 29902  	}
 29903  	if !(i3 == objc-2) {
 29904  		goto __217
 29905  	}
 29906  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+672, ts+12638, z2, uintptr(0)))
 29907  	return TCL_ERROR
 29908  __217:
 29909  	;
 29910  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3+1)*8)), bp+1312) != 0) {
 29911  		goto __218
 29912  	}
 29913  	return TCL_ERROR
 29914  __218:
 29915  	;
 29916  	if !(*(*int32)(unsafe.Pointer(bp + 1312)) < 0) {
 29917  		goto __219
 29918  	}
 29919  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+696, ts+12668,
 29920  		uintptr(0)))
 29921  	return TCL_ERROR
 29922  __219:
 29923  	;
 29924  	i3++
 29925  	goto __216
 29926  __215:
 29927  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12709, uint64(n1)) == 0) {
 29928  		goto __220
 29929  	}
 29930  	flags1 = flags1 | SQLITE_DETERMINISTIC
 29931  	goto __221
 29932  __220:
 29933  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12724, uint64(n1)) == 0) {
 29934  		goto __222
 29935  	}
 29936  	flags1 = flags1 | SQLITE_DIRECTONLY
 29937  	goto __223
 29938  __222:
 29939  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12736, uint64(n1)) == 0) {
 29940  		goto __224
 29941  	}
 29942  	flags1 = flags1 | SQLITE_INNOCUOUS
 29943  	goto __225
 29944  __224:
 29945  	if !(n1 > 1 && libc.Xstrncmp(tls, z2, ts+12747, uint64(n1)) == 0) {
 29946  		goto __226
 29947  	}
 29948  	*(*[6]uintptr)(unsafe.Pointer(bp + 1320)) = [6]uintptr{ts + 8470, ts + 12759, ts + 12764, ts + 12769, ts + 12774, uintptr(0)}
 29949  
 29950  	if !(i3 == objc-2) {
 29951  		goto __228
 29952  	}
 29953  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+712, ts+12638, z2, uintptr(0)))
 29954  	return TCL_ERROR
 29955  __228:
 29956  	;
 29957  	i3++
 29958  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i3)*8)), bp+1320, int32(unsafe.Sizeof(uintptr(0))), ts+12778, 0, bp+1368) != 0) {
 29959  		goto __229
 29960  	}
 29961  	return TCL_ERROR
 29962  __229:
 29963  	;
 29964  	*(*int32)(unsafe.Pointer(bp + 1368))++
 29965  	goto __227
 29966  __226:
 29967  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+736, ts+11851, z2,
 29968  		ts+12783, uintptr(0)))
 29969  	return TCL_ERROR
 29970  __227:
 29971  	;
 29972  __225:
 29973  	;
 29974  __223:
 29975  	;
 29976  __221:
 29977  	;
 29978  __216:
 29979  	;
 29980  	goto __213
 29981  __213:
 29982  	i3++
 29983  	goto __212
 29984  	goto __214
 29985  __214:
 29986  	;
 29987  	pScript1 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 29988  	zName1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0))
 29989  	pFunc = findSqlFunc(tls, pDb, zName1)
 29990  	if !(pFunc == uintptr(0)) {
 29991  		goto __230
 29992  	}
 29993  	return TCL_ERROR
 29994  __230:
 29995  	;
 29996  	if !((*SqlFunc)(unsafe.Pointer(pFunc)).FpScript != 0) {
 29997  		goto __231
 29998  	}
 29999  __232:
 30000  	_objPtr2 = (*SqlFunc)(unsafe.Pointer(pFunc)).FpScript
 30001  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr2)).FrefCount, 1) <= 1) {
 30002  		goto __235
 30003  	}
 30004  	tcl.XTclFreeObj(tls, _objPtr2)
 30005  __235:
 30006  	;
 30007  	goto __233
 30008  __233:
 30009  	if 0 != 0 {
 30010  		goto __232
 30011  	}
 30012  	goto __234
 30013  __234:
 30014  	;
 30015  __231:
 30016  	;
 30017  	(*SqlFunc)(unsafe.Pointer(pFunc)).FpScript = pScript1
 30018  	(*Tcl_Obj)(unsafe.Pointer(pScript1)).FrefCount++
 30019  	(*SqlFunc)(unsafe.Pointer(pFunc)).FuseEvalObjv = safeToUseEvalObjv(tls, interp, pScript1)
 30020  	(*SqlFunc)(unsafe.Pointer(pFunc)).FeType = *(*int32)(unsafe.Pointer(bp + 1368))
 30021  	rc = sqlite3.Xsqlite3_create_function(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zName1, *(*int32)(unsafe.Pointer(bp + 1312)), flags1,
 30022  		pFunc, *(*uintptr)(unsafe.Pointer(&struct {
 30023  			f func(*libc.TLS, uintptr, int32, uintptr)
 30024  		}{tclSqlFunc})), uintptr(0), uintptr(0))
 30025  	if !(rc != SQLITE_OK) {
 30026  		goto __236
 30027  	}
 30028  	rc = TCL_ERROR
 30029  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(1))
 30030  __236:
 30031  	;
 30032  	goto __3
 30033  
 30034  __25:
 30035  	isReadonly1 = 0
 30036  	zDb = ts + 85
 30037  
 30038  	if !(objc > 3 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), ts+12434) == 0) {
 30039  		goto __237
 30040  	}
 30041  	isReadonly1 = 1
 30042  __237:
 30043  	;
 30044  	if !(objc != 5+isReadonly1 && objc != 6+isReadonly1) {
 30045  		goto __238
 30046  	}
 30047  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12861)
 30048  	return TCL_ERROR
 30049  __238:
 30050  	;
 30051  	if !(objc == 6+isReadonly1) {
 30052  		goto __239
 30053  	}
 30054  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(2+isReadonly1)*8)))
 30055  __239:
 30056  	;
 30057  	zTable1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8)))
 30058  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)))
 30059  	rc = tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+1376)
 30060  
 30061  	if !(rc == TCL_OK) {
 30062  		goto __240
 30063  	}
 30064  	rc = createIncrblobChannel(tls,
 30065  		interp, pDb, zDb, zTable1, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 1376)), isReadonly1)
 30066  __240:
 30067  	;
 30068  	goto __3
 30069  
 30070  __26:
 30071  	sqlite3.Xsqlite3_interrupt(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30072  	goto __3
 30073  
 30074  __27:
 30075  	if !(objc != 2 && objc != 3) {
 30076  		goto __241
 30077  	}
 30078  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12897)
 30079  	return TCL_ERROR
 30080  __241:
 30081  	;
 30082  	if !(objc == 3) {
 30083  		goto __242
 30084  	}
 30085  	zNull1 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1384)
 30086  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzNull != 0) {
 30087  		goto __243
 30088  	}
 30089  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull)
 30090  __243:
 30091  	;
 30092  	if !(zNull1 != 0 && *(*int32)(unsafe.Pointer(bp + 1384)) > 0) {
 30093  		goto __244
 30094  	}
 30095  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1384))+1))
 30096  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, zNull1, uint64(*(*int32)(unsafe.Pointer(bp + 1384))))
 30097  	*(*int8)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FzNull + uintptr(*(*int32)(unsafe.Pointer(bp + 1384))))) = int8(0)
 30098  	goto __245
 30099  __244:
 30100  	(*SqliteDb)(unsafe.Pointer(pDb)).FzNull = uintptr(0)
 30101  __245:
 30102  	;
 30103  __242:
 30104  	;
 30105  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzNull, -1))
 30106  	goto __3
 30107  
 30108  __28:
 30109  	if !(objc != 2) {
 30110  		goto __246
 30111  	}
 30112  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30113  	return TCL_ERROR
 30114  __246:
 30115  	;
 30116  	rowid = sqlite3.Xsqlite3_last_insert_rowid(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30117  	pResult5 = tcl.XTcl_GetObjResult(tls, interp)
 30118  	tcl.XTcl_SetWideIntObj(tls, pResult5, rowid)
 30119  	goto __3
 30120  
 30121  __29:
 30122  	if !(objc == 2) {
 30123  		goto __247
 30124  	}
 30125  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30126  		goto __249
 30127  	}
 30128  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+768, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, uintptr(0)))
 30129  __249:
 30130  	;
 30131  	goto __248
 30132  __247:
 30133  	if !(objc == 4) {
 30134  		goto __250
 30135  	}
 30136  	if !(TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1388)) {
 30137  		goto __252
 30138  	}
 30139  	return TCL_ERROR
 30140  __252:
 30141  	;
 30142  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30143  		goto __253
 30144  	}
 30145  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress)
 30146  __253:
 30147  	;
 30148  	zProgress = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1392)
 30149  	if !(zProgress != 0 && *(*int32)(unsafe.Pointer(bp + 1392)) > 0) {
 30150  		goto __254
 30151  	}
 30152  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30153  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProgress, zProgress, uint64(*(*int32)(unsafe.Pointer(bp + 1392))+1))
 30154  	goto __255
 30155  __254:
 30156  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProgress = uintptr(0)
 30157  __255:
 30158  	;
 30159  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProgress != 0) {
 30160  		goto __256
 30161  	}
 30162  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30163  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1388)), *(*uintptr)(unsafe.Pointer(&struct {
 30164  		f func(*libc.TLS, uintptr) int32
 30165  	}{DbProgressHandler})), pDb)
 30166  	goto __257
 30167  __256:
 30168  	sqlite3.Xsqlite3_progress_handler(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, 0, uintptr(0), uintptr(0))
 30169  __257:
 30170  	;
 30171  	goto __251
 30172  __250:
 30173  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12907)
 30174  	return TCL_ERROR
 30175  __251:
 30176  	;
 30177  __248:
 30178  	;
 30179  	goto __3
 30180  
 30181  __30:
 30182  	if !(objc > 3) {
 30183  		goto __258
 30184  	}
 30185  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30186  	return TCL_ERROR
 30187  	goto __259
 30188  __258:
 30189  	if !(objc == 2) {
 30190  		goto __260
 30191  	}
 30192  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30193  		goto __262
 30194  	}
 30195  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+784, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, uintptr(0)))
 30196  __262:
 30197  	;
 30198  	goto __261
 30199  __260:
 30200  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30201  		goto __263
 30202  	}
 30203  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile)
 30204  __263:
 30205  	;
 30206  	zProfile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1396)
 30207  	if !(zProfile != 0 && *(*int32)(unsafe.Pointer(bp + 1396)) > 0) {
 30208  		goto __264
 30209  	}
 30210  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30211  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzProfile, zProfile, uint64(*(*int32)(unsafe.Pointer(bp + 1396))+1))
 30212  	goto __265
 30213  __264:
 30214  	(*SqliteDb)(unsafe.Pointer(pDb)).FzProfile = uintptr(0)
 30215  __265:
 30216  	;
 30217  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzProfile != 0) {
 30218  		goto __266
 30219  	}
 30220  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30221  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30222  		f func(*libc.TLS, uintptr, uintptr, sqlite_uint64)
 30223  	}{DbProfileHandler})), pDb)
 30224  	goto __267
 30225  __266:
 30226  	sqlite3.Xsqlite3_profile(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30227  __267:
 30228  	;
 30229  __261:
 30230  	;
 30231  __259:
 30232  	;
 30233  	goto __3
 30234  
 30235  __31:
 30236  	if !(objc != 3) {
 30237  		goto __268
 30238  	}
 30239  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+12918)
 30240  	return TCL_ERROR
 30241  __268:
 30242  	;
 30243  	goto __3
 30244  
 30245  __32:
 30246  	nTimeout = 0
 30247  
 30248  	if !(objc == 3) {
 30249  		goto __269
 30250  	}
 30251  	zDestDb = ts + 85
 30252  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30253  	goto __270
 30254  __269:
 30255  	if !(objc == 4) {
 30256  		goto __271
 30257  	}
 30258  	zDestDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30259  	zSrcFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 30260  	goto __272
 30261  __271:
 30262  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11709)
 30263  	return TCL_ERROR
 30264  __272:
 30265  	;
 30266  __270:
 30267  	;
 30268  	rc = sqlite3.Xsqlite3_open_v2(tls, zSrcFile, bp+1400,
 30269  		SQLITE_OPEN_READONLY|(*SqliteDb)(unsafe.Pointer(pDb)).FopenFlags, uintptr(0))
 30270  	if !(rc != SQLITE_OK) {
 30271  		goto __273
 30272  	}
 30273  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+800, ts+12922,
 30274  		sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 1400))), uintptr(0)))
 30275  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30276  	return TCL_ERROR
 30277  __273:
 30278  	;
 30279  	pBackup1 = sqlite3.Xsqlite3_backup_init(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zDestDb, *(*uintptr)(unsafe.Pointer(bp + 1400)), ts+85)
 30280  	if !(pBackup1 == uintptr(0)) {
 30281  		goto __274
 30282  	}
 30283  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+824, ts+12952,
 30284  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30285  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30286  	return TCL_ERROR
 30287  __274:
 30288  	;
 30289  __275:
 30290  	if !(libc.AssignInt32(&rc, sqlite3.Xsqlite3_backup_step(tls, pBackup1, 100)) == SQLITE_OK ||
 30291  		rc == SQLITE_BUSY) {
 30292  		goto __276
 30293  	}
 30294  	if !(rc == SQLITE_BUSY) {
 30295  		goto __277
 30296  	}
 30297  	if !(libc.PostIncInt32(&nTimeout, 1) >= 3) {
 30298  		goto __278
 30299  	}
 30300  	goto __276
 30301  __278:
 30302  	;
 30303  	sqlite3.Xsqlite3_sleep(tls, 100)
 30304  __277:
 30305  	;
 30306  	goto __275
 30307  __276:
 30308  	;
 30309  	sqlite3.Xsqlite3_backup_finish(tls, pBackup1)
 30310  	if !(rc == SQLITE_DONE) {
 30311  		goto __279
 30312  	}
 30313  	rc = TCL_OK
 30314  	goto __280
 30315  __279:
 30316  	if !(rc == SQLITE_BUSY || rc == SQLITE_LOCKED) {
 30317  		goto __281
 30318  	}
 30319  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+848, ts+12969,
 30320  		uintptr(0)))
 30321  	rc = TCL_ERROR
 30322  	goto __282
 30323  __281:
 30324  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+864, ts+12952,
 30325  		sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30326  	rc = TCL_ERROR
 30327  __282:
 30328  	;
 30329  __280:
 30330  	;
 30331  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 1400)))
 30332  	goto __3
 30333  
 30334  __33:
 30335  	if objc >= 3 {
 30336  		zSchema1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30337  	} else {
 30338  		zSchema1 = ts + 85
 30339  	}
 30340  	*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)) = int64(0)
 30341  	if !(objc != 2 && objc != 3) {
 30342  		goto __283
 30343  	}
 30344  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13006)
 30345  	rc = TCL_ERROR
 30346  	goto __284
 30347  __283:
 30348  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(SQLITE_SERIALIZE_NOCOPY))
 30349  	if !(pData1 != 0) {
 30350  		goto __285
 30351  	}
 30352  	needFree = 0
 30353  	goto __286
 30354  __285:
 30355  	pData1 = sqlite3.Xsqlite3_serialize(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zSchema1, bp+1408, uint32(0))
 30356  	needFree = 1
 30357  __286:
 30358  	;
 30359  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pData1, int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 1408)))))
 30360  	if !(needFree != 0) {
 30361  		goto __287
 30362  	}
 30363  	sqlite3.Xsqlite3_free(tls, pData1)
 30364  __287:
 30365  	;
 30366  __284:
 30367  	;
 30368  	goto __3
 30369  
 30370  __34:
 30371  	if !(objc != 3) {
 30372  		goto __288
 30373  	}
 30374  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13017)
 30375  	return TCL_ERROR
 30376  __288:
 30377  	;
 30378  	zOp = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 30379  	if !(libc.Xstrcmp(tls, zOp, ts+9485) == 0) {
 30380  		goto __289
 30381  	}
 30382  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnStep
 30383  	goto __290
 30384  __289:
 30385  	if !(libc.Xstrcmp(tls, zOp, ts+13039) == 0) {
 30386  		goto __291
 30387  	}
 30388  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnSort
 30389  	goto __292
 30390  __291:
 30391  	if !(libc.Xstrcmp(tls, zOp, ts+13044) == 0) {
 30392  		goto __293
 30393  	}
 30394  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnIndex
 30395  	goto __294
 30396  __293:
 30397  	if !(libc.Xstrcmp(tls, zOp, ts+13054) == 0) {
 30398  		goto __295
 30399  	}
 30400  	v2 = (*SqliteDb)(unsafe.Pointer(pDb)).FnVMStep
 30401  	goto __296
 30402  __295:
 30403  	tcl.XTcl_AppendResult(tls, interp,
 30404  		libc.VaList(bp+888, ts+13061,
 30405  			uintptr(0)))
 30406  	return TCL_ERROR
 30407  __296:
 30408  	;
 30409  __294:
 30410  	;
 30411  __292:
 30412  	;
 30413  __290:
 30414  	;
 30415  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, v2))
 30416  	goto __3
 30417  
 30418  __35:
 30419  	if !(objc != 3) {
 30420  		goto __297
 30421  	}
 30422  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13117)
 30423  	return TCL_ERROR
 30424  __297:
 30425  	;
 30426  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1416) != 0) {
 30427  		goto __298
 30428  	}
 30429  	return TCL_ERROR
 30430  __298:
 30431  	;
 30432  	sqlite3.Xsqlite3_busy_timeout(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1416)))
 30433  	goto __3
 30434  
 30435  __36:
 30436  	if !(objc != 2) {
 30437  		goto __299
 30438  	}
 30439  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 30440  	return TCL_ERROR
 30441  __299:
 30442  	;
 30443  	pResult6 = tcl.XTcl_GetObjResult(tls, interp)
 30444  	tcl.XTcl_SetWideIntObj(tls, pResult6, sqlite3.Xsqlite3_total_changes64(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30445  	goto __3
 30446  
 30447  __37:
 30448  	if !(objc > 3) {
 30449  		goto __300
 30450  	}
 30451  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+11698)
 30452  	return TCL_ERROR
 30453  	goto __301
 30454  __300:
 30455  	if !(objc == 2) {
 30456  		goto __302
 30457  	}
 30458  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30459  		goto __304
 30460  	}
 30461  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+904, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, uintptr(0)))
 30462  __304:
 30463  	;
 30464  	goto __303
 30465  __302:
 30466  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30467  		goto __305
 30468  	}
 30469  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace)
 30470  __305:
 30471  	;
 30472  	zTrace = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1420)
 30473  	if !(zTrace != 0 && *(*int32)(unsafe.Pointer(bp + 1420)) > 0) {
 30474  		goto __306
 30475  	}
 30476  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30477  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTrace, zTrace, uint64(*(*int32)(unsafe.Pointer(bp + 1420))+1))
 30478  	goto __307
 30479  __306:
 30480  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTrace = uintptr(0)
 30481  __307:
 30482  	;
 30483  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTrace != 0) {
 30484  		goto __308
 30485  	}
 30486  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30487  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 30488  		f func(*libc.TLS, uintptr, uintptr)
 30489  	}{DbTraceHandler})), pDb)
 30490  	goto __309
 30491  __308:
 30492  	sqlite3.Xsqlite3_trace(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uintptr(0), uintptr(0))
 30493  __309:
 30494  	;
 30495  __303:
 30496  	;
 30497  __301:
 30498  	;
 30499  	goto __3
 30500  
 30501  __38:
 30502  	if !(objc > 4) {
 30503  		goto __310
 30504  	}
 30505  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13130)
 30506  	return TCL_ERROR
 30507  	goto __311
 30508  __310:
 30509  	if !(objc == 2) {
 30510  		goto __312
 30511  	}
 30512  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30513  		goto __314
 30514  	}
 30515  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+920, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, uintptr(0)))
 30516  __314:
 30517  	;
 30518  	goto __313
 30519  __312:
 30520  	wMask = int64(0)
 30521  	if !(objc == 4) {
 30522  		goto __315
 30523  	}
 30524  	if !(TCL_OK != tcl.XTcl_ListObjLength(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1424)) {
 30525  		goto __317
 30526  	}
 30527  	return TCL_ERROR
 30528  __317:
 30529  	;
 30530  	i4 = 0
 30531  __318:
 30532  	if !(i4 < *(*int32)(unsafe.Pointer(bp + 1424))) {
 30533  		goto __320
 30534  	}
 30535  	if !(TCL_OK != tcl.XTcl_ListObjIndex(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), i4, bp+1432)) {
 30536  		goto __321
 30537  	}
 30538  	return TCL_ERROR
 30539  __321:
 30540  	;
 30541  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), uintptr(unsafe.Pointer(&TTYPE_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+13148, 0, bp+1440) != TCL_OK) {
 30542  		goto __322
 30543  	}
 30544  	pError = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, interp))
 30545  	(*Tcl_Obj)(unsafe.Pointer(pError)).FrefCount++
 30546  	if !(TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 1432)), bp+1448)) {
 30547  		goto __324
 30548  	}
 30549  __326:
 30550  	_objPtr3 = pError
 30551  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr3)).FrefCount, 1) <= 1) {
 30552  		goto __329
 30553  	}
 30554  	tcl.XTclFreeObj(tls, _objPtr3)
 30555  __329:
 30556  	;
 30557  	goto __327
 30558  __327:
 30559  	if 0 != 0 {
 30560  		goto __326
 30561  	}
 30562  	goto __328
 30563  __328:
 30564  	;
 30565  	wMask = wMask | *(*Tcl_WideInt)(unsafe.Pointer(bp + 1448))
 30566  	goto __325
 30567  __324:
 30568  	tcl.XTcl_SetObjResult(tls, interp, pError)
 30569  __330:
 30570  	_objPtr4 = pError
 30571  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr4)).FrefCount, 1) <= 1) {
 30572  		goto __333
 30573  	}
 30574  	tcl.XTclFreeObj(tls, _objPtr4)
 30575  __333:
 30576  	;
 30577  	goto __331
 30578  __331:
 30579  	if 0 != 0 {
 30580  		goto __330
 30581  	}
 30582  	goto __332
 30583  __332:
 30584  	;
 30585  	return TCL_ERROR
 30586  __325:
 30587  	;
 30588  	goto __323
 30589  __322:
 30590  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1440))) {
 30591  	case uint32(0):
 30592  		goto __335
 30593  	case uint32(1):
 30594  		goto __336
 30595  	case uint32(2):
 30596  		goto __337
 30597  	case uint32(3):
 30598  		goto __338
 30599  	}
 30600  	goto __334
 30601  __335:
 30602  	wMask = wMask | int64(SQLITE_TRACE_STMT)
 30603  	goto __334
 30604  __336:
 30605  	wMask = wMask | int64(SQLITE_TRACE_PROFILE)
 30606  	goto __334
 30607  __337:
 30608  	wMask = wMask | int64(SQLITE_TRACE_ROW)
 30609  	goto __334
 30610  __338:
 30611  	wMask = wMask | int64(SQLITE_TRACE_CLOSE)
 30612  	goto __334
 30613  __334:
 30614  	;
 30615  __323:
 30616  	;
 30617  	goto __319
 30618  __319:
 30619  	i4++
 30620  	goto __318
 30621  	goto __320
 30622  __320:
 30623  	;
 30624  	goto __316
 30625  __315:
 30626  	wMask = int64(SQLITE_TRACE_STMT)
 30627  __316:
 30628  	;
 30629  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30630  		goto __339
 30631  	}
 30632  	tcl.XTcl_Free(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2)
 30633  __339:
 30634  	;
 30635  	zTraceV2 = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+1424)
 30636  	if !(zTraceV2 != 0 && *(*int32)(unsafe.Pointer(bp + 1424)) > 0) {
 30637  		goto __340
 30638  	}
 30639  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = tcl.XTcl_Alloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 30640  	libc.Xmemcpy(tls, (*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2, zTraceV2, uint64(*(*int32)(unsafe.Pointer(bp + 1424))+1))
 30641  	goto __341
 30642  __340:
 30643  	(*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 = uintptr(0)
 30644  __341:
 30645  	;
 30646  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FzTraceV2 != 0) {
 30647  		goto __342
 30648  	}
 30649  	(*SqliteDb)(unsafe.Pointer(pDb)).Finterp = interp
 30650  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(wMask), *(*uintptr)(unsafe.Pointer(&struct {
 30651  		f func(*libc.TLS, uint32, uintptr, uintptr, uintptr) int32
 30652  	}{DbTraceV2Handler})), pDb)
 30653  	goto __343
 30654  __342:
 30655  	sqlite3.Xsqlite3_trace_v2(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, uint32(0), uintptr(0), uintptr(0))
 30656  __343:
 30657  	;
 30658  __313:
 30659  	;
 30660  __311:
 30661  	;
 30662  	goto __3
 30663  
 30664  __39:
 30665  	zBegin = ts + 13159
 30666  	if !(objc != 3 && objc != 4) {
 30667  		goto __344
 30668  	}
 30669  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13186)
 30670  	return TCL_ERROR
 30671  __344:
 30672  	;
 30673  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction == 0 && objc == 4) {
 30674  		goto __345
 30675  	}
 30676  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&TTYPE_strs1)), int32(unsafe.Sizeof(uintptr(0))), ts+13200, 0, bp+1456) != 0) {
 30677  		goto __346
 30678  	}
 30679  	return TCL_ERROR
 30680  __346:
 30681  	;
 30682  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1456))) {
 30683  	case uint32(0):
 30684  		goto __348
 30685  	case uint32(1):
 30686  		goto __349
 30687  	case uint32(2):
 30688  		goto __350
 30689  	}
 30690  	goto __347
 30691  __348:
 30692  	;
 30693  	goto __347
 30694  __349:
 30695  	zBegin = ts + 13217
 30696  	goto __347
 30697  __350:
 30698  	zBegin = ts + 13233
 30699  	goto __347
 30700  __347:
 30701  	;
 30702  __345:
 30703  	;
 30704  	pScript2 = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 30705  
 30706  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth++
 30707  	rc = sqlite3.Xsqlite3_exec(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, zBegin, uintptr(0), uintptr(0), uintptr(0))
 30708  	(*SqliteDb)(unsafe.Pointer(pDb)).FdisableAuth--
 30709  	if !(rc != SQLITE_OK) {
 30710  		goto __351
 30711  	}
 30712  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+936, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30713  	return TCL_ERROR
 30714  __351:
 30715  	;
 30716  	(*SqliteDb)(unsafe.Pointer(pDb)).FnTransaction++
 30717  
 30718  	addDatabaseRef(tls, pDb)
 30719  	if !(DbUseNre(tls) != 0) {
 30720  		goto __352
 30721  	}
 30722  	tcl.XTcl_NRAddCallback(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 30723  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 30724  	}{DbTransPostCmd})), *(*uintptr)(unsafe.Pointer(bp + 1464)), uintptr(0), uintptr(0), uintptr(0))
 30725  	tcl.XTcl_NREvalObj(tls, interp, pScript2, 0)
 30726  	goto __353
 30727  __352:
 30728  	rc = DbTransPostCmd(tls, bp+1464, interp, tcl.XTcl_EvalObjEx(tls, interp, pScript2, 0))
 30729  __353:
 30730  	;
 30731  	goto __3
 30732  
 30733  __40:
 30734  	if !(objc != 2 && objc != 3) {
 30735  		goto __354
 30736  	}
 30737  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 30738  	rc = TCL_ERROR
 30739  	goto __355
 30740  __354:
 30741  	xNotify = uintptr(0)
 30742  	pNotifyArg = uintptr(0)
 30743  
 30744  	if !((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify != 0) {
 30745  		goto __356
 30746  	}
 30747  __357:
 30748  	_objPtr5 = (*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify
 30749  	if !(libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr5)).FrefCount, 1) <= 1) {
 30750  		goto __360
 30751  	}
 30752  	tcl.XTclFreeObj(tls, _objPtr5)
 30753  __360:
 30754  	;
 30755  	goto __358
 30756  __358:
 30757  	if 0 != 0 {
 30758  		goto __357
 30759  	}
 30760  	goto __359
 30761  __359:
 30762  	;
 30763  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = uintptr(0)
 30764  __356:
 30765  	;
 30766  	if !(objc == 3) {
 30767  		goto __361
 30768  	}
 30769  	xNotify = *(*uintptr)(unsafe.Pointer(&struct {
 30770  		f func(*libc.TLS, uintptr, int32)
 30771  	}{DbUnlockNotify}))
 30772  	pNotifyArg = pDb
 30773  	(*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify = *(*uintptr)(unsafe.Pointer(objv + 2*8))
 30774  	(*Tcl_Obj)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FpUnlockNotify)).FrefCount++
 30775  __361:
 30776  	;
 30777  	if !(sqlite3.Xsqlite3_unlock_notify(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, xNotify, pNotifyArg) != 0) {
 30778  		goto __362
 30779  	}
 30780  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+952, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30781  	rc = TCL_ERROR
 30782  __362:
 30783  	;
 30784  __355:
 30785  	;
 30786  	goto __3
 30787  
 30788  __41:
 30789  	if !(objc < 3) {
 30790  		goto __363
 30791  	}
 30792  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13258)
 30793  __363:
 30794  	;
 30795  	if !(tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&azSub)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+1472) != 0) {
 30796  		goto __364
 30797  	}
 30798  	return TCL_ERROR
 30799  __364:
 30800  	;
 30801  	switch uint32(*(*int32)(unsafe.Pointer(bp + 1472))) {
 30802  	case uint32(0):
 30803  		goto __366
 30804  
 30805  	case uint32(2):
 30806  		goto __367
 30807  
 30808  	case uint32(1):
 30809  		goto __368
 30810  
 30811  	case uint32(3):
 30812  		goto __369
 30813  	case uint32(4):
 30814  		goto __370
 30815  	}
 30816  	goto __365
 30817  __366:
 30818  	nCol2 = sqlite3.Xsqlite3_preupdate_count(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb)
 30819  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nCol2))
 30820  	goto __365
 30821  
 30822  __367:
 30823  	if !(objc > 4) {
 30824  		goto __371
 30825  	}
 30826  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13277)
 30827  	return TCL_ERROR
 30828  __371:
 30829  	;
 30830  	DbHookCmd(tls, interp, pDb, func() uintptr {
 30831  		if objc == 4 {
 30832  			return *(*uintptr)(unsafe.Pointer(objv + 3*8))
 30833  		}
 30834  		return uintptr(0)
 30835  	}(), pDb+112)
 30836  	goto __365
 30837  
 30838  __368:
 30839  	if !(objc != 3) {
 30840  		goto __372
 30841  	}
 30842  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+584)
 30843  	return TCL_ERROR
 30844  __372:
 30845  	;
 30846  	pRet1 = tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_preupdate_depth(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb))
 30847  	tcl.XTcl_SetObjResult(tls, interp, pRet1)
 30848  	goto __365
 30849  
 30850  __369:
 30851  __370:
 30852  	if !(objc != 4) {
 30853  		goto __373
 30854  	}
 30855  	tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+13291)
 30856  	return TCL_ERROR
 30857  __373:
 30858  	;
 30859  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+1476) != 0) {
 30860  		goto __374
 30861  	}
 30862  	return TCL_ERROR
 30863  __374:
 30864  	;
 30865  	if !(*(*int32)(unsafe.Pointer(bp + 1472)) == 4) {
 30866  		goto __375
 30867  	}
 30868  	rc = sqlite3.Xsqlite3_preupdate_old(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 30869  	goto __376
 30870  __375:
 30871  	;
 30872  	rc = sqlite3.Xsqlite3_preupdate_new(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb, *(*int32)(unsafe.Pointer(bp + 1476)), bp+1480)
 30873  __376:
 30874  	;
 30875  	if !(rc == SQLITE_OK) {
 30876  		goto __377
 30877  	}
 30878  	pObj1 = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 1480))), -1)
 30879  	tcl.XTcl_SetObjResult(tls, interp, pObj1)
 30880  	goto __378
 30881  __377:
 30882  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+968, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(pDb)).Fdb), uintptr(0)))
 30883  	return TCL_ERROR
 30884  __378:
 30885  	;
 30886  __365:
 30887  	;
 30888  	goto __3
 30889  
 30890  __42:
 30891  __43:
 30892  __44:
 30893  	ppHook = uintptr(0)
 30894  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 41) {
 30895  		goto __379
 30896  	}
 30897  	ppHook = pDb + 128
 30898  __379:
 30899  	;
 30900  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 39) {
 30901  		goto __380
 30902  	}
 30903  	ppHook = pDb + 104
 30904  __380:
 30905  	;
 30906  	if !(*(*int32)(unsafe.Pointer(bp + 1016)) == 30) {
 30907  		goto __381
 30908  	}
 30909  	ppHook = pDb + 120
 30910  __381:
 30911  	;
 30912  	if !(objc > 3) {
 30913  		goto __382
 30914  	}
 30915  	tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 30916  	return TCL_ERROR
 30917  __382:
 30918  	;
 30919  	DbHookCmd(tls, interp, pDb, func() uintptr {
 30920  		if objc == 3 {
 30921  			return *(*uintptr)(unsafe.Pointer(objv + 2*8))
 30922  		}
 30923  		return uintptr(0)
 30924  	}(), ppHook)
 30925  	goto __3
 30926  
 30927  __45:
 30928  	i5 = 2
 30929  __383:
 30930  	if !(i5 < objc) {
 30931  		goto __385
 30932  	}
 30933  	zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)))
 30934  
 30935  	if !(libc.Xstrcmp(tls, zArg, ts+13297) == 0 && i5+1 < objc) {
 30936  		goto __386
 30937  	}
 30938  	i5++
 30939  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i5)*8)), pDb+228) != 0) {
 30940  		goto __388
 30941  	}
 30942  	return TCL_ERROR
 30943  __388:
 30944  	;
 30945  	goto __387
 30946  __386:
 30947  	if !(libc.Xstrcmp(tls, zArg, ts+13317) == 0) {
 30948  		goto __389
 30949  	}
 30950  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+1488, ts+9889,
 30951  		libc.VaList(bp+984, func() uintptr {
 30952  			if (*SqliteDb)(unsafe.Pointer(pDb)).FstmtList != 0 {
 30953  				return (*SqlPreparedStmt)(unsafe.Pointer((*SqliteDb)(unsafe.Pointer(pDb)).FstmtList)).FpStmt
 30954  			}
 30955  			return uintptr(0)
 30956  		}()))
 30957  	tcl.XTcl_SetResult(tls, interp, bp+1488, uintptr(1))
 30958  	goto __390
 30959  __389:
 30960  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+992, ts+13332, zArg, uintptr(0)))
 30961  	return TCL_ERROR
 30962  __390:
 30963  	;
 30964  __387:
 30965  	;
 30966  	goto __384
 30967  __384:
 30968  	i5++
 30969  	goto __383
 30970  	goto __385
 30971  __385:
 30972  	;
 30973  	if !(i5 == 2) {
 30974  		goto __391
 30975  	}
 30976  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_libversion(tls), uintptr(0))
 30977  __391:
 30978  	;
 30979  	goto __3
 30980  
 30981  __3:
 30982  	;
 30983  	return rc
 30984  }
 30985  
 30986  type DbConfigChoices = struct {
 30987  	FzName       uintptr
 30988  	Fop          int32
 30989  	F__ccgo_pad1 [4]byte
 30990  }
 30991  
 30992  var DB_strs = [43]uintptr{
 30993  	ts + 13351, ts + 13362, ts + 13369,
 30994  	ts + 13383, ts + 13388, ts + 13394,
 30995  	ts + 9490, ts + 13402, ts + 13410,
 30996  	ts + 13427, ts + 13439, ts + 13448,
 30997  	ts + 13455, ts + 13460, ts + 13472,
 30998  	ts + 13494, ts + 13504, ts + 4896,
 30999  	ts + 13516, ts + 13523, ts + 10868,
 31000  	ts + 13532, ts + 13542, ts + 13560,
 31001  	ts + 13570, ts + 13580, ts + 13590,
 31002  	ts + 9564, ts + 13598, ts + 13604,
 31003  	ts + 13612, ts + 13626, ts + 13636,
 31004  	ts + 13643, ts + 13651, ts + 13665,
 31005  	ts + 13671, ts + 13680, ts + 13692,
 31006  	ts + 13706, ts + 13718, ts + 13726,
 31007  	uintptr(0),
 31008  }
 31009  var aDbConfig = [16]DbConfigChoices{
 31010  	{FzName: ts + 13735, Fop: SQLITE_DBCONFIG_DEFENSIVE},
 31011  	{FzName: ts + 13745, Fop: SQLITE_DBCONFIG_DQS_DDL},
 31012  	{FzName: ts + 13753, Fop: SQLITE_DBCONFIG_DQS_DML},
 31013  	{FzName: ts + 13761, Fop: SQLITE_DBCONFIG_ENABLE_FKEY},
 31014  	{FzName: ts + 13773, Fop: SQLITE_DBCONFIG_ENABLE_QPSG},
 31015  	{FzName: ts + 13785, Fop: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 31016  	{FzName: ts + 13800, Fop: SQLITE_DBCONFIG_ENABLE_VIEW},
 31017  	{FzName: ts + 13812, Fop: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 31018  	{FzName: ts + 13827, Fop: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 31019  	{FzName: ts + 13846, Fop: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 31020  	{FzName: ts + 13865, Fop: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 31021  	{FzName: ts + 13880, Fop: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 31022  	{FzName: ts + 13897, Fop: SQLITE_DBCONFIG_RESET_DATABASE},
 31023  	{FzName: ts + 13912, Fop: SQLITE_DBCONFIG_TRIGGER_EQP},
 31024  	{FzName: ts + 13924, Fop: SQLITE_DBCONFIG_TRUSTED_SCHEMA},
 31025  	{FzName: ts + 13939, Fop: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 31026  }
 31027  var TTYPE_strs = [5]uintptr{
 31028  	ts + 13955, ts + 13590, ts + 13965, ts + 9490, uintptr(0),
 31029  }
 31030  var TTYPE_strs1 = [4]uintptr{
 31031  	ts + 13969, ts + 13978, ts + 13988, uintptr(0),
 31032  }
 31033  var azSub = [6]uintptr{ts + 1965, ts + 13998, ts + 14004, ts + 14009, ts + 14013, uintptr(0)}
 31034  
 31035  func DbObjCmdAdaptor(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31036  	return tcl.XTcl_NRCallObjProc(tls, interp, *(*uintptr)(unsafe.Pointer(&struct {
 31037  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31038  	}{DbObjCmd})), cd, objc, objv)
 31039  }
 31040  
 31041  func sqliteCmdUsage(tls *libc.TLS, interp uintptr, objv uintptr) int32 {
 31042  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 31043  		ts+14017)
 31044  	return TCL_ERROR
 31045  }
 31046  
 31047  func DbMain(tls *libc.TLS, cd uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31048  	bp := tls.Alloc(336)
 31049  	defer tls.Free(336)
 31050  
 31051  	var p uintptr
 31052  	var zArg uintptr
 31053  	var zErrMsg uintptr
 31054  	var i int32
 31055  	var zFile uintptr = uintptr(0)
 31056  	var zVfs uintptr = uintptr(0)
 31057  	var flags int32
 31058  	*(*int32)(unsafe.Pointer(bp + 112)) = 1
 31059  
 31060  	var rc int32
 31061  
 31062  	flags = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_NOMUTEX
 31063  
 31064  	if objc == 1 {
 31065  		return sqliteCmdUsage(tls, interp, objv)
 31066  	}
 31067  	if objc == 2 {
 31068  		zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31069  		if libc.Xstrcmp(tls, zArg, ts+14163) == 0 {
 31070  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_libversion(tls), uintptr(0)))
 31071  			return TCL_OK
 31072  		}
 31073  		if libc.Xstrcmp(tls, zArg, ts+14172) == 0 {
 31074  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3_sourceid(tls), uintptr(0)))
 31075  			return TCL_OK
 31076  		}
 31077  		if libc.Xstrcmp(tls, zArg, ts+14182) == 0 {
 31078  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+14193, uintptr(0)))
 31079  			return TCL_OK
 31080  		}
 31081  		if int32(*(*int8)(unsafe.Pointer(zArg))) == '-' {
 31082  			return sqliteCmdUsage(tls, interp, objv)
 31083  		}
 31084  	}
 31085  	for i = 2; i < objc; i++ {
 31086  		zArg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31087  		if int32(*(*int8)(unsafe.Pointer(zArg))) != '-' {
 31088  			if zFile != uintptr(0) {
 31089  				return sqliteCmdUsage(tls, interp, objv)
 31090  			}
 31091  			zFile = zArg
 31092  			continue
 31093  		}
 31094  		if i == objc-1 {
 31095  			return sqliteCmdUsage(tls, interp, objv)
 31096  		}
 31097  		i++
 31098  		if libc.Xstrcmp(tls, zArg, ts+14195) == 0 {
 31099  		} else if libc.Xstrcmp(tls, zArg, ts+14200) == 0 {
 31100  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 31101  		} else if libc.Xstrcmp(tls, zArg, ts+12434) == 0 {
 31102  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0 {
 31103  				return TCL_ERROR
 31104  			}
 31105  			if *(*int32)(unsafe.Pointer(bp + 88)) != 0 {
 31106  				flags = flags & libc.CplInt32(SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE)
 31107  				flags = flags | SQLITE_OPEN_READONLY
 31108  			} else {
 31109  				flags = flags & libc.CplInt32(SQLITE_OPEN_READONLY)
 31110  				flags = flags | SQLITE_OPEN_READWRITE
 31111  			}
 31112  		} else if libc.Xstrcmp(tls, zArg, ts+14205) == 0 {
 31113  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+92) != 0 {
 31114  				return TCL_ERROR
 31115  			}
 31116  			if *(*int32)(unsafe.Pointer(bp + 92)) != 0 && flags&SQLITE_OPEN_READONLY == 0 {
 31117  				flags = flags | SQLITE_OPEN_CREATE
 31118  			} else {
 31119  				flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 31120  			}
 31121  		} else if libc.Xstrcmp(tls, zArg, ts+14213) == 0 {
 31122  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+96) != 0 {
 31123  				return TCL_ERROR
 31124  			}
 31125  			if *(*int32)(unsafe.Pointer(bp + 96)) != 0 {
 31126  				flags = flags | SQLITE_OPEN_NOFOLLOW
 31127  			} else {
 31128  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOFOLLOW)
 31129  			}
 31130  		} else if libc.Xstrcmp(tls, zArg, ts+14223) == 0 {
 31131  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+100) != 0 {
 31132  				return TCL_ERROR
 31133  			}
 31134  			if *(*int32)(unsafe.Pointer(bp + 100)) != 0 {
 31135  				flags = flags | SQLITE_OPEN_NOMUTEX
 31136  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31137  			} else {
 31138  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31139  			}
 31140  		} else if libc.Xstrcmp(tls, zArg, ts+14232) == 0 {
 31141  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+104) != 0 {
 31142  				return TCL_ERROR
 31143  			}
 31144  			if *(*int32)(unsafe.Pointer(bp + 104)) != 0 {
 31145  				flags = flags | SQLITE_OPEN_FULLMUTEX
 31146  				flags = flags & libc.CplInt32(SQLITE_OPEN_NOMUTEX)
 31147  			} else {
 31148  				flags = flags & libc.CplInt32(SQLITE_OPEN_FULLMUTEX)
 31149  			}
 31150  		} else if libc.Xstrcmp(tls, zArg, ts+14243) == 0 {
 31151  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+108) != 0 {
 31152  				return TCL_ERROR
 31153  			}
 31154  			if *(*int32)(unsafe.Pointer(bp + 108)) != 0 {
 31155  				flags = flags | SQLITE_OPEN_URI
 31156  			} else {
 31157  				flags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 31158  			}
 31159  		} else if libc.Xstrcmp(tls, zArg, ts+14248) == 0 {
 31160  			if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+112) != 0 {
 31161  				return TCL_ERROR
 31162  			}
 31163  		} else {
 31164  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+12444, zArg, uintptr(0)))
 31165  			return TCL_ERROR
 31166  		}
 31167  	}
 31168  	zErrMsg = uintptr(0)
 31169  	p = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(SqliteDb{})))
 31170  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(SqliteDb{})))
 31171  	if zFile == uintptr(0) {
 31172  		zFile = ts + 584
 31173  	}
 31174  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31175  		zFile = tcl.XTcl_TranslateFileName(tls, interp, zFile, bp+120)
 31176  	}
 31177  	rc = sqlite3.Xsqlite3_open_v2(tls, zFile, p, flags, zVfs)
 31178  	if *(*int32)(unsafe.Pointer(bp + 112)) != 0 {
 31179  		tcl.XTcl_DStringFree(tls, bp+120)
 31180  	}
 31181  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb != 0 {
 31182  		if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb) {
 31183  			zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+72, sqlite3.Xsqlite3_errmsg(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)))
 31184  			sqlite3.Xsqlite3_close(tls, (*SqliteDb)(unsafe.Pointer(p)).Fdb)
 31185  			(*SqliteDb)(unsafe.Pointer(p)).Fdb = uintptr(0)
 31186  		}
 31187  	} else {
 31188  		zErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+80, sqlite3.Xsqlite3_errstr(tls, rc)))
 31189  	}
 31190  	if (*SqliteDb)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 31191  		tcl.XTcl_SetResult(tls, interp, zErrMsg, uintptr(1))
 31192  		tcl.XTcl_Free(tls, p)
 31193  		sqlite3.Xsqlite3_free(tls, zErrMsg)
 31194  		return TCL_ERROR
 31195  	}
 31196  	(*SqliteDb)(unsafe.Pointer(p)).FmaxStmt = NUM_PREPARED_STMTS
 31197  	(*SqliteDb)(unsafe.Pointer(p)).FopenFlags = flags & SQLITE_OPEN_URI
 31198  	(*SqliteDb)(unsafe.Pointer(p)).Finterp = interp
 31199  	zArg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 31200  	if DbUseNre(tls) != 0 {
 31201  		tcl.XTcl_NRCreateCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31202  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31203  		}{DbObjCmdAdaptor})), *(*uintptr)(unsafe.Pointer(&struct {
 31204  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31205  		}{DbObjCmd})),
 31206  			p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31207  	} else {
 31208  		tcl.XTcl_CreateObjCommand(tls, interp, zArg, *(*uintptr)(unsafe.Pointer(&struct {
 31209  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31210  		}{DbObjCmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{DbDeleteCmd})))
 31211  	}
 31212  	(*SqliteDb)(unsafe.Pointer(p)).FnRef = 1
 31213  	return TCL_OK
 31214  }
 31215  
 31216  func Sqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31217  	var rc int32
 31218  	if 1 != 0 {
 31219  		rc = TCL_OK
 31220  	} else {
 31221  		rc = TCL_ERROR
 31222  	}
 31223  	if rc == TCL_OK {
 31224  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14267, *(*uintptr)(unsafe.Pointer(&struct {
 31225  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31226  		}{DbMain})), uintptr(0), uintptr(0))
 31227  
 31228  		tcl.XTcl_CreateObjCommand(tls, interp, ts+14275, *(*uintptr)(unsafe.Pointer(&struct {
 31229  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 31230  		}{DbMain})), uintptr(0), uintptr(0))
 31231  		rc = tcl.XTcl_PkgProvideEx(tls, interp, ts+14267, ts+14282, uintptr(0))
 31232  	}
 31233  	return rc
 31234  }
 31235  
 31236  func Tclsqlite3_Init(tls *libc.TLS, interp uintptr) int32 {
 31237  	return Sqlite3_Init(tls, interp)
 31238  }
 31239  
 31240  func Sqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31241  	return TCL_OK
 31242  }
 31243  
 31244  func Tclsqlite3_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31245  	return TCL_OK
 31246  }
 31247  
 31248  func Sqlite3_SafeInit(tls *libc.TLS, interp uintptr) int32 {
 31249  	return TCL_ERROR
 31250  }
 31251  
 31252  func Sqlite3_SafeUnload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31253  	return TCL_ERROR
 31254  }
 31255  
 31256  func Sqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31257  	return Sqlite3_Init(tls, interp)
 31258  }
 31259  
 31260  func Tclsqlite_Init(tls *libc.TLS, interp uintptr) int32 {
 31261  	return Sqlite3_Init(tls, interp)
 31262  }
 31263  
 31264  func Sqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31265  	return TCL_OK
 31266  }
 31267  
 31268  func Tclsqlite_Unload(tls *libc.TLS, interp uintptr, flags int32) int32 {
 31269  	return TCL_OK
 31270  }
 31271  
 31272  func tclsh_main_loop(tls *libc.TLS) uintptr {
 31273  	return uintptr(unsafe.Pointer(&zMainloop))
 31274  }
 31275  
 31276  var zMainloop = *(*[431]int8)(unsafe.Pointer(ts + 14289))
 31277  
 31278  func main1(tls *libc.TLS, argc int32, argv uintptr) int32 {
 31279  	bp := tls.Alloc(64)
 31280  	defer tls.Free(64)
 31281  
 31282  	var interp uintptr
 31283  	var i int32
 31284  	var zScript uintptr = uintptr(0)
 31285  
 31286  	if libc.Xgetenv(tls, ts+14720) != 0 {
 31287  		if libc.Xisatty(tls, 0) != 0 && libc.Xisatty(tls, 2) != 0 {
 31288  			libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152,
 31289  				ts+14739,
 31290  				libc.VaList(bp, libc.Xgetpid(tls)))
 31291  			libc.Xfgetc(tls, uintptr(unsafe.Pointer(&libc.X__sF)))
 31292  		} else {
 31293  			libc.Xraise(tls, SIGTRAP)
 31294  		}
 31295  	}
 31296  
 31297  	sqlite3.Xsqlite3_shutdown(tls)
 31298  
 31299  	tcl.XTcl_FindExecutable(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31300  	tcl.XTcl_SetSystemEncoding(tls, uintptr(0), ts+14801)
 31301  	interp = tcl.XTcl_CreateInterp(tls)
 31302  	Sqlite3_Init(tls, interp)
 31303  
 31304  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([32]int8{})), bp+32, ts+1333, libc.VaList(bp+8, argc-1))
 31305  	tcl.XTcl_SetVar2(tls, interp, ts+14807, uintptr(0), bp+32, TCL_GLOBAL_ONLY)
 31306  	tcl.XTcl_SetVar2(tls, interp, ts+14812, uintptr(0), *(*uintptr)(unsafe.Pointer(argv)), TCL_GLOBAL_ONLY)
 31307  	tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), ts+584, TCL_GLOBAL_ONLY)
 31308  	for i = 1; i < argc; i++ {
 31309  		tcl.XTcl_SetVar2(tls, interp, ts+14818, uintptr(0), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), TCL_GLOBAL_ONLY|TCL_LIST_ELEMENT|TCL_APPEND_VALUE)
 31310  	}
 31311  	zScript = sqlite3TestInit(tls, interp)
 31312  	if zScript == uintptr(0) {
 31313  		zScript = tclsh_main_loop(tls)
 31314  	}
 31315  	if tcl.XTcl_GlobalEval(tls, interp, zScript) != TCL_OK {
 31316  		var zInfo uintptr = tcl.XTcl_GetVar2(tls, interp, ts+14823, uintptr(0), TCL_GLOBAL_ONLY)
 31317  		if zInfo == uintptr(0) {
 31318  			zInfo = tcl.XTcl_GetStringResult(tls, interp)
 31319  		}
 31320  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+14833, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv)), zInfo))
 31321  		return 1
 31322  	}
 31323  	return 0
 31324  }
 31325  
 31326  type sqlite3_value = sqlite3_value1
 31327  
 31328  type sqlite3_context = sqlite3_context1
 31329  type PreUpdate = PreUpdate1
 31330  
 31331  type Vdbe = Vdbe1
 31332  
 31333  type Mem = sqlite3_value1
 31334  
 31335  type Op = VdbeOp1
 31336  
 31337  type Bool = uint32
 31338  
 31339  type AuxData1 = struct {
 31340  	FiAuxOp     int32
 31341  	FiAuxArg    int32
 31342  	FpAux       uintptr
 31343  	FxDeleteAux uintptr
 31344  	FpNextAux   uintptr
 31345  }
 31346  
 31347  type AuxData = AuxData1
 31348  
 31349  type VdbeCursor1 = struct {
 31350  	FeCurType       u8
 31351  	FiDb            i8
 31352  	FnullRow        u8
 31353  	FdeferredMoveto u8
 31354  	FisTable        u8
 31355  	F__ccgo_pad1    [3]byte
 31356  	FisEphemeral    uint8
 31357  	F__ccgo_pad2    [1]byte
 31358  	FseekHit        u16
 31359  	F__ccgo_pad3    [4]byte
 31360  	Fub             struct{ FpBtx uintptr }
 31361  	FseqCount       i64
 31362  	FcacheStatus    u32
 31363  	FseekResult     int32
 31364  	FpAltCursor     uintptr
 31365  	Fuc             struct{ FpCursor uintptr }
 31366  	FpKeyInfo       uintptr
 31367  	FiHdrOffset     u32
 31368  	FpgnoRoot       Pgno
 31369  	FnField         i16
 31370  	FnHdrParsed     u16
 31371  	F__ccgo_pad4    [4]byte
 31372  	FmovetoTarget   i64
 31373  	FaOffset        uintptr
 31374  	FaRow           uintptr
 31375  	FpayloadSize    u32
 31376  	FszRow          u32
 31377  	FaType          [1]u32
 31378  	F__ccgo_pad5    [4]byte
 31379  }
 31380  
 31381  type VdbeCursor = VdbeCursor1
 31382  
 31383  type VdbeFrame1 = struct {
 31384  	Fv         uintptr
 31385  	FpParent   uintptr
 31386  	FaOp       uintptr
 31387  	FanExec    uintptr
 31388  	FaMem      uintptr
 31389  	FapCsr     uintptr
 31390  	FaOnce     uintptr
 31391  	Ftoken     uintptr
 31392  	FlastRowid i64
 31393  	FpAuxData  uintptr
 31394  	FnCursor   int32
 31395  	Fpc        int32
 31396  	FnOp       int32
 31397  	FnMem      int32
 31398  	FnChildMem int32
 31399  	FnChildCsr int32
 31400  	FnChange   i64
 31401  	FnDbChange i64
 31402  }
 31403  
 31404  type VdbeFrame = VdbeFrame1
 31405  
 31406  type MemValue = struct{ Fr float64 }
 31407  
 31408  type bft = uint32
 31409  
 31410  type ScanStatus1 = struct {
 31411  	FaddrExplain int32
 31412  	FaddrLoop    int32
 31413  	FaddrVisit   int32
 31414  	FiSelectID   int32
 31415  	FnEst        LogEst
 31416  	F__ccgo_pad1 [6]byte
 31417  	FzName       uintptr
 31418  }
 31419  
 31420  type ScanStatus = ScanStatus1
 31421  
 31422  type DblquoteStr1 = struct {
 31423  	FpNextStr uintptr
 31424  	Fz        [8]int8
 31425  }
 31426  
 31427  type DblquoteStr = DblquoteStr1
 31428  
 31429  type ValueList1 = struct {
 31430  	FpCsr uintptr
 31431  	FpOut uintptr
 31432  }
 31433  
 31434  type ValueList = ValueList1
 31435  
 31436  func testHexToInt(tls *libc.TLS, h int32) int32 {
 31437  	if h >= '0' && h <= '9' {
 31438  		return h - '0'
 31439  	} else if h >= 'a' && h <= 'f' {
 31440  		return h - 'a' + 10
 31441  	} else {
 31442  		return h - 'A' + 10
 31443  	}
 31444  	return int32(0)
 31445  }
 31446  
 31447  func sqlite3TestTextToPtr(tls *libc.TLS, z uintptr) uintptr {
 31448  	bp := tls.Alloc(20)
 31449  	defer tls.Free(20)
 31450  
 31451  	if int32(*(*int8)(unsafe.Pointer(z))) == '0' && int32(*(*int8)(unsafe.Pointer(z + 1))) == 'x' {
 31452  		z += uintptr(2)
 31453  	}
 31454  	*(*u64)(unsafe.Pointer(bp + 8)) = uint64(0)
 31455  	for *(*int8)(unsafe.Pointer(z)) != 0 {
 31456  		*(*u64)(unsafe.Pointer(bp + 8)) = *(*u64)(unsafe.Pointer(bp + 8))<<4 + u64(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(z)))))
 31457  		z++
 31458  	}
 31459  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(u64(0))) {
 31460  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 31461  	} else {
 31462  		*(*u32)(unsafe.Pointer(bp + 16)) = u32(*(*u64)(unsafe.Pointer(bp + 8)))
 31463  		libc.Xmemcpy(tls, bp, bp+16, uint64(unsafe.Sizeof(uintptr(0))))
 31464  	}
 31465  	return *(*uintptr)(unsafe.Pointer(bp))
 31466  }
 31467  
 31468  func get_sqlite_pointer(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 31469  	bp := tls.Alloc(212)
 31470  	defer tls.Free(212)
 31471  
 31472  	var p uintptr
 31473  
 31474  	if objc != 2 {
 31475  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+14841)
 31476  		return TCL_ERROR
 31477  	}
 31478  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 31479  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 31480  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 31481  		return TCL_ERROR
 31482  	}
 31483  	p = (*Tcl_CmdInfo)(unsafe.Pointer(bp + 48)).FobjClientData
 31484  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+112, ts+9889, libc.VaList(bp+24, (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb))
 31485  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+112, 0))
 31486  	return TCL_OK
 31487  }
 31488  
 31489  func getDbPointer(tls *libc.TLS, interp uintptr, zA uintptr, ppDb uintptr) int32 {
 31490  	bp := tls.Alloc(64)
 31491  	defer tls.Free(64)
 31492  
 31493  	var p uintptr
 31494  
 31495  	if tcl.XTcl_GetCommandInfo(tls, interp, zA, bp) != 0 {
 31496  		p = (*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData
 31497  		*(*uintptr)(unsafe.Pointer(ppDb)) = (*struct{ Fdb uintptr })(unsafe.Pointer(p)).Fdb
 31498  	} else {
 31499  		*(*uintptr)(unsafe.Pointer(ppDb)) = sqlite3TestTextToPtr(tls, zA)
 31500  	}
 31501  	return TCL_OK
 31502  }
 31503  
 31504  func sqlite3TestErrCode(tls *libc.TLS, interp uintptr, db uintptr, rc int32) int32 {
 31505  	bp := tls.Alloc(248)
 31506  	defer tls.Free(248)
 31507  
 31508  	if sqlite3.Xsqlite3_threadsafe(tls) == 0 && rc != SQLITE_MISUSE && rc != SQLITE_OK &&
 31509  		sqlite3.Xsqlite3_errcode(tls, db) != rc {
 31510  		var r2 int32 = sqlite3.Xsqlite3_errcode(tls, db)
 31511  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+48,
 31512  			ts+14879,
 31513  			libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), rc, sqlite3.Xsqlite3ErrName(tls, r2), r2))
 31514  		tcl.XTcl_ResetResult(tls, interp)
 31515  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 31516  		return 1
 31517  	}
 31518  	return 0
 31519  }
 31520  
 31521  func getStmtPointer(tls *libc.TLS, interp uintptr, zArg uintptr, ppStmt uintptr) int32 {
 31522  	*(*uintptr)(unsafe.Pointer(ppStmt)) = sqlite3TestTextToPtr(tls, zArg)
 31523  	return TCL_OK
 31524  }
 31525  
 31526  func sqlite3TestMakePointerStr(tls *libc.TLS, interp uintptr, zPtr uintptr, p uintptr) int32 {
 31527  	bp := tls.Alloc(8)
 31528  	defer tls.Free(8)
 31529  
 31530  	sqlite3.Xsqlite3_snprintf(tls, 100, zPtr, ts+9889, libc.VaList(bp, p))
 31531  	return TCL_OK
 31532  }
 31533  
 31534  func exec_printf_cb(tls *libc.TLS, pArg uintptr, argc int32, argv uintptr, name uintptr) int32 {
 31535  	var str uintptr = pArg
 31536  	var i int32
 31537  
 31538  	if (*Tcl_DString)(unsafe.Pointer(str)).Flength == 0 {
 31539  		for i = 0; i < argc; i++ {
 31540  			tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 31541  				if *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8)) != 0 {
 31542  					return *(*uintptr)(unsafe.Pointer(name + uintptr(i)*8))
 31543  				}
 31544  				return ts + 5846
 31545  			}())
 31546  		}
 31547  	}
 31548  	for i = 0; i < argc; i++ {
 31549  		tcl.XTcl_DStringAppendElement(tls, str, func() uintptr {
 31550  			if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) != 0 {
 31551  				return *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))
 31552  			}
 31553  			return ts + 5846
 31554  		}())
 31555  	}
 31556  	return 0
 31557  }
 31558  
 31559  func test_io_trace(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31560  	return TCL_OK
 31561  }
 31562  
 31563  func clang_sanitize_address(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31564  	var res int32 = 0
 31565  	if res == 0 && libc.Xgetenv(tls, ts+14937) != uintptr(0) {
 31566  		res = 1
 31567  	}
 31568  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 31569  	return TCL_OK
 31570  }
 31571  
 31572  func test_exec_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31573  	bp := tls.Alloc(310)
 31574  	defer tls.Free(310)
 31575  
 31576  	var rc int32
 31577  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 31578  	var zSql uintptr
 31579  
 31580  	if argc != 4 {
 31581  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31582  			ts+14975, 0))
 31583  		return TCL_ERROR
 31584  	}
 31585  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 31586  		return TCL_ERROR
 31587  	}
 31588  	tcl.XTcl_DStringInit(tls, bp+56)
 31589  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 31590  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 31591  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31592  	}{exec_printf_cb})), bp+56, bp+272)
 31593  	sqlite3.Xsqlite3_free(tls, zSql)
 31594  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 31595  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 31596  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31597  		if rc == SQLITE_OK {
 31598  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 31599  		}
 31600  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 31601  	}())
 31602  	tcl.XTcl_DStringFree(tls, bp+56)
 31603  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 31604  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 31605  	}
 31606  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 31607  		return TCL_ERROR
 31608  	}
 31609  	return TCL_OK
 31610  }
 31611  
 31612  func test_exec_hex(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31613  	bp := tls.Alloc(806)
 31614  	defer tls.Free(806)
 31615  
 31616  	var rc int32
 31617  	var i int32
 31618  	var j int32
 31619  	*(*uintptr)(unsafe.Pointer(bp + 768)) = uintptr(0)
 31620  	var zHex uintptr
 31621  
 31622  	if argc != 3 {
 31623  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31624  			ts+14993, 0))
 31625  		return TCL_ERROR
 31626  	}
 31627  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 31628  		return TCL_ERROR
 31629  	}
 31630  	zHex = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 31631  	i = libc.AssignInt32(&j, 0)
 31632  __1:
 31633  	if !(uint64(i) < uint64(unsafe.Sizeof([501]int8{}))-uint64(1) && *(*int8)(unsafe.Pointer(zHex + uintptr(j))) != 0) {
 31634  		goto __3
 31635  	}
 31636  	{
 31637  		if int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j)))) == '%' && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 && *(*int8)(unsafe.Pointer(zHex + uintptr(j+2))) != 0 {
 31638  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+1)))))<<4 + testHexToInt(tls, int32(*(*int8)(unsafe.Pointer(zHex + uintptr(j+2))))))
 31639  			j = j + 2
 31640  		} else {
 31641  			*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = *(*int8)(unsafe.Pointer(zHex + uintptr(j)))
 31642  		}
 31643  
 31644  	}
 31645  	goto __2
 31646  __2:
 31647  	i++
 31648  	j++
 31649  	goto __1
 31650  	goto __3
 31651  __3:
 31652  	;
 31653  	*(*int8)(unsafe.Pointer(bp + 48 + uintptr(i))) = int8(0)
 31654  	tcl.XTcl_DStringInit(tls, bp+552)
 31655  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), bp+48, *(*uintptr)(unsafe.Pointer(&struct {
 31656  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31657  	}{exec_printf_cb})), bp+552, bp+768)
 31658  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+776, ts+1333, libc.VaList(bp+32, rc))
 31659  	tcl.XTcl_AppendElement(tls, interp, bp+776)
 31660  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31661  		if rc == SQLITE_OK {
 31662  			return (*Tcl_DString)(unsafe.Pointer(bp + 552)).Fstring
 31663  		}
 31664  		return *(*uintptr)(unsafe.Pointer(bp + 768))
 31665  	}())
 31666  	tcl.XTcl_DStringFree(tls, bp+552)
 31667  	if *(*uintptr)(unsafe.Pointer(bp + 768)) != 0 {
 31668  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 768)))
 31669  	}
 31670  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 40)), rc) != 0 {
 31671  		return TCL_ERROR
 31672  	}
 31673  	return TCL_OK
 31674  }
 31675  
 31676  func db_enter(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31677  	bp := tls.Alloc(40)
 31678  	defer tls.Free(40)
 31679  
 31680  	if argc != 2 {
 31681  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31682  			ts+15001, 0))
 31683  		return TCL_ERROR
 31684  	}
 31685  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31686  		return TCL_ERROR
 31687  	}
 31688  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 31689  	return TCL_OK
 31690  }
 31691  
 31692  func db_leave(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31693  	bp := tls.Alloc(40)
 31694  	defer tls.Free(40)
 31695  
 31696  	if argc != 2 {
 31697  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31698  			ts+15001, 0))
 31699  		return TCL_ERROR
 31700  	}
 31701  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31702  		return TCL_ERROR
 31703  	}
 31704  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 31705  	return TCL_OK
 31706  }
 31707  
 31708  func test_exec(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31709  	bp := tls.Alloc(310)
 31710  	defer tls.Free(310)
 31711  
 31712  	var rc int32
 31713  	*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 31714  	var zSql uintptr
 31715  	var i int32
 31716  	var j int32
 31717  
 31718  	if argc != 3 {
 31719  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31720  			ts+15005, 0))
 31721  		return TCL_ERROR
 31722  	}
 31723  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 31724  		return TCL_ERROR
 31725  	}
 31726  	tcl.XTcl_DStringInit(tls, bp+56)
 31727  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 31728  	for i = libc.AssignInt32(&j, 0); *(*int8)(unsafe.Pointer(zSql + uintptr(i))) != 0; {
 31729  		if int32(*(*int8)(unsafe.Pointer(zSql + uintptr(i)))) == '%' {
 31730  			*(*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))))))
 31731  			i = i + 3
 31732  		} else {
 31733  			*(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(zSql + uintptr(libc.PostIncInt32(&i, 1))))
 31734  		}
 31735  	}
 31736  	*(*int8)(unsafe.Pointer(zSql + uintptr(j))) = int8(0)
 31737  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*uintptr)(unsafe.Pointer(&struct {
 31738  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 31739  	}{exec_printf_cb})), bp+56, bp+272)
 31740  	sqlite3.Xsqlite3_free(tls, zSql)
 31741  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+280, ts+1333, libc.VaList(bp+40, rc))
 31742  	tcl.XTcl_AppendElement(tls, interp, bp+280)
 31743  	tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31744  		if rc == SQLITE_OK {
 31745  			return (*Tcl_DString)(unsafe.Pointer(bp + 56)).Fstring
 31746  		}
 31747  		return *(*uintptr)(unsafe.Pointer(bp + 272))
 31748  	}())
 31749  	tcl.XTcl_DStringFree(tls, bp+56)
 31750  	if *(*uintptr)(unsafe.Pointer(bp + 272)) != 0 {
 31751  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 272)))
 31752  	}
 31753  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 31754  		return TCL_ERROR
 31755  	}
 31756  	return TCL_OK
 31757  }
 31758  
 31759  func test_exec_nr(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31760  	bp := tls.Alloc(48)
 31761  	defer tls.Free(48)
 31762  
 31763  	var rc int32
 31764  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 31765  	if argc != 3 {
 31766  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31767  			ts+15005, 0))
 31768  		return TCL_ERROR
 31769  	}
 31770  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31771  		return TCL_ERROR
 31772  	}
 31773  	rc = sqlite3.Xsqlite3_exec(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), uintptr(0), uintptr(0), bp+40)
 31774  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 31775  		return TCL_ERROR
 31776  	}
 31777  	return TCL_OK
 31778  }
 31779  
 31780  func test_mprintf_z(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31781  	bp := tls.Alloc(40)
 31782  	defer tls.Free(40)
 31783  
 31784  	var zResult uintptr = uintptr(0)
 31785  	var i int32
 31786  
 31787  	for i = 2; i < argc && (i == 2 || zResult != 0); i++ {
 31788  		zResult = sqlite3.Xsqlite3_mprintf(tls, ts+15013, libc.VaList(bp, zResult, *(*uintptr)(unsafe.Pointer(argv + 1*8)), *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 31789  	}
 31790  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zResult, 0))
 31791  	sqlite3.Xsqlite3_free(tls, zResult)
 31792  	return TCL_OK
 31793  }
 31794  
 31795  func test_mprintf_n(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31796  	bp := tls.Alloc(20)
 31797  	defer tls.Free(20)
 31798  
 31799  	var zStr uintptr
 31800  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 31801  	zStr = sqlite3.Xsqlite3_mprintf(tls, ts+15020, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+16))
 31802  	sqlite3.Xsqlite3_free(tls, zStr)
 31803  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 31804  	return TCL_OK
 31805  }
 31806  
 31807  func test_snprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31808  	bp := tls.Alloc(124)
 31809  	defer tls.Free(124)
 31810  
 31811  	var n int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 31812  	var zFormat uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 31813  	var a1 int32 = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 31814  	if uint64(n) > uint64(unsafe.Sizeof([100]int8{})) {
 31815  		n = int32(unsafe.Sizeof([100]int8{}))
 31816  	}
 31817  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+15025, 0)
 31818  	sqlite3.Xsqlite3_snprintf(tls, n, bp+24, zFormat, libc.VaList(bp, a1))
 31819  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, 0))
 31820  	return TCL_OK
 31821  }
 31822  
 31823  func test_get_table_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31824  	bp := tls.Alloc(350)
 31825  	defer tls.Free(350)
 31826  
 31827  	var rc int32
 31828  	*(*uintptr)(unsafe.Pointer(bp + 304)) = uintptr(0)
 31829  	*(*int32)(unsafe.Pointer(bp + 312)) = 0
 31830  	*(*int32)(unsafe.Pointer(bp + 316)) = 0
 31831  
 31832  	var i int32
 31833  
 31834  	var zSql uintptr
 31835  	*(*int32)(unsafe.Pointer(bp + 64)) = -1
 31836  	if argc == 5 {
 31837  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+64) != 0 {
 31838  			return TCL_ERROR
 31839  		}
 31840  	}
 31841  	if argc != 4 && argc != 5 {
 31842  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31843  			ts+15052, 0))
 31844  		return TCL_ERROR
 31845  	}
 31846  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) != 0 {
 31847  		return TCL_ERROR
 31848  	}
 31849  	tcl.XTcl_DStringInit(tls, bp+80)
 31850  	zSql = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 31851  	if argc == 5 {
 31852  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, uintptr(0), uintptr(0), bp+304)
 31853  	} else {
 31854  		rc = sqlite3.Xsqlite3_get_table(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), zSql, bp+296, bp+312, bp+316, bp+304)
 31855  		*(*int32)(unsafe.Pointer(bp + 64)) = (*(*int32)(unsafe.Pointer(bp + 312)) + 1) * *(*int32)(unsafe.Pointer(bp + 316))
 31856  	}
 31857  	sqlite3.Xsqlite3_free(tls, zSql)
 31858  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+40, rc))
 31859  	tcl.XTcl_AppendElement(tls, interp, bp+320)
 31860  	if rc == SQLITE_OK {
 31861  		if argc == 4 {
 31862  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 312))))
 31863  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 31864  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+320, ts+1333, libc.VaList(bp+56, *(*int32)(unsafe.Pointer(bp + 316))))
 31865  			tcl.XTcl_AppendElement(tls, interp, bp+320)
 31866  		}
 31867  		for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 31868  			tcl.XTcl_AppendElement(tls, interp, func() uintptr {
 31869  				if *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8)) != 0 {
 31870  					return *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(i)*8))
 31871  				}
 31872  				return ts + 5846
 31873  			}())
 31874  		}
 31875  	} else {
 31876  		tcl.XTcl_AppendElement(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 304)))
 31877  	}
 31878  	sqlite3.Xsqlite3_free_table(tls, *(*uintptr)(unsafe.Pointer(bp + 296)))
 31879  	if *(*uintptr)(unsafe.Pointer(bp + 304)) != 0 {
 31880  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 304)))
 31881  	}
 31882  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 72)), rc) != 0 {
 31883  		return TCL_ERROR
 31884  	}
 31885  	return TCL_OK
 31886  }
 31887  
 31888  func test_last_rowid(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31889  	bp := tls.Alloc(94)
 31890  	defer tls.Free(94)
 31891  
 31892  	if argc != 2 {
 31893  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15078, 0))
 31894  		return TCL_ERROR
 31895  	}
 31896  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 31897  		return TCL_ERROR
 31898  	}
 31899  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+64, ts+6325, libc.VaList(bp+32, sqlite3.Xsqlite3_last_insert_rowid(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 31900  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 31901  	return SQLITE_OK
 31902  }
 31903  
 31904  func test_key(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31905  	return TCL_OK
 31906  }
 31907  
 31908  func test_rekey(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31909  	return TCL_OK
 31910  }
 31911  
 31912  func sqlite_test_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31913  	bp := tls.Alloc(40)
 31914  	defer tls.Free(40)
 31915  
 31916  	var rc int32
 31917  	if argc != 2 {
 31918  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31919  			ts+15083, 0))
 31920  		return TCL_ERROR
 31921  	}
 31922  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31923  		return TCL_ERROR
 31924  	}
 31925  	rc = sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 31926  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 31927  	return TCL_OK
 31928  }
 31929  
 31930  func sqlite_test_close_v2(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 31931  	bp := tls.Alloc(40)
 31932  	defer tls.Free(40)
 31933  
 31934  	var rc int32
 31935  	if argc != 2 {
 31936  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 31937  			ts+15083, 0))
 31938  		return TCL_ERROR
 31939  	}
 31940  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 31941  		return TCL_ERROR
 31942  	}
 31943  	rc = sqlite3.Xsqlite3_close_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 31944  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 31945  	return TCL_OK
 31946  }
 31947  
 31948  func t1_ifnullFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 31949  	var i int32
 31950  	for i = 0; i < argc; i++ {
 31951  		if SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) {
 31952  			var n int32 = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 31953  			sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))),
 31954  				n, libc.UintptrFromInt32(-1))
 31955  			break
 31956  		}
 31957  	}
 31958  }
 31959  
 31960  func hex8Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 31961  	bp := tls.Alloc(208)
 31962  	defer tls.Free(208)
 31963  
 31964  	var z uintptr
 31965  	var i int32
 31966  
 31967  	z = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31968  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([200]int8{}))/uint64(2)-uint64(2) && *(*uint8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 31969  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([200]int8{}))-uint64(i*2)), bp+8+uintptr(i*2), ts+6337, libc.VaList(bp, int32(*(*uint8)(unsafe.Pointer(z + uintptr(i))))))
 31970  	}
 31971  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = int8(0)
 31972  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 31973  }
 31974  
 31975  func hex16Func(tls *libc.TLS, p uintptr, argc int32, argv uintptr) {
 31976  	bp := tls.Alloc(408)
 31977  	defer tls.Free(408)
 31978  
 31979  	var z uintptr
 31980  	var i int32
 31981  
 31982  	z = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 31983  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([400]int8{}))/uint64(4)-uint64(4) && *(*uint16)(unsafe.Pointer(z + uintptr(i)*2)) != 0; i++ {
 31984  		sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof([400]int8{}))-uint64(i*4)), bp+8+uintptr(i*4), ts+15094, libc.VaList(bp, int32(*(*uint16)(unsafe.Pointer(z + uintptr(i)*2)))&0xff))
 31985  	}
 31986  	*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*4))) = int8(0)
 31987  	sqlite3.Xsqlite3_result_text(tls, p, bp+8, -1, libc.UintptrFromInt32(-1))
 31988  }
 31989  
 31990  type dstr = struct {
 31991  	FnAlloc int32
 31992  	FnUsed  int32
 31993  	Fz      uintptr
 31994  }
 31995  
 31996  func dstrAppend(tls *libc.TLS, p uintptr, z uintptr, divider int32) {
 31997  	var n int32 = int32(libc.Xstrlen(tls, z))
 31998  	if (*dstr)(unsafe.Pointer(p)).FnUsed+n+2 > (*dstr)(unsafe.Pointer(p)).FnAlloc {
 31999  		var zNew uintptr
 32000  		(*dstr)(unsafe.Pointer(p)).FnAlloc = (*dstr)(unsafe.Pointer(p)).FnAlloc*2 + n + 200
 32001  		zNew = sqlite3.Xsqlite3_realloc(tls, (*dstr)(unsafe.Pointer(p)).Fz, (*dstr)(unsafe.Pointer(p)).FnAlloc)
 32002  		if zNew == uintptr(0) {
 32003  			sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(p)).Fz)
 32004  			libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(dstr{})))
 32005  			return
 32006  		}
 32007  		(*dstr)(unsafe.Pointer(p)).Fz = zNew
 32008  	}
 32009  	if divider != 0 && (*dstr)(unsafe.Pointer(p)).FnUsed > 0 {
 32010  		*(*int8)(unsafe.Pointer((*dstr)(unsafe.Pointer(p)).Fz + uintptr(libc.PostIncInt32(&(*dstr)(unsafe.Pointer(p)).FnUsed, 1)))) = int8(divider)
 32011  	}
 32012  	libc.Xmemcpy(tls, (*dstr)(unsafe.Pointer(p)).Fz+uintptr((*dstr)(unsafe.Pointer(p)).FnUsed), z, uint64(n+1))
 32013  	*(*int32)(unsafe.Pointer(p + 4)) += n
 32014  }
 32015  
 32016  func execFuncCallback(tls *libc.TLS, pData uintptr, argc int32, argv uintptr, NotUsed uintptr) int32 {
 32017  	var p uintptr = pData
 32018  	var i int32
 32019  	for i = 0; i < argc; i++ {
 32020  		if *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)) == uintptr(0) {
 32021  			dstrAppend(tls, p, ts+5846, ' ')
 32022  		} else {
 32023  			dstrAppend(tls, p, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), ' ')
 32024  		}
 32025  	}
 32026  	return 0
 32027  }
 32028  
 32029  func sqlite3ExecFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32030  	bp := tls.Alloc(16)
 32031  	defer tls.Free(16)
 32032  
 32033  	libc.Xmemset(tls, bp, 0, uint64(unsafe.Sizeof(dstr{})))
 32034  	sqlite3.Xsqlite3_exec(tls, sqlite3.Xsqlite3_user_data(tls, context),
 32035  		sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))),
 32036  		*(*uintptr)(unsafe.Pointer(&struct {
 32037  			f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 32038  		}{execFuncCallback})), bp, uintptr(0))
 32039  	sqlite3.Xsqlite3_result_text(tls, context, (*dstr)(unsafe.Pointer(bp)).Fz, (*dstr)(unsafe.Pointer(bp)).FnUsed, libc.UintptrFromInt32(-1))
 32040  	sqlite3.Xsqlite3_free(tls, (*dstr)(unsafe.Pointer(bp)).Fz)
 32041  }
 32042  
 32043  func tkt2213Function(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32044  	var nText int32
 32045  	var zText1 uintptr
 32046  	var zText2 uintptr
 32047  	var zText3 uintptr
 32048  
 32049  	nText = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32050  	zText1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32051  	zText2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32052  	zText3 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32053  
 32054  	if zText1 != zText2 || zText2 != zText3 {
 32055  		sqlite3.Xsqlite3_result_error(tls, context, ts+15099, -1)
 32056  	} else {
 32057  		var zCopy uintptr = sqlite3.Xsqlite3_malloc(tls, nText)
 32058  		libc.Xmemcpy(tls, zCopy, zText1, uint64(nText))
 32059  		sqlite3.Xsqlite3_result_text(tls, context, zCopy, nText, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 32060  	}
 32061  }
 32062  
 32063  func ptrChngFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32064  	var p1 uintptr
 32065  	var p2 uintptr
 32066  	var zCmd uintptr
 32067  	if argc != 4 {
 32068  		return
 32069  	}
 32070  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 32071  	if zCmd == uintptr(0) {
 32072  		return
 32073  	}
 32074  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32075  		p1 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32076  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32077  		p1 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32078  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32079  		p1 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32080  	} else {
 32081  		return
 32082  	}
 32083  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 32084  	if zCmd == uintptr(0) {
 32085  		return
 32086  	}
 32087  	if libc.Xstrcmp(tls, zCmd, ts+15127) == 0 {
 32088  		sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32089  	} else if libc.Xstrcmp(tls, zCmd, ts+15133) == 0 {
 32090  		sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32091  	} else if libc.Xstrcmp(tls, zCmd, ts+15141) == 0 {
 32092  	} else {
 32093  		return
 32094  	}
 32095  	zCmd = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 32096  	if zCmd == uintptr(0) {
 32097  		return
 32098  	}
 32099  	if libc.Xstrcmp(tls, zCmd, ts+12764) == 0 {
 32100  		p2 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32101  	} else if libc.Xstrcmp(tls, zCmd, ts+15120) == 0 {
 32102  		p2 = sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32103  	} else if libc.Xstrcmp(tls, zCmd, ts+12769) == 0 {
 32104  		p2 = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32105  	} else {
 32106  		return
 32107  	}
 32108  	sqlite3.Xsqlite3_result_int(tls, context, libc.Bool32(p1 != p2))
 32109  }
 32110  
 32111  func nondeterministicFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32112  	sqlite3.Xsqlite3_result_int(tls, context, libc.PostIncInt32(&cnt, 1))
 32113  }
 32114  
 32115  var cnt int32 = 0
 32116  
 32117  func intrealFunction(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32118  	bp := tls.Alloc(8)
 32119  	defer tls.Free(8)
 32120  
 32121  	var v sqlite3_int64 = sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32122  	sqlite3.Xsqlite3_result_int64(tls, context, v)
 32123  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_RESULT_INTREAL, libc.VaList(bp, context))
 32124  }
 32125  
 32126  func test_create_function(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32127  	bp := tls.Alloc(40)
 32128  	defer tls.Free(40)
 32129  
 32130  	var rc int32
 32131  
 32132  	if argc != 2 {
 32133  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32134  			ts+15078, 0))
 32135  		return TCL_ERROR
 32136  	}
 32137  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32138  		return TCL_ERROR
 32139  	}
 32140  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15146, -1, SQLITE_UTF8, uintptr(0),
 32141  		*(*uintptr)(unsafe.Pointer(&struct {
 32142  			f func(*libc.TLS, uintptr, int32, uintptr)
 32143  		}{t1_ifnullFunc})), uintptr(0), uintptr(0))
 32144  	if rc == SQLITE_OK {
 32145  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15157, 1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32146  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32147  				f func(*libc.TLS, uintptr, int32, uintptr)
 32148  			}{hex8Func})), uintptr(0), uintptr(0))
 32149  	}
 32150  	if rc == SQLITE_OK {
 32151  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15162, 1, SQLITE_UTF16|SQLITE_DETERMINISTIC,
 32152  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32153  				f func(*libc.TLS, uintptr, int32, uintptr)
 32154  			}{hex16Func})), uintptr(0), uintptr(0))
 32155  	}
 32156  	if rc == SQLITE_OK {
 32157  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15168, 1, SQLITE_ANY, uintptr(0),
 32158  			*(*uintptr)(unsafe.Pointer(&struct {
 32159  				f func(*libc.TLS, uintptr, int32, uintptr)
 32160  			}{tkt2213Function})), uintptr(0), uintptr(0))
 32161  	}
 32162  	if rc == SQLITE_OK {
 32163  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15180, 4, SQLITE_ANY, uintptr(0),
 32164  			*(*uintptr)(unsafe.Pointer(&struct {
 32165  				f func(*libc.TLS, uintptr, int32, uintptr)
 32166  			}{ptrChngFunction})), uintptr(0), uintptr(0))
 32167  	}
 32168  
 32169  	if rc == SQLITE_OK {
 32170  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15195, -1, SQLITE_UTF8,
 32171  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32172  				f func(*libc.TLS, uintptr, int32, uintptr)
 32173  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32174  	}
 32175  	if rc == SQLITE_OK {
 32176  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15204, -1, SQLITE_UTF8|SQLITE_DETERMINISTIC,
 32177  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32178  				f func(*libc.TLS, uintptr, int32, uintptr)
 32179  			}{nondeterministicFunction})), uintptr(0), uintptr(0))
 32180  	}
 32181  
 32182  	if rc == SQLITE_OK {
 32183  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15213, 1, SQLITE_UTF8,
 32184  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 32185  				f func(*libc.TLS, uintptr, int32, uintptr)
 32186  			}{intrealFunction})), uintptr(0), uintptr(0))
 32187  	}
 32188  
 32189  	if rc == SQLITE_OK {
 32190  		var zUtf16 uintptr
 32191  		var pVal uintptr
 32192  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32193  		pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 32194  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+15221, uint8(SQLITE_UTF8), uintptr(0))
 32195  		zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 32196  		if (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FmallocFailed != 0 {
 32197  			rc = SQLITE_NOMEM
 32198  		} else {
 32199  			rc = sqlite3.Xsqlite3_create_function16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zUtf16,
 32200  				1, SQLITE_UTF16, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct {
 32201  					f func(*libc.TLS, uintptr, int32, uintptr)
 32202  				}{sqlite3ExecFunc})), uintptr(0), uintptr(0))
 32203  		}
 32204  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 32205  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 32206  	}
 32207  
 32208  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32209  		return TCL_ERROR
 32210  	}
 32211  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32212  	return TCL_OK
 32213  }
 32214  
 32215  func test_drop_modules(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32216  	bp := tls.Alloc(40)
 32217  	defer tls.Free(40)
 32218  
 32219  	if argc < 2 {
 32220  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32221  			ts+15078, 0))
 32222  		return TCL_ERROR
 32223  	}
 32224  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32225  		return TCL_ERROR
 32226  	}
 32227  	sqlite3.Xsqlite3_drop_modules(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), func() uintptr {
 32228  		if argc > 2 {
 32229  			return argv + uintptr(2)*8
 32230  		}
 32231  		return uintptr(0)
 32232  	}())
 32233  	return TCL_OK
 32234  }
 32235  
 32236  type t1CountCtx1 = struct{ Fn int32 }
 32237  
 32238  type t1CountCtx = t1CountCtx1
 32239  
 32240  func t1CountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32241  	bp := tls.Alloc(9)
 32242  	defer tls.Free(9)
 32243  
 32244  	var p uintptr
 32245  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32246  	if (argc == 0 || SQLITE_NULL != sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv)))) && p != 0 {
 32247  		(*t1CountCtx)(unsafe.Pointer(p)).Fn++
 32248  	}
 32249  	if argc > 0 {
 32250  		var v int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 32251  		if v == 40 {
 32252  			sqlite3.Xsqlite3_result_error(tls, context, ts+15235, -1)
 32253  		} else if v == 41 {
 32254  			*(*[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)}
 32255  			sqlite3.Xsqlite3_result_error16(tls, context, bp+1, -1)
 32256  		}
 32257  	}
 32258  }
 32259  
 32260  func t1CountFinalize(tls *libc.TLS, context uintptr) {
 32261  	var p uintptr
 32262  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(t1CountCtx{})))
 32263  	if p != 0 {
 32264  		if (*t1CountCtx)(unsafe.Pointer(p)).Fn == 42 {
 32265  			sqlite3.Xsqlite3_result_error(tls, context, ts+15265, -1)
 32266  		} else {
 32267  			sqlite3.Xsqlite3_result_int(tls, context, func() int32 {
 32268  				if p != 0 {
 32269  					return (*t1CountCtx)(unsafe.Pointer(p)).Fn
 32270  				}
 32271  				return 0
 32272  			}())
 32273  		}
 32274  	}
 32275  }
 32276  
 32277  func legacyCountStep(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 32278  }
 32279  
 32280  func legacyCountFinalize(tls *libc.TLS, context uintptr) {
 32281  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_aggregate_count(tls, context))
 32282  }
 32283  
 32284  func test_create_aggregate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32285  	bp := tls.Alloc(40)
 32286  	defer tls.Free(40)
 32287  
 32288  	var rc int32
 32289  	if argc != 2 {
 32290  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32291  			ts+15083, 0))
 32292  		return TCL_ERROR
 32293  	}
 32294  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 32295  		return TCL_ERROR
 32296  	}
 32297  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 0, SQLITE_UTF8, uintptr(0), uintptr(0),
 32298  		*(*uintptr)(unsafe.Pointer(&struct {
 32299  			f func(*libc.TLS, uintptr, int32, uintptr)
 32300  		}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32301  	if rc == SQLITE_OK {
 32302  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15286, 1, SQLITE_UTF8, uintptr(0), uintptr(0),
 32303  			*(*uintptr)(unsafe.Pointer(&struct {
 32304  				f func(*libc.TLS, uintptr, int32, uintptr)
 32305  			}{t1CountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{t1CountFinalize})))
 32306  	}
 32307  	if rc == SQLITE_OK {
 32308  		rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+15294, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 32309  			*(*uintptr)(unsafe.Pointer(&struct {
 32310  				f func(*libc.TLS, uintptr, int32, uintptr)
 32311  			}{legacyCountStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{legacyCountFinalize})))
 32312  	}
 32313  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 32)), rc) != 0 {
 32314  		return TCL_ERROR
 32315  	}
 32316  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 32317  	return TCL_OK
 32318  }
 32319  
 32320  func test_printf(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32321  	bp := tls.Alloc(40)
 32322  	defer tls.Free(40)
 32323  
 32324  	if argc != 2 {
 32325  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32326  			ts+15307, 0))
 32327  		return TCL_ERROR
 32328  	}
 32329  	libc.Xprintf(tls, ts+389, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 32330  	return TCL_OK
 32331  }
 32332  
 32333  func sqlite3_mprintf_int(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32334  	bp := tls.Alloc(84)
 32335  	defer tls.Free(84)
 32336  
 32337  	var i int32
 32338  	var z uintptr
 32339  	if argc != 5 {
 32340  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32341  			ts+15314, 0))
 32342  		return TCL_ERROR
 32343  	}
 32344  	for i = 2; i < 5; i++ {
 32345  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32346  			return TCL_ERROR
 32347  		}
 32348  	}
 32349  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), *(*int32)(unsafe.Pointer(bp + 72 + 2*4))))
 32350  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32351  	sqlite3.Xsqlite3_free(tls, z)
 32352  	return TCL_OK
 32353  }
 32354  
 32355  func sqlite3_mprintf_int64(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32356  	bp := tls.Alloc(112)
 32357  	defer tls.Free(112)
 32358  
 32359  	var i int32
 32360  
 32361  	var z uintptr
 32362  	if argc != 5 {
 32363  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32364  			ts+15314, 0))
 32365  		return TCL_ERROR
 32366  	}
 32367  	for i = 2; i < 5; i++ {
 32368  		if sqlite3.Xsqlite3Atoi64(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+88+uintptr(i-2)*8, sqlite3.Xsqlite3Strlen30(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))), uint8(SQLITE_UTF8)) != 0 {
 32369  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15335, 0))
 32370  			return TCL_ERROR
 32371  		}
 32372  	}
 32373  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 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))))
 32374  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32375  	sqlite3.Xsqlite3_free(tls, z)
 32376  	return TCL_OK
 32377  }
 32378  
 32379  func sqlite3_mprintf_long(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32380  	bp := tls.Alloc(112)
 32381  	defer tls.Free(112)
 32382  
 32383  	var i int32
 32384  
 32385  	var z uintptr
 32386  	if argc != 5 {
 32387  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32388  			ts+15314, 0))
 32389  		return TCL_ERROR
 32390  	}
 32391  	for i = 2; i < 5; i++ {
 32392  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32393  			return TCL_ERROR
 32394  		}
 32395  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) = int64(*(*int32)(unsafe.Pointer(bp + 72 + uintptr(i-2)*4)))
 32396  		*(*int64)(unsafe.Pointer(bp + 88 + uintptr(i-2)*8)) &= int64(uint64(1)<<(uint64(unsafe.Sizeof(int32(0)))*uint64(8)) - uint64(1))
 32397  	}
 32398  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*int64)(unsafe.Pointer(bp + 88)), *(*int64)(unsafe.Pointer(bp + 88 + 1*8)), *(*int64)(unsafe.Pointer(bp + 88 + 2*8))))
 32399  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32400  	sqlite3.Xsqlite3_free(tls, z)
 32401  	return TCL_OK
 32402  }
 32403  
 32404  func sqlite3_mprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32405  	bp := tls.Alloc(84)
 32406  	defer tls.Free(84)
 32407  
 32408  	var i int32
 32409  	var z uintptr
 32410  	if argc < 4 || argc > 5 {
 32411  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32412  			ts+15374, 0))
 32413  		return TCL_ERROR
 32414  	}
 32415  	for i = 2; i < 4; i++ {
 32416  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32417  			return TCL_ERROR
 32418  		}
 32419  	}
 32420  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), func() uintptr {
 32421  		if argc > 4 {
 32422  			return *(*uintptr)(unsafe.Pointer(argv + 4*8))
 32423  		}
 32424  		return uintptr(0)
 32425  	}()))
 32426  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32427  	sqlite3.Xsqlite3_free(tls, z)
 32428  	return TCL_OK
 32429  }
 32430  
 32431  func sqlite3_snprintf_str(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32432  	bp := tls.Alloc(104)
 32433  	defer tls.Free(104)
 32434  
 32435  	var i int32
 32436  
 32437  	var z uintptr
 32438  	if argc < 5 || argc > 6 {
 32439  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32440  			ts+15400, 0))
 32441  		return TCL_ERROR
 32442  	}
 32443  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+88) != 0 {
 32444  		return TCL_ERROR
 32445  	}
 32446  	if *(*int32)(unsafe.Pointer(bp + 88)) < 0 {
 32447  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+15430, 0))
 32448  		return TCL_ERROR
 32449  	}
 32450  	for i = 3; i < 5; i++ {
 32451  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+92+uintptr(i-3)*4) != 0 {
 32452  			return TCL_ERROR
 32453  		}
 32454  	}
 32455  	z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 88))+1)
 32456  	sqlite3.Xsqlite3_snprintf(tls, *(*int32)(unsafe.Pointer(bp + 88)), z, *(*uintptr)(unsafe.Pointer(argv + 2*8)), libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 92)), *(*int32)(unsafe.Pointer(bp + 92 + 1*4)), func() uintptr {
 32457  		if argc > 4 {
 32458  			return *(*uintptr)(unsafe.Pointer(argv + 5*8))
 32459  		}
 32460  		return uintptr(0)
 32461  	}()))
 32462  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32463  	sqlite3.Xsqlite3_free(tls, z)
 32464  	return TCL_OK
 32465  }
 32466  
 32467  func sqlite3_mprintf_double(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32468  	bp := tls.Alloc(96)
 32469  	defer tls.Free(96)
 32470  
 32471  	var i int32
 32472  
 32473  	var z uintptr
 32474  	if argc != 5 {
 32475  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32476  			ts+15453, 0))
 32477  		return TCL_ERROR
 32478  	}
 32479  	for i = 2; i < 4; i++ {
 32480  		if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+72+uintptr(i-2)*4) != 0 {
 32481  			return TCL_ERROR
 32482  		}
 32483  	}
 32484  	if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+88) != 0 {
 32485  		return TCL_ERROR
 32486  	}
 32487  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 72 + 1*4)), *(*float64)(unsafe.Pointer(bp + 88))))
 32488  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, z, 0))
 32489  	sqlite3.Xsqlite3_free(tls, z)
 32490  	return TCL_OK
 32491  }
 32492  
 32493  func sqlite3_mprintf_scaled(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32494  	bp := tls.Alloc(72)
 32495  	defer tls.Free(72)
 32496  
 32497  	var i int32
 32498  
 32499  	var z uintptr
 32500  	if argc != 4 {
 32501  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32502  			ts+15477, 0))
 32503  		return TCL_ERROR
 32504  	}
 32505  	for i = 2; i < 4; i++ {
 32506  		if tcl.XTcl_GetDouble(tls, interp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)), bp+56+uintptr(i-2)*8) != 0 {
 32507  			return TCL_ERROR
 32508  		}
 32509  	}
 32510  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*float64)(unsafe.Pointer(bp + 56))**(*float64)(unsafe.Pointer(bp + 56 + 1*8))))
 32511  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 32512  	sqlite3.Xsqlite3_free(tls, z)
 32513  	return TCL_OK
 32514  }
 32515  
 32516  func sqlite3_mprintf_stronly(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32517  	bp := tls.Alloc(56)
 32518  	defer tls.Free(56)
 32519  
 32520  	var z uintptr
 32521  	if argc != 3 {
 32522  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32523  			ts+15500, 0))
 32524  		return TCL_ERROR
 32525  	}
 32526  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 32527  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, z, 0))
 32528  	sqlite3.Xsqlite3_free(tls, z)
 32529  	return TCL_OK
 32530  }
 32531  
 32532  func sqlite3_mprintf_hexdouble(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 32533  	bp := tls.Alloc(112)
 32534  	defer tls.Free(112)
 32535  
 32536  	var z uintptr
 32537  
 32538  	if argc != 3 {
 32539  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 32540  			ts+15500, 0))
 32541  		return TCL_ERROR
 32542  	}
 32543  	if libc.Xsscanf(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)), ts+15516, libc.VaList(bp+32, bp+88, bp+92)) != 2 {
 32544  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+15525, 0))
 32545  		return TCL_ERROR
 32546  	}
 32547  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 88)))
 32548  	*(*sqlite_uint64)(unsafe.Pointer(bp + 104)) = *(*sqlite_uint64)(unsafe.Pointer(bp + 104))<<32 + sqlite_uint64(*(*uint32)(unsafe.Pointer(bp + 92)))
 32549  	libc.Xmemcpy(tls, bp+96, bp+104, uint64(unsafe.Sizeof(float64(0))))
 32550  	z = sqlite3.Xsqlite3_mprintf(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), libc.VaList(bp+64, *(*float64)(unsafe.Pointer(bp + 96))))
 32551  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, z, 0))
 32552  	sqlite3.Xsqlite3_free(tls, z)
 32553  	return TCL_OK
 32554  }
 32555  
 32556  func test_enable_shared(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32557  	bp := tls.Alloc(4)
 32558  	defer tls.Free(4)
 32559  
 32560  	var rc int32
 32561  
 32562  	var ret int32 = 0
 32563  
 32564  	if objc != 2 && objc != 1 {
 32565  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15569)
 32566  		return TCL_ERROR
 32567  	}
 32568  	ret = sqlite3.Xsqlite3Config.FsharedCacheEnabled
 32569  
 32570  	if objc == 2 {
 32571  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 32572  			return TCL_ERROR
 32573  		}
 32574  		rc = sqlite3.Xsqlite3_enable_shared_cache(tls, *(*int32)(unsafe.Pointer(bp)))
 32575  		if rc != SQLITE_OK {
 32576  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 32577  			return TCL_ERROR
 32578  		}
 32579  	}
 32580  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(ret != 0)))
 32581  	return TCL_OK
 32582  }
 32583  
 32584  func test_extended_result_codes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32585  	bp := tls.Alloc(12)
 32586  	defer tls.Free(12)
 32587  
 32588  	if objc != 3 {
 32589  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15579)
 32590  		return TCL_ERROR
 32591  	}
 32592  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 32593  		return TCL_ERROR
 32594  	}
 32595  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 32596  		return TCL_ERROR
 32597  	}
 32598  	sqlite3.Xsqlite3_extended_result_codes(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 32599  	return TCL_OK
 32600  }
 32601  
 32602  func test_libversion_number(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32603  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_libversion_number(tls)))
 32604  	return TCL_OK
 32605  }
 32606  
 32607  func test_table_column_metadata(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32608  	bp := tls.Alloc(52)
 32609  	defer tls.Free(52)
 32610  
 32611  	var zDb uintptr
 32612  	var zTbl uintptr
 32613  	var zCol uintptr
 32614  	var rc int32
 32615  	var pRet uintptr
 32616  
 32617  	if objc != 5 && objc != 4 {
 32618  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15590)
 32619  		return TCL_ERROR
 32620  	}
 32621  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32622  		return TCL_ERROR
 32623  	}
 32624  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32625  	zTbl = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 32626  	if objc == 5 {
 32627  		zCol = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 32628  	} else {
 32629  		zCol = uintptr(0)
 32630  	}
 32631  
 32632  	if libc.Xstrlen(tls, zDb) == uint64(0) {
 32633  		zDb = uintptr(0)
 32634  	}
 32635  
 32636  	rc = sqlite3.Xsqlite3_table_column_metadata(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDb, zTbl, zCol,
 32637  		bp+24, bp+32, bp+40, bp+44, bp+48)
 32638  
 32639  	if rc != SQLITE_OK {
 32640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 32641  		return TCL_ERROR
 32642  	}
 32643  
 32644  	pRet = tcl.XTcl_NewObj(tls)
 32645  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), -1))
 32646  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), -1))
 32647  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 32648  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 44))))
 32649  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 48))))
 32650  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 32651  
 32652  	return TCL_OK
 32653  }
 32654  
 32655  func blobHandleFromObj(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 32656  	bp := tls.Alloc(8)
 32657  	defer tls.Free(8)
 32658  
 32659  	var z uintptr
 32660  
 32661  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 32662  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 32663  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 32664  	} else {
 32665  		var channel Tcl_Channel
 32666  		var instanceData ClientData
 32667  
 32668  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 32669  		if !(channel != 0) {
 32670  			return TCL_ERROR
 32671  		}
 32672  
 32673  		tcl.XTcl_Flush(tls, channel)
 32674  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 32675  
 32676  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 32677  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 32678  	}
 32679  
 32680  	return TCL_OK
 32681  }
 32682  
 32683  func test_blob_reopen(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32684  	bp := tls.Alloc(16)
 32685  	defer tls.Free(16)
 32686  
 32687  	var rc int32
 32688  
 32689  	if objc != 3 {
 32690  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15616)
 32691  		return TCL_ERROR
 32692  	}
 32693  
 32694  	if blobHandleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 32695  		return TCL_ERROR
 32696  	}
 32697  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 32698  		return TCL_ERROR
 32699  	}
 32700  
 32701  	rc = sqlite3.Xsqlite3_blob_reopen(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 32702  	if rc != SQLITE_OK {
 32703  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 32704  	}
 32705  
 32706  	return func() int32 {
 32707  		if rc == SQLITE_OK {
 32708  			return TCL_OK
 32709  		}
 32710  		return TCL_ERROR
 32711  	}()
 32712  }
 32713  
 32714  type TestCollationX1 = struct {
 32715  	Finterp uintptr
 32716  	FpCmp   uintptr
 32717  	FpDel   uintptr
 32718  }
 32719  
 32720  type TestCollationX = TestCollationX1
 32721  
 32722  func testCreateCollationDel(tls *libc.TLS, pCtx uintptr) {
 32723  	var p uintptr = pCtx
 32724  
 32725  	var rc int32 = tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, (*TestCollationX)(unsafe.Pointer(p)).FpDel, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL)
 32726  	if rc != TCL_OK {
 32727  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 32728  	}
 32729  
 32730  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32731  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpCmp
 32732  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32733  			tcl.XTclFreeObj(tls, _objPtr)
 32734  		}
 32735  	}
 32736  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 32737  		var _objPtr uintptr = (*TestCollationX)(unsafe.Pointer(p)).FpDel
 32738  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32739  			tcl.XTclFreeObj(tls, _objPtr)
 32740  		}
 32741  	}
 32742  	sqlite3.Xsqlite3_free(tls, p)
 32743  }
 32744  
 32745  func testCreateCollationCmp(tls *libc.TLS, pCtx uintptr, nLeft int32, zLeft uintptr, nRight int32, zRight uintptr) int32 {
 32746  	bp := tls.Alloc(4)
 32747  	defer tls.Free(4)
 32748  
 32749  	var p uintptr = pCtx
 32750  	var pScript uintptr = tcl.XTcl_DuplicateObj(tls, (*TestCollationX)(unsafe.Pointer(p)).FpCmp)
 32751  	*(*int32)(unsafe.Pointer(bp)) = 0
 32752  
 32753  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 32754  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zLeft, nLeft))
 32755  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pScript, tcl.XTcl_NewStringObj(tls, zRight, nRight))
 32756  
 32757  	if TCL_OK != tcl.XTcl_EvalObjEx(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, pScript, TCL_EVAL_DIRECT|TCL_EVAL_GLOBAL) ||
 32758  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp), bp) {
 32759  		tcl.XTcl_BackgroundError(tls, (*TestCollationX)(unsafe.Pointer(p)).Finterp)
 32760  	}
 32761  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32762  		var _objPtr uintptr = pScript
 32763  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32764  			tcl.XTclFreeObj(tls, _objPtr)
 32765  		}
 32766  	}
 32767  
 32768  	return *(*int32)(unsafe.Pointer(bp))
 32769  }
 32770  
 32771  func test_create_collation_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32772  	bp := tls.Alloc(24)
 32773  	defer tls.Free(24)
 32774  
 32775  	var p uintptr
 32776  
 32777  	var rc int32
 32778  
 32779  	if objc != 5 {
 32780  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15630)
 32781  		return TCL_ERROR
 32782  	}
 32783  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32784  		return TCL_ERROR
 32785  	}
 32786  
 32787  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TestCollationX{})))
 32788  	(*TestCollationX)(unsafe.Pointer(p)).FpCmp = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 32789  	(*TestCollationX)(unsafe.Pointer(p)).FpDel = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 32790  	(*TestCollationX)(unsafe.Pointer(p)).Finterp = interp
 32791  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpCmp)).FrefCount++
 32792  	(*Tcl_Obj)(unsafe.Pointer((*TestCollationX)(unsafe.Pointer(p)).FpDel)).FrefCount++
 32793  
 32794  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 16,
 32795  		p, *(*uintptr)(unsafe.Pointer(&struct {
 32796  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 32797  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 32798  	if rc != SQLITE_MISUSE {
 32799  		tcl.XTcl_AppendResult(tls, interp,
 32800  			libc.VaList(bp, ts+15663, uintptr(0)))
 32801  		return TCL_ERROR
 32802  	}
 32803  	rc = sqlite3.Xsqlite3_create_collation_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), SQLITE_UTF8,
 32804  		p, *(*uintptr)(unsafe.Pointer(&struct {
 32805  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 32806  		}{testCreateCollationCmp})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testCreateCollationDel})))
 32807  	return TCL_OK
 32808  }
 32809  
 32810  type CreateFunctionV21 = struct {
 32811  	Finterp   uintptr
 32812  	FpFunc    uintptr
 32813  	FpStep    uintptr
 32814  	FpFinal   uintptr
 32815  	FpDestroy uintptr
 32816  }
 32817  
 32818  type CreateFunctionV2 = CreateFunctionV21
 32819  
 32820  func cf2Func(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 32821  }
 32822  
 32823  func cf2Step(tls *libc.TLS, ctx uintptr, nArg int32, aArg uintptr) {
 32824  }
 32825  
 32826  func cf2Final(tls *libc.TLS, ctx uintptr) {
 32827  }
 32828  
 32829  func cf2Destroy(tls *libc.TLS, pUser uintptr) {
 32830  	var p uintptr = pUser
 32831  
 32832  	if (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp != 0 && (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32833  		var rc int32 = tcl.XTcl_EvalObjEx(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy, 0)
 32834  		if rc != TCL_OK {
 32835  			tcl.XTcl_BackgroundError(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).Finterp)
 32836  		}
 32837  	}
 32838  
 32839  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32840  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 32841  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc
 32842  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32843  				tcl.XTclFreeObj(tls, _objPtr)
 32844  			}
 32845  		}
 32846  	}
 32847  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32848  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 32849  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep
 32850  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32851  				tcl.XTclFreeObj(tls, _objPtr)
 32852  			}
 32853  		}
 32854  	}
 32855  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32856  		for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 32857  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal
 32858  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32859  				tcl.XTclFreeObj(tls, _objPtr)
 32860  			}
 32861  		}
 32862  	}
 32863  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32864  		for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 {
 32865  			var _objPtr uintptr = (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy
 32866  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 32867  				tcl.XTclFreeObj(tls, _objPtr)
 32868  			}
 32869  		}
 32870  	}
 32871  	sqlite3.Xsqlite3_free(tls, p)
 32872  }
 32873  
 32874  func test_create_function_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 32875  	bp := tls.Alloc(180)
 32876  	defer tls.Free(180)
 32877  
 32878  	var zFunc uintptr
 32879  
 32880  	var p uintptr
 32881  	var i int32
 32882  	var rc int32
 32883  
 32884  	*(*[6]EncTable)(unsafe.Pointer(bp + 32)) = [6]EncTable{
 32885  		{FzEnc: ts + 15728, Fenc: SQLITE_UTF8},
 32886  		{FzEnc: ts + 15733, Fenc: SQLITE_UTF16},
 32887  		{FzEnc: ts + 15739, Fenc: SQLITE_UTF16LE},
 32888  		{FzEnc: ts + 15747, Fenc: SQLITE_UTF16BE},
 32889  		{FzEnc: ts + 12774, Fenc: SQLITE_ANY},
 32890  		{FzEnc: ts + 14193},
 32891  	}
 32892  
 32893  	if objc < 5 || objc%2 == 0 {
 32894  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15755)
 32895  		return TCL_ERROR
 32896  	}
 32897  
 32898  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 32899  		return TCL_ERROR
 32900  	}
 32901  	zFunc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 32902  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 32903  		return TCL_ERROR
 32904  	}
 32905  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+32, int32(unsafe.Sizeof(EncTable{})),
 32906  		ts+15784, 0, bp+128) != 0 {
 32907  		return TCL_ERROR
 32908  	}
 32909  	*(*int32)(unsafe.Pointer(bp + 128)) = (*EncTable)(unsafe.Pointer(bp + 32 + uintptr(*(*int32)(unsafe.Pointer(bp + 128)))*16)).Fenc
 32910  
 32911  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(CreateFunctionV2{})))
 32912  
 32913  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(CreateFunctionV2{})))
 32914  	(*CreateFunctionV2)(unsafe.Pointer(p)).Finterp = interp
 32915  
 32916  	for i = 5; i < objc; i = i + 2 {
 32917  		*(*[5]uintptr)(unsafe.Pointer(bp + 136)) = [5]uintptr{ts + 15793, ts + 15799, ts + 15805, ts + 15812, uintptr(0)}
 32918  		if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+136, int32(unsafe.Sizeof(uintptr(0))), ts+15821, 0, bp+176) != 0 {
 32919  			sqlite3.Xsqlite3_free(tls, p)
 32920  			return TCL_ERROR
 32921  		}
 32922  
 32923  		switch *(*int32)(unsafe.Pointer(bp + 176)) {
 32924  		case 0:
 32925  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32926  			break
 32927  		case 1:
 32928  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32929  			break
 32930  		case 2:
 32931  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32932  			break
 32933  		case 3:
 32934  			(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8))
 32935  			break
 32936  		}
 32937  	}
 32938  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32939  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)
 32940  	}
 32941  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32942  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpStep = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)
 32943  	}
 32944  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32945  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)
 32946  	}
 32947  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32948  		(*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy = tcl.XTcl_DuplicateObj(tls, (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)
 32949  	}
 32950  
 32951  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32952  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc)).FrefCount++
 32953  	}
 32954  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32955  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpStep)).FrefCount++
 32956  	}
 32957  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32958  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal)).FrefCount++
 32959  	}
 32960  	if (*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy != 0 {
 32961  		(*Tcl_Obj)(unsafe.Pointer((*CreateFunctionV2)(unsafe.Pointer(p)).FpDestroy)).FrefCount++
 32962  	}
 32963  
 32964  	rc = sqlite3.Xsqlite3_create_function_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zFunc, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 128)), p,
 32965  		func() uintptr {
 32966  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFunc != 0 {
 32967  				return *(*uintptr)(unsafe.Pointer(&struct {
 32968  					f func(*libc.TLS, uintptr, int32, uintptr)
 32969  				}{cf2Func}))
 32970  			}
 32971  			return uintptr(0)
 32972  		}(),
 32973  		func() uintptr {
 32974  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpStep != 0 {
 32975  				return *(*uintptr)(unsafe.Pointer(&struct {
 32976  					f func(*libc.TLS, uintptr, int32, uintptr)
 32977  				}{cf2Step}))
 32978  			}
 32979  			return uintptr(0)
 32980  		}(),
 32981  		func() uintptr {
 32982  			if (*CreateFunctionV2)(unsafe.Pointer(p)).FpFinal != 0 {
 32983  				return *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Final}))
 32984  			}
 32985  			return uintptr(0)
 32986  		}(),
 32987  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cf2Destroy})))
 32988  	if rc != SQLITE_OK {
 32989  		tcl.XTcl_ResetResult(tls, interp)
 32990  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 32991  		return TCL_ERROR
 32992  	}
 32993  	return TCL_OK
 32994  }
 32995  
 32996  type EncTable = struct {
 32997  	FzEnc        uintptr
 32998  	Fenc         int32
 32999  	F__ccgo_pad1 [4]byte
 33000  }
 33001  
 33002  func test_load_extension(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33003  	bp := tls.Alloc(88)
 33004  	defer tls.Free(88)
 33005  
 33006  	var db uintptr
 33007  	_ = db
 33008  	var rc int32
 33009  	var zDb uintptr
 33010  	var zFile uintptr
 33011  	_ = zFile
 33012  	var zProc uintptr = uintptr(0)
 33013  	_ = zProc
 33014  	var zErr uintptr = uintptr(0)
 33015  
 33016  	if objc != 4 && objc != 3 {
 33017  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15828)
 33018  		return TCL_ERROR
 33019  	}
 33020  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33021  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33022  	if objc == 4 {
 33023  		zProc = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 33024  	}
 33025  
 33026  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+24) != 0) {
 33027  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33028  		return TCL_ERROR
 33029  	}
 33030  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 24)).FobjClientData)).Fdb
 33031  
 33032  	rc = SQLITE_ERROR
 33033  	zErr = sqlite3.Xsqlite3_mprintf(tls, ts+15850, 0)
 33034  	_ = zProc
 33035  	_ = zFile
 33036  	if rc != SQLITE_OK {
 33037  		tcl.XTcl_SetResult(tls, interp, func() uintptr {
 33038  			if zErr != 0 {
 33039  				return zErr
 33040  			}
 33041  			return ts + 584
 33042  		}(), uintptr(1))
 33043  		rc = TCL_ERROR
 33044  	} else {
 33045  		rc = TCL_OK
 33046  	}
 33047  	sqlite3.Xsqlite3_free(tls, zErr)
 33048  
 33049  	return rc
 33050  }
 33051  
 33052  func test_enable_load(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 33053  	bp := tls.Alloc(100)
 33054  	defer tls.Free(100)
 33055  
 33056  	var db uintptr
 33057  	_ = db
 33058  	var zDb uintptr
 33059  
 33060  	if objc != 3 {
 33061  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+15892)
 33062  		return TCL_ERROR
 33063  	}
 33064  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33065  
 33066  	if !(tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+32) != 0) {
 33067  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859, zDb, uintptr(0)))
 33068  		return TCL_ERROR
 33069  	}
 33070  	db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 32)).FobjClientData)).Fdb
 33071  
 33072  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+96) != 0 {
 33073  		return TCL_ERROR
 33074  	}
 33075  
 33076  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+15850))
 33077  	return TCL_ERROR
 33078  }
 33079  
 33080  func sqlite_abort(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33081  	libc.Xexit(tls, 255)
 33082  
 33083  	return TCL_OK
 33084  }
 33085  
 33086  func testFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 33087  	var zArg0 uintptr
 33088  __1:
 33089  	if !(argc >= 2) {
 33090  		goto __2
 33091  	}
 33092  	zArg0 = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 33093  	if !(zArg0 != 0) {
 33094  		goto __3
 33095  	}
 33096  	if !(0 == sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2577)) {
 33097  		goto __5
 33098  	}
 33099  	sqlite3.Xsqlite3_result_int(tls, context, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33100  	goto __6
 33101  __5:
 33102  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+3973) == 0) {
 33103  		goto __7
 33104  	}
 33105  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33106  	goto __8
 33107  __7:
 33108  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+15908) == 0) {
 33109  		goto __9
 33110  	}
 33111  	sqlite3.Xsqlite3_result_text(tls, context, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))), -1,
 33112  		libc.UintptrFromInt32(-1))
 33113  	goto __10
 33114  __9:
 33115  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+2562) == 0) {
 33116  		goto __11
 33117  	}
 33118  	sqlite3.Xsqlite3_result_double(tls, context, sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 33119  	goto __12
 33120  __11:
 33121  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+7939) == 0) {
 33122  		goto __13
 33123  	}
 33124  	sqlite3.Xsqlite3_result_null(tls, context)
 33125  	goto __14
 33126  __13:
 33127  	if !(sqlite3.Xsqlite3StrICmp(tls, zArg0, ts+10013) == 0) {
 33128  		goto __15
 33129  	}
 33130  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv + uintptr(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))*8)))
 33131  	goto __16
 33132  __15:
 33133  	goto error_out
 33134  __16:
 33135  	;
 33136  __14:
 33137  	;
 33138  __12:
 33139  	;
 33140  __10:
 33141  	;
 33142  __8:
 33143  	;
 33144  __6:
 33145  	;
 33146  	goto __4
 33147  __3:
 33148  	goto error_out
 33149  __4:
 33150  	;
 33151  	argc = argc - 2
 33152  	argv += 8 * uintptr(2)
 33153  	goto __1
 33154  __2:
 33155  	;
 33156  	return
 33157  
 33158  error_out:
 33159  	sqlite3.Xsqlite3_result_error(tls, context,
 33160  		ts+15915, -1)
 33161  }
 33162  
 33163  func test_register_func(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33164  	bp := tls.Alloc(56)
 33165  	defer tls.Free(56)
 33166  
 33167  	var rc int32
 33168  	if argc != 3 {
 33169  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33170  			ts+15983, 0))
 33171  		return TCL_ERROR
 33172  	}
 33173  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 33174  		return TCL_ERROR
 33175  	}
 33176  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0),
 33177  		*(*uintptr)(unsafe.Pointer(&struct {
 33178  			f func(*libc.TLS, uintptr, int32, uintptr)
 33179  		}{testFunc})), uintptr(0), uintptr(0))
 33180  	if rc != 0 {
 33181  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33182  		return TCL_ERROR
 33183  	}
 33184  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 33185  		return TCL_ERROR
 33186  	}
 33187  	return TCL_OK
 33188  }
 33189  
 33190  func test_finalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33191  	bp := tls.Alloc(40)
 33192  	defer tls.Free(40)
 33193  
 33194  	var rc int32
 33195  	var db uintptr = uintptr(0)
 33196  
 33197  	if objc != 2 {
 33198  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33199  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33200  		return TCL_ERROR
 33201  	}
 33202  
 33203  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33204  		return TCL_ERROR
 33205  	}
 33206  
 33207  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 {
 33208  		db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33209  	}
 33210  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33211  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33212  	if db != 0 && sqlite3TestErrCode(tls, interp, db, rc) != 0 {
 33213  		return TCL_ERROR
 33214  	}
 33215  	return TCL_OK
 33216  }
 33217  
 33218  func test_stmt_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33219  	bp := tls.Alloc(16)
 33220  	defer tls.Free(16)
 33221  
 33222  	var iValue int32
 33223  	var i int32
 33224  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 33225  
 33226  	var zOpName uintptr
 33227  
 33228  	if objc != 4 {
 33229  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16009)
 33230  		return TCL_ERROR
 33231  	}
 33232  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33233  		return TCL_ERROR
 33234  	}
 33235  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33236  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33237  		FzName       uintptr
 33238  		Fop          int32
 33239  		F__ccgo_pad1 [4]byte
 33240  	}{}))); i++ {
 33241  		if libc.Xstrcmp(tls, aOp[i].FzName, zOpName) == 0 {
 33242  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp[i].Fop
 33243  			break
 33244  		}
 33245  	}
 33246  	if i >= int32(uint64(unsafe.Sizeof(aOp))/uint64(unsafe.Sizeof(struct {
 33247  		FzName       uintptr
 33248  		Fop          int32
 33249  		F__ccgo_pad1 [4]byte
 33250  	}{}))) {
 33251  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 33252  			return TCL_ERROR
 33253  		}
 33254  	}
 33255  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 33256  		return TCL_ERROR
 33257  	}
 33258  	iValue = sqlite3.Xsqlite3_stmt_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 33259  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iValue))
 33260  	return TCL_OK
 33261  }
 33262  
 33263  var aOp = [7]struct {
 33264  	FzName       uintptr
 33265  	Fop          int32
 33266  	F__ccgo_pad1 [4]byte
 33267  }{
 33268  	{FzName: ts + 16034, Fop: SQLITE_STMTSTATUS_FULLSCAN_STEP},
 33269  	{FzName: ts + 16066, Fop: SQLITE_STMTSTATUS_SORT},
 33270  	{FzName: ts + 16089, Fop: SQLITE_STMTSTATUS_AUTOINDEX},
 33271  	{FzName: ts + 16117, Fop: SQLITE_STMTSTATUS_VM_STEP},
 33272  	{FzName: ts + 16143, Fop: SQLITE_STMTSTATUS_REPREPARE},
 33273  	{FzName: ts + 16171, Fop: SQLITE_STMTSTATUS_RUN},
 33274  	{FzName: ts + 16193, Fop: SQLITE_STMTSTATUS_MEMUSED},
 33275  }
 33276  
 33277  func test_config_sorterref(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33278  	bp := tls.Alloc(12)
 33279  	defer tls.Free(12)
 33280  
 33281  	if objc != 2 {
 33282  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 33283  		return TCL_ERROR
 33284  	}
 33285  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 33286  		return TCL_ERROR
 33287  	}
 33288  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_SORTERREF_SIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 33289  	return TCL_OK
 33290  }
 33291  
 33292  func vfsCurrentTimeInt64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33293  	bp := tls.Alloc(8)
 33294  	defer tls.Free(8)
 33295  
 33296  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 33297  	if objc != 1 {
 33298  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 33299  		return TCL_ERROR
 33300  	}
 33301  	(*struct {
 33302  		f func(*libc.TLS, uintptr, uintptr) int32
 33303  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTimeInt64})).f(tls, pVfs, bp)
 33304  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*i64)(unsafe.Pointer(bp))))
 33305  	return TCL_OK
 33306  }
 33307  
 33308  func test_snapshot_get(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33309  	bp := tls.Alloc(116)
 33310  	defer tls.Free(116)
 33311  
 33312  	var rc int32
 33313  
 33314  	var zName uintptr
 33315  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33316  
 33317  	if objc != 3 {
 33318  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33319  		return TCL_ERROR
 33320  	}
 33321  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33322  		return TCL_ERROR
 33323  	}
 33324  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33325  
 33326  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33327  	if rc != SQLITE_OK {
 33328  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33329  		return TCL_ERROR
 33330  	} else {
 33331  		if sqlite3TestMakePointerStr(tls, interp, bp+16, *(*uintptr)(unsafe.Pointer(bp + 8))) != 0 {
 33332  			return TCL_ERROR
 33333  		}
 33334  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+16, -1))
 33335  	}
 33336  	return TCL_OK
 33337  }
 33338  
 33339  func test_snapshot_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33340  	bp := tls.Alloc(8)
 33341  	defer tls.Free(8)
 33342  
 33343  	var rc int32
 33344  
 33345  	var zName uintptr
 33346  
 33347  	if objc != 3 {
 33348  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33349  		return TCL_ERROR
 33350  	}
 33351  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33352  		return TCL_ERROR
 33353  	}
 33354  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33355  
 33356  	rc = sqlite3.Xsqlite3_snapshot_recover(tls, *(*uintptr)(unsafe.Pointer(bp)), zName)
 33357  	if rc != SQLITE_OK {
 33358  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33359  		return TCL_ERROR
 33360  	} else {
 33361  		tcl.XTcl_ResetResult(tls, interp)
 33362  	}
 33363  	return TCL_OK
 33364  }
 33365  
 33366  func test_snapshot_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33367  	bp := tls.Alloc(8)
 33368  	defer tls.Free(8)
 33369  
 33370  	var rc int32
 33371  
 33372  	var zName uintptr
 33373  	var pSnapshot uintptr
 33374  
 33375  	if objc != 4 {
 33376  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33377  		return TCL_ERROR
 33378  	}
 33379  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33380  		return TCL_ERROR
 33381  	}
 33382  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33383  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8))))
 33384  
 33385  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, pSnapshot)
 33386  	if rc != SQLITE_OK {
 33387  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33388  		return TCL_ERROR
 33389  	} else {
 33390  		tcl.XTcl_ResetResult(tls, interp)
 33391  	}
 33392  	return TCL_OK
 33393  }
 33394  
 33395  func test_snapshot_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33396  	var pSnapshot uintptr
 33397  	if objc != 2 {
 33398  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16254)
 33399  		return TCL_ERROR
 33400  	}
 33401  	pSnapshot = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33402  	sqlite3.Xsqlite3_snapshot_free(tls, pSnapshot)
 33403  	return TCL_OK
 33404  }
 33405  
 33406  func test_snapshot_cmp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33407  	var res int32
 33408  	var p1 uintptr
 33409  	var p2 uintptr
 33410  	if objc != 3 {
 33411  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 33412  		return TCL_ERROR
 33413  	}
 33414  	p1 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 33415  	p2 = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 33416  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 33417  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 33418  	return TCL_OK
 33419  }
 33420  
 33421  func test_snapshot_get_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33422  	bp := tls.Alloc(16)
 33423  	defer tls.Free(16)
 33424  
 33425  	var rc int32
 33426  
 33427  	var zName uintptr
 33428  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 33429  
 33430  	if objc != 3 {
 33431  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 33432  		return TCL_ERROR
 33433  	}
 33434  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 33435  		return TCL_ERROR
 33436  	}
 33437  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33438  
 33439  	rc = sqlite3.Xsqlite3_snapshot_get(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, bp+8)
 33440  	if rc != SQLITE_OK {
 33441  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33442  		return TCL_ERROR
 33443  	} else {
 33444  		tcl.XTcl_SetObjResult(tls, interp,
 33445  			tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), int32(unsafe.Sizeof(sqlite3_snapshot{}))))
 33446  		sqlite3.Xsqlite3_snapshot_free(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 33447  	}
 33448  	return TCL_OK
 33449  }
 33450  
 33451  func test_snapshot_open_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33452  	bp := tls.Alloc(28)
 33453  	defer tls.Free(28)
 33454  
 33455  	var rc int32
 33456  
 33457  	var zName uintptr
 33458  	var pBlob uintptr
 33459  
 33460  	if objc != 4 {
 33461  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16235)
 33462  		return TCL_ERROR
 33463  	}
 33464  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 33465  		return TCL_ERROR
 33466  	}
 33467  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 33468  	pBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24)
 33469  	if uint64(*(*int32)(unsafe.Pointer(bp + 24))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) {
 33470  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 33471  		return TCL_ERROR
 33472  	}
 33473  	rc = sqlite3.Xsqlite3_snapshot_open(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zName, pBlob)
 33474  	if rc != SQLITE_OK {
 33475  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33476  		return TCL_ERROR
 33477  	}
 33478  	return TCL_OK
 33479  }
 33480  
 33481  func test_snapshot_cmp_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33482  	bp := tls.Alloc(24)
 33483  	defer tls.Free(24)
 33484  
 33485  	var res int32
 33486  	var p1 uintptr
 33487  	var p2 uintptr
 33488  
 33489  	if objc != 3 {
 33490  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16263)
 33491  		return TCL_ERROR
 33492  	}
 33493  
 33494  	p1 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16)
 33495  	p2 = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20)
 33496  
 33497  	if uint64(*(*int32)(unsafe.Pointer(bp + 16))) != uint64(unsafe.Sizeof(sqlite3_snapshot{})) || *(*int32)(unsafe.Pointer(bp + 16)) != *(*int32)(unsafe.Pointer(bp + 20)) {
 33498  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16283, 0))
 33499  		return TCL_ERROR
 33500  	}
 33501  
 33502  	res = sqlite3.Xsqlite3_snapshot_cmp(tls, p1, p2)
 33503  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, res))
 33504  	return TCL_OK
 33505  }
 33506  
 33507  func test_delete_database(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33508  	var rc int32
 33509  	var zFile uintptr
 33510  	if objc != 2 {
 33511  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16296)
 33512  		return TCL_ERROR
 33513  	}
 33514  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33515  	rc = sqlite3_delete_database(tls, zFile)
 33516  
 33517  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 33518  	return TCL_OK
 33519  }
 33520  
 33521  func test_atomic_batch_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33522  	bp := tls.Alloc(32)
 33523  	defer tls.Free(32)
 33524  
 33525  	var zFile uintptr = uintptr(0)
 33526  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 33527  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 33528  	var bRes int32 = 0
 33529  	var dc int32 = 0
 33530  	var rc int32
 33531  
 33532  	if objc != 2 {
 33533  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16301)
 33534  		return TCL_ERROR
 33535  	}
 33536  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 33537  
 33538  	rc = sqlite3.Xsqlite3_open(tls, zFile, bp+16)
 33539  	if rc != SQLITE_OK {
 33540  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), 0))
 33541  		sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 33542  		return TCL_ERROR
 33543  	}
 33544  
 33545  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 33546  	dc = (*struct {
 33547  		f func(*libc.TLS, uintptr) int32
 33548  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)))).FpMethods)).FxDeviceCharacteristics})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 33549  	if dc&SQLITE_IOCAP_BATCH_ATOMIC != 0 {
 33550  		bRes = 1
 33551  	}
 33552  
 33553  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bRes))
 33554  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 33555  	return TCL_OK
 33556  }
 33557  
 33558  func test_next_stmt(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33559  	bp := tls.Alloc(114)
 33560  	defer tls.Free(114)
 33561  
 33562  	*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 33563  
 33564  	if objc != 3 {
 33565  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33566  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16306, 0))
 33567  		return TCL_ERROR
 33568  	}
 33569  
 33570  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 33571  		return TCL_ERROR
 33572  	}
 33573  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+56) != 0 {
 33574  		return TCL_ERROR
 33575  	}
 33576  	*(*uintptr)(unsafe.Pointer(bp + 56)) = sqlite3.Xsqlite3_next_stmt(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*uintptr)(unsafe.Pointer(bp + 56)))
 33577  	if *(*uintptr)(unsafe.Pointer(bp + 56)) != 0 {
 33578  		if sqlite3TestMakePointerStr(tls, interp, bp+64, *(*uintptr)(unsafe.Pointer(bp + 56))) != 0 {
 33579  			return TCL_ERROR
 33580  		}
 33581  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+64, 0))
 33582  	}
 33583  	return TCL_OK
 33584  }
 33585  
 33586  func test_stmt_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33587  	bp := tls.Alloc(40)
 33588  	defer tls.Free(40)
 33589  
 33590  	var rc int32
 33591  
 33592  	if objc != 2 {
 33593  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33594  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33595  		return TCL_ERROR
 33596  	}
 33597  
 33598  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33599  		return TCL_ERROR
 33600  	}
 33601  	rc = sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33602  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 33603  	return TCL_OK
 33604  }
 33605  
 33606  func test_stmt_isexplain(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33607  	bp := tls.Alloc(40)
 33608  	defer tls.Free(40)
 33609  
 33610  	var rc int32
 33611  
 33612  	if objc != 2 {
 33613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33614  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33615  		return TCL_ERROR
 33616  	}
 33617  
 33618  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33619  		return TCL_ERROR
 33620  	}
 33621  	rc = sqlite3.Xsqlite3_stmt_isexplain(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33622  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 33623  	return TCL_OK
 33624  }
 33625  
 33626  func test_stmt_busy(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33627  	bp := tls.Alloc(40)
 33628  	defer tls.Free(40)
 33629  
 33630  	var rc int32
 33631  
 33632  	if objc != 2 {
 33633  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33634  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33635  		return TCL_ERROR
 33636  	}
 33637  
 33638  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33639  		return TCL_ERROR
 33640  	}
 33641  	rc = sqlite3.Xsqlite3_stmt_busy(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33642  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(rc != 0)))
 33643  	return TCL_OK
 33644  }
 33645  
 33646  func uses_stmt_journal(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33647  	bp := tls.Alloc(40)
 33648  	defer tls.Free(40)
 33649  
 33650  	if objc != 2 {
 33651  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33652  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16315, 0))
 33653  		return TCL_ERROR
 33654  	}
 33655  
 33656  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33657  		return TCL_ERROR
 33658  	}
 33659  	sqlite3.Xsqlite3_stmt_readonly(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33660  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(int32(*(*uint8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)) + 200))&0x20>>5) != 0)))
 33661  	return TCL_OK
 33662  }
 33663  
 33664  func test_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33665  	bp := tls.Alloc(40)
 33666  	defer tls.Free(40)
 33667  
 33668  	var rc int32
 33669  
 33670  	if objc != 2 {
 33671  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33672  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33673  		return TCL_ERROR
 33674  	}
 33675  
 33676  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33677  		return TCL_ERROR
 33678  	}
 33679  
 33680  	rc = sqlite3.Xsqlite3_reset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 33681  	if *(*uintptr)(unsafe.Pointer(bp + 32)) != 0 && sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 33682  		return TCL_ERROR
 33683  	}
 33684  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 33685  
 33686  	return TCL_OK
 33687  }
 33688  
 33689  func test_expired(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33690  	bp := tls.Alloc(40)
 33691  	defer tls.Free(40)
 33692  
 33693  	if objc != 2 {
 33694  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33695  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16001, 0))
 33696  		return TCL_ERROR
 33697  	}
 33698  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33699  		return TCL_ERROR
 33700  	}
 33701  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(sqlite3.Xsqlite3_expired(tls, *(*uintptr)(unsafe.Pointer(bp + 32))) != 0)))
 33702  	return TCL_OK
 33703  }
 33704  
 33705  func test_transfer_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33706  	bp := tls.Alloc(48)
 33707  	defer tls.Free(48)
 33708  
 33709  	if objc != 3 {
 33710  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33711  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16321, 0))
 33712  		return TCL_ERROR
 33713  	}
 33714  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33715  		return TCL_ERROR
 33716  	}
 33717  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+40) != 0 {
 33718  		return TCL_ERROR
 33719  	}
 33720  	tcl.XTcl_SetObjResult(tls, interp,
 33721  		tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_transfer_bindings(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))))
 33722  	return TCL_OK
 33723  }
 33724  
 33725  func test_changes(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33726  	bp := tls.Alloc(40)
 33727  	defer tls.Free(40)
 33728  
 33729  	if objc != 2 {
 33730  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 33731  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 33732  		return TCL_ERROR
 33733  	}
 33734  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 33735  		return TCL_ERROR
 33736  	}
 33737  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_changes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 33738  	return TCL_OK
 33739  }
 33740  
 33741  var sqlite_static_bind_value uintptr = uintptr(0)
 33742  var sqlite_static_bind_nbyte int32 = 0
 33743  
 33744  func test_bind(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 33745  	bp := tls.Alloc(142)
 33746  	defer tls.Free(142)
 33747  
 33748  	var rc int32
 33749  
 33750  	if argc != 5 {
 33751  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 33752  			ts+16340, 0))
 33753  		return TCL_ERROR
 33754  	}
 33755  	if getStmtPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 33756  		return TCL_ERROR
 33757  	}
 33758  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+88) != 0 {
 33759  		return TCL_ERROR
 33760  	}
 33761  	if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+7939) == 0 {
 33762  		rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)))
 33763  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16376) == 0 {
 33764  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value, -1, uintptr(0))
 33765  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16383) == 0 {
 33766  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), sqlite_static_bind_value,
 33767  			sqlite_static_bind_nbyte, uintptr(0))
 33768  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16397) == 0 {
 33769  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), *(*uintptr)(unsafe.Pointer(argv + 3*8)), -1, libc.UintptrFromInt32(-1))
 33770  	} else if libc.Xstrcmp(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)), ts+16404) == 0 {
 33771  		rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), ts+16411, 10, uintptr(0))
 33772  	} else {
 33773  		tcl.XTcl_AppendResult(tls, interp,
 33774  			libc.VaList(bp+32, ts+16422, 0))
 33775  		return TCL_ERROR
 33776  	}
 33777  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), rc) != 0 {
 33778  		return TCL_ERROR
 33779  	}
 33780  	if rc != 0 {
 33781  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+92, ts+16476, libc.VaList(bp+48, rc))
 33782  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 33783  		return TCL_ERROR
 33784  	}
 33785  	return TCL_OK
 33786  }
 33787  
 33788  var pTestCollateInterp uintptr
 33789  
 33790  func test_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 33791  	bp := tls.Alloc(4)
 33792  	defer tls.Free(4)
 33793  
 33794  	var i uintptr = pTestCollateInterp
 33795  	var encin int32 = int32(pCtx)
 33796  
 33797  	var n int32
 33798  	var pVal uintptr
 33799  	var pX uintptr
 33800  
 33801  	pX = tcl.XTcl_NewStringObj(tls, ts+16482, -1)
 33802  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 33803  
 33804  	switch encin {
 33805  	case SQLITE_UTF8:
 33806  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 33807  		break
 33808  	case SQLITE_UTF16LE:
 33809  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 33810  		break
 33811  	case SQLITE_UTF16BE:
 33812  		tcl.XTcl_ListObjAppendElement(tls, i, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 33813  		break
 33814  	default:
 33815  	}
 33816  
 33817  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 33818  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 33819  	if pVal != 0 {
 33820  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nA, zA, uint8(encin), uintptr(0))
 33821  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 33822  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 33823  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 33824  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, nB, zB, uint8(encin), uintptr(0))
 33825  		n = sqlite3.Xsqlite3_value_bytes(tls, pVal)
 33826  		tcl.XTcl_ListObjAppendElement(tls, i, pX,
 33827  			tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, pVal), n))
 33828  		sqlite3.Xsqlite3ValueFree(tls, pVal)
 33829  	}
 33830  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 33831  
 33832  	tcl.XTcl_EvalObjEx(tls, i, pX, 0)
 33833  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 33834  		var _objPtr uintptr = pX
 33835  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 33836  			tcl.XTclFreeObj(tls, _objPtr)
 33837  		}
 33838  	}
 33839  	tcl.XTcl_GetIntFromObj(tls, i, tcl.XTcl_GetObjResult(tls, i), bp)
 33840  	return *(*int32)(unsafe.Pointer(bp))
 33841  }
 33842  
 33843  func test_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33844  	bp := tls.Alloc(60)
 33845  	defer tls.Free(60)
 33846  
 33847  	var pVal uintptr
 33848  	var rc int32
 33849  	var zUtf16 uintptr
 33850  
 33851  	if !(objc != 5) {
 33852  		goto __1
 33853  	}
 33854  	goto bad_args
 33855  __1:
 33856  	;
 33857  	pTestCollateInterp = interp
 33858  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 33859  		goto __2
 33860  	}
 33861  	return TCL_ERROR
 33862  __2:
 33863  	;
 33864  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)) {
 33865  		goto __3
 33866  	}
 33867  	return TCL_ERROR
 33868  __3:
 33869  	;
 33870  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF8,
 33871  		uintptr(SQLITE_UTF8), func() uintptr {
 33872  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33873  				return *(*uintptr)(unsafe.Pointer(&struct {
 33874  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33875  				}{test_collate_func}))
 33876  			}
 33877  			return uintptr(0)
 33878  		}())
 33879  	if !(rc == SQLITE_OK) {
 33880  		goto __4
 33881  	}
 33882  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+56)) {
 33883  		goto __5
 33884  	}
 33885  	return TCL_ERROR
 33886  __5:
 33887  	;
 33888  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), ts+16482, SQLITE_UTF16LE,
 33889  		uintptr(SQLITE_UTF16LE), func() uintptr {
 33890  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33891  				return *(*uintptr)(unsafe.Pointer(&struct {
 33892  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33893  				}{test_collate_func}))
 33894  			}
 33895  			return uintptr(0)
 33896  		}())
 33897  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+56)) {
 33898  		goto __6
 33899  	}
 33900  	return TCL_ERROR
 33901  __6:
 33902  	;
 33903  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 33904  	pVal = sqlite3.Xsqlite3ValueNew(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 33905  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, ts+16482, uint8(SQLITE_UTF8), uintptr(0))
 33906  	zUtf16 = sqlite3.Xsqlite3ValueText(tls, pVal, uint8(SQLITE_UTF16LE))
 33907  	if !((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).FmallocFailed != 0) {
 33908  		goto __7
 33909  	}
 33910  	rc = SQLITE_NOMEM
 33911  	goto __8
 33912  __7:
 33913  	rc = sqlite3.Xsqlite3_create_collation16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zUtf16, SQLITE_UTF16BE,
 33914  		uintptr(SQLITE_UTF16BE), func() uintptr {
 33915  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 33916  				return *(*uintptr)(unsafe.Pointer(&struct {
 33917  					f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33918  				}{test_collate_func}))
 33919  			}
 33920  			return uintptr(0)
 33921  		}())
 33922  __8:
 33923  	;
 33924  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 33925  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)))).Fmutex)
 33926  __4:
 33927  	;
 33928  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0) {
 33929  		goto __9
 33930  	}
 33931  	return TCL_ERROR
 33932  __9:
 33933  	;
 33934  	if !(rc != SQLITE_OK) {
 33935  		goto __10
 33936  	}
 33937  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 33938  	return TCL_ERROR
 33939  __10:
 33940  	;
 33941  	return TCL_OK
 33942  
 33943  bad_args:
 33944  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+14949,
 33945  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 33946  	return TCL_ERROR
 33947  }
 33948  
 33949  func test_utf16bin_collate_func(tls *libc.TLS, pCtx uintptr, nA int32, zA uintptr, nB int32, zB uintptr) int32 {
 33950  	var nCmp int32 = func() int32 {
 33951  		if nA > nB {
 33952  			return nB
 33953  		}
 33954  		return nA
 33955  	}()
 33956  	var res int32 = libc.Xmemcmp(tls, zA, zB, uint64(nCmp))
 33957  	if res == 0 {
 33958  		res = nA - nB
 33959  	}
 33960  	return res
 33961  }
 33962  
 33963  func test_utf16bin_collate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 33964  	bp := tls.Alloc(8)
 33965  	defer tls.Free(8)
 33966  
 33967  	var rc int32
 33968  
 33969  	if !(objc != 2) {
 33970  		goto __1
 33971  	}
 33972  	goto bad_args
 33973  __1:
 33974  	;
 33975  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 33976  		goto __2
 33977  	}
 33978  	return TCL_ERROR
 33979  __2:
 33980  	;
 33981  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16552, SQLITE_UTF16, uintptr(0),
 33982  		*(*uintptr)(unsafe.Pointer(&struct {
 33983  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 33984  		}{test_utf16bin_collate_func})))
 33985  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 33986  		goto __3
 33987  	}
 33988  	return TCL_ERROR
 33989  __3:
 33990  	;
 33991  	return TCL_OK
 33992  
 33993  bad_args:
 33994  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 33995  	return TCL_ERROR
 33996  }
 33997  
 33998  var zNeededCollation [200]int8
 33999  var pzNeededCollation uintptr = 0
 34000  
 34001  func test_collate_needed_cb(tls *libc.TLS, pCtx uintptr, db uintptr, eTextRep int32, pName uintptr) {
 34002  	var enc int32 = int32((*sqlite31)(unsafe.Pointer(db)).Fenc)
 34003  	var i int32
 34004  	var z uintptr
 34005  	z = pName
 34006  	i = 0
 34007  	for ; *(*int8)(unsafe.Pointer(z)) != 0 || *(*int8)(unsafe.Pointer(z + 1)) != 0; z++ {
 34008  		if *(*int8)(unsafe.Pointer(z)) != 0 {
 34009  			zNeededCollation[libc.PostIncInt32(&i, 1)] = *(*int8)(unsafe.Pointer(z))
 34010  		}
 34011  	}
 34012  	zNeededCollation[i] = int8(0)
 34013  	sqlite3.Xsqlite3_create_collation(tls,
 34014  		db, ts+16482, int32((*sqlite31)(unsafe.Pointer(db)).Fenc), uintptr(intptr_t(enc)), *(*uintptr)(unsafe.Pointer(&struct {
 34015  			f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34016  		}{test_collate_func})))
 34017  }
 34018  
 34019  func test_collate_needed(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34020  	bp := tls.Alloc(8)
 34021  	defer tls.Free(8)
 34022  
 34023  	var rc int32
 34024  
 34025  	if !(objc != 2) {
 34026  		goto __1
 34027  	}
 34028  	goto bad_args
 34029  __1:
 34030  	;
 34031  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 34032  		goto __2
 34033  	}
 34034  	return TCL_ERROR
 34035  __2:
 34036  	;
 34037  	rc = sqlite3.Xsqlite3_collation_needed16(tls, *(*uintptr)(unsafe.Pointer(bp)), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34038  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr)
 34039  	}{test_collate_needed_cb})))
 34040  	zNeededCollation[0] = int8(0)
 34041  	if !(sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp)), rc) != 0) {
 34042  		goto __3
 34043  	}
 34044  	return TCL_ERROR
 34045  __3:
 34046  	;
 34047  	return TCL_OK
 34048  
 34049  bad_args:
 34050  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 34051  	return TCL_ERROR
 34052  }
 34053  
 34054  var unaligned_string_counter int32 = 0
 34055  
 34056  func alignmentCollFunc(tls *libc.TLS, NotUsed uintptr, nKey1 int32, pKey1 uintptr, nKey2 int32, pKey2 uintptr) int32 {
 34057  	var rc int32
 34058  	var n int32
 34059  	if nKey1 < nKey2 {
 34060  		n = nKey1
 34061  	} else {
 34062  		n = nKey2
 34063  	}
 34064  	if nKey1 > 0 && 1 == 1&int32(pKey1) {
 34065  		unaligned_string_counter++
 34066  	}
 34067  	if nKey2 > 0 && 1 == 1&int32(pKey2) {
 34068  		unaligned_string_counter++
 34069  	}
 34070  	rc = libc.Xmemcmp(tls, pKey1, pKey2, uint64(n))
 34071  	if rc == 0 {
 34072  		rc = nKey1 - nKey2
 34073  	}
 34074  	return rc
 34075  }
 34076  
 34077  func add_alignment_test_collations(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34078  	bp := tls.Alloc(8)
 34079  	defer tls.Free(8)
 34080  
 34081  	if objc >= 2 {
 34082  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34083  			return TCL_ERROR
 34084  		}
 34085  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16561, SQLITE_UTF16,
 34086  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34087  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34088  			}{alignmentCollFunc})))
 34089  		sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+16577, SQLITE_UTF16_ALIGNED,
 34090  			uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 34091  				f func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32
 34092  			}{alignmentCollFunc})))
 34093  	}
 34094  	return SQLITE_OK
 34095  }
 34096  
 34097  func test_function_utf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34098  	var interp uintptr
 34099  	var pX uintptr
 34100  	var pVal uintptr
 34101  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34102  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34103  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34104  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16495, -1))
 34105  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34106  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34107  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34108  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34109  		var _objPtr uintptr = pX
 34110  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34111  			tcl.XTclFreeObj(tls, _objPtr)
 34112  		}
 34113  	}
 34114  	sqlite3.Xsqlite3_result_text(tls, pCtx, tcl.XTcl_GetStringResult(tls, interp), -1, libc.UintptrFromInt32(-1))
 34115  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34116  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34117  		uint8(SQLITE_UTF8), uintptr(0))
 34118  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16be(tls, pVal),
 34119  		-1, libc.UintptrFromInt32(-1))
 34120  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34121  }
 34122  
 34123  func test_function_utf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34124  	var interp uintptr
 34125  	var pX uintptr
 34126  	var pVal uintptr
 34127  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34128  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34129  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34130  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16501, -1))
 34131  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34132  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34133  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34134  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34135  		var _objPtr uintptr = pX
 34136  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34137  			tcl.XTclFreeObj(tls, _objPtr)
 34138  		}
 34139  	}
 34140  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34141  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34142  		uint8(SQLITE_UTF8), uintptr(0))
 34143  	sqlite3.Xsqlite3_result_text(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, pVal), -1, libc.UintptrFromInt32(-1))
 34144  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34145  }
 34146  
 34147  func test_function_utf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 34148  	var interp uintptr
 34149  	var pX uintptr
 34150  	var pVal uintptr
 34151  	interp = sqlite3.Xsqlite3_user_data(tls, pCtx)
 34152  	pX = tcl.XTcl_NewStringObj(tls, ts+16591, -1)
 34153  	(*Tcl_Obj)(unsafe.Pointer(pX)).FrefCount++
 34154  	tcl.XTcl_ListObjAppendElement(tls, interp, pX, tcl.XTcl_NewStringObj(tls, ts+16510, -1))
 34155  	tcl.XTcl_ListObjAppendElement(tls, interp, pX,
 34156  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1))
 34157  	tcl.XTcl_EvalObjEx(tls, interp, pX, 0)
 34158  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 34159  		var _objPtr uintptr = pX
 34160  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 34161  			tcl.XTclFreeObj(tls, _objPtr)
 34162  		}
 34163  	}
 34164  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 34165  	sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, tcl.XTcl_GetStringResult(tls, interp),
 34166  		uint8(SQLITE_UTF8), uintptr(0))
 34167  	sqlite3.Xsqlite3_result_text16(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34168  		-1, libc.UintptrFromInt32(-1))
 34169  	sqlite3.Xsqlite3_result_text16be(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34170  		-1, libc.UintptrFromInt32(-1))
 34171  	sqlite3.Xsqlite3_result_text16le(tls, pCtx, sqlite3.Xsqlite3_value_text16le(tls, pVal),
 34172  		-1, libc.UintptrFromInt32(-1))
 34173  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 34174  }
 34175  
 34176  func test_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34177  	bp := tls.Alloc(44)
 34178  	defer tls.Free(44)
 34179  
 34180  	if !(objc != 5) {
 34181  		goto __1
 34182  	}
 34183  	goto bad_args
 34184  __1:
 34185  	;
 34186  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0) {
 34187  		goto __2
 34188  	}
 34189  	return TCL_ERROR
 34190  __2:
 34191  	;
 34192  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40)) {
 34193  		goto __3
 34194  	}
 34195  	return TCL_ERROR
 34196  __3:
 34197  	;
 34198  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34199  		goto __4
 34200  	}
 34201  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF8,
 34202  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34203  			f func(*libc.TLS, uintptr, int32, uintptr)
 34204  		}{test_function_utf8})), uintptr(0), uintptr(0))
 34205  __4:
 34206  	;
 34207  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+40)) {
 34208  		goto __5
 34209  	}
 34210  	return TCL_ERROR
 34211  __5:
 34212  	;
 34213  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34214  		goto __6
 34215  	}
 34216  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16LE,
 34217  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34218  			f func(*libc.TLS, uintptr, int32, uintptr)
 34219  		}{test_function_utf16le})), uintptr(0), uintptr(0))
 34220  __6:
 34221  	;
 34222  	if !(TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40)) {
 34223  		goto __7
 34224  	}
 34225  	return TCL_ERROR
 34226  __7:
 34227  	;
 34228  	if !(*(*int32)(unsafe.Pointer(bp + 40)) != 0) {
 34229  		goto __8
 34230  	}
 34231  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+16591, 1, SQLITE_UTF16BE,
 34232  		interp, *(*uintptr)(unsafe.Pointer(&struct {
 34233  			f func(*libc.TLS, uintptr, int32, uintptr)
 34234  		}{test_function_utf16be})), uintptr(0), uintptr(0))
 34235  __8:
 34236  	;
 34237  	return TCL_OK
 34238  bad_args:
 34239  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34240  		tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16519, 0))
 34241  	return TCL_ERROR
 34242  }
 34243  
 34244  func test_errstr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34245  	var zCode uintptr
 34246  	var i int32
 34247  	if objc != 1 {
 34248  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16605)
 34249  	}
 34250  
 34251  	zCode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 34252  	for i = 0; i < 200; i++ {
 34253  		if 0 == libc.Xstrcmp(tls, sqlite3.Xsqlite3ErrName(tls, i), zCode) {
 34254  			break
 34255  		}
 34256  	}
 34257  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, i), uintptr(0))
 34258  	return TCL_OK
 34259  }
 34260  
 34261  func test_breakpoint(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 34262  	return TCL_OK
 34263  }
 34264  
 34265  func test_bind_zeroblob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34266  	bp := tls.Alloc(16)
 34267  	defer tls.Free(16)
 34268  
 34269  	var rc int32
 34270  
 34271  	if objc != 4 {
 34272  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34273  		return TCL_ERROR
 34274  	}
 34275  
 34276  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 34277  		return TCL_ERROR
 34278  	}
 34279  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 34280  		return TCL_ERROR
 34281  	}
 34282  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 34283  		return TCL_ERROR
 34284  	}
 34285  
 34286  	rc = sqlite3.Xsqlite3_bind_zeroblob(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), *(*int32)(unsafe.Pointer(bp + 12)))
 34287  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp))), rc) != 0 {
 34288  		return TCL_ERROR
 34289  	}
 34290  	if rc != SQLITE_OK {
 34291  		return TCL_ERROR
 34292  	}
 34293  
 34294  	return TCL_OK
 34295  }
 34296  
 34297  func test_bind_zeroblob64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34298  	bp := tls.Alloc(40)
 34299  	defer tls.Free(40)
 34300  
 34301  	var rc int32
 34302  
 34303  	if objc != 4 {
 34304  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16618)
 34305  		return TCL_ERROR
 34306  	}
 34307  
 34308  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 34309  		return TCL_ERROR
 34310  	}
 34311  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 34312  		return TCL_ERROR
 34313  	}
 34314  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+32) != 0 {
 34315  		return TCL_ERROR
 34316  	}
 34317  
 34318  	rc = sqlite3.Xsqlite3_bind_zeroblob64(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 24)), uint64(*(*Tcl_WideInt)(unsafe.Pointer(bp + 32))))
 34319  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 16))), rc) != 0 {
 34320  		return TCL_ERROR
 34321  	}
 34322  	if rc != SQLITE_OK {
 34323  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34324  		return TCL_ERROR
 34325  	}
 34326  
 34327  	return TCL_OK
 34328  }
 34329  
 34330  func test_bind_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34331  	bp := tls.Alloc(48)
 34332  	defer tls.Free(48)
 34333  
 34334  	var rc int32
 34335  
 34336  	if objc != 4 {
 34337  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34338  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34339  		return TCL_ERROR
 34340  	}
 34341  
 34342  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34343  		return TCL_ERROR
 34344  	}
 34345  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34346  		return TCL_ERROR
 34347  	}
 34348  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 34349  		return TCL_ERROR
 34350  	}
 34351  
 34352  	rc = sqlite3.Xsqlite3_bind_int(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*int32)(unsafe.Pointer(bp + 44)))
 34353  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34354  		return TCL_ERROR
 34355  	}
 34356  	if rc != SQLITE_OK {
 34357  		return TCL_ERROR
 34358  	}
 34359  
 34360  	return TCL_OK
 34361  }
 34362  
 34363  func test_intarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34364  	var i int32
 34365  
 34366  	sqlite3.Xsqlite3_free(tls, p)
 34367  	p = uintptr(0)
 34368  	if objc > 1 {
 34369  		p = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(objc-1)))
 34370  		if p == uintptr(0) {
 34371  			return TCL_ERROR
 34372  		}
 34373  		for i = 0; i < objc-1; i++ {
 34374  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p+uintptr(i)*4) != 0 {
 34375  				sqlite3.Xsqlite3_free(tls, p)
 34376  				p = uintptr(0)
 34377  				return TCL_ERROR
 34378  			}
 34379  		}
 34380  	}
 34381  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p)))
 34382  	return TCL_OK
 34383  }
 34384  
 34385  var p uintptr = uintptr(0)
 34386  
 34387  func test_int64array_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34388  	bp := tls.Alloc(8)
 34389  	defer tls.Free(8)
 34390  
 34391  	var i int32
 34392  
 34393  	sqlite3.Xsqlite3_free(tls, p1)
 34394  	p1 = uintptr(0)
 34395  	if objc > 1 {
 34396  		p1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(objc-1)))
 34397  		if p1 == uintptr(0) {
 34398  			return TCL_ERROR
 34399  		}
 34400  		for i = 0; i < objc-1; i++ {
 34401  			if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), bp) != 0 {
 34402  				sqlite3.Xsqlite3_free(tls, p1)
 34403  				p1 = uintptr(0)
 34404  				return TCL_ERROR
 34405  			}
 34406  			*(*sqlite3_int64)(unsafe.Pointer(p1 + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 34407  		}
 34408  	}
 34409  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p1)))
 34410  	return TCL_OK
 34411  }
 34412  
 34413  var p1 uintptr = uintptr(0)
 34414  
 34415  func test_doublearray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34416  	var i int32
 34417  
 34418  	sqlite3.Xsqlite3_free(tls, p2)
 34419  	p2 = uintptr(0)
 34420  	if objc > 1 {
 34421  		p2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(objc-1)))
 34422  		if p2 == uintptr(0) {
 34423  			return TCL_ERROR
 34424  		}
 34425  		for i = 0; i < objc-1; i++ {
 34426  			if tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)), p2+uintptr(i)*8) != 0 {
 34427  				sqlite3.Xsqlite3_free(tls, p2)
 34428  				p2 = uintptr(0)
 34429  				return TCL_ERROR
 34430  			}
 34431  		}
 34432  	}
 34433  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p2)))
 34434  	return TCL_OK
 34435  }
 34436  
 34437  var p2 uintptr = uintptr(0)
 34438  
 34439  func test_textarray_addr(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34440  	bp := tls.Alloc(8)
 34441  	defer tls.Free(8)
 34442  
 34443  	var i int32
 34444  
 34445  	for i = 0; i < n; i++ {
 34446  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)))
 34447  	}
 34448  	sqlite3.Xsqlite3_free(tls, p3)
 34449  	p3 = uintptr(0)
 34450  	if objc > 1 {
 34451  		p3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(objc-1)))
 34452  		if p3 == uintptr(0) {
 34453  			return TCL_ERROR
 34454  		}
 34455  		for i = 0; i < objc-1; i++ {
 34456  			*(*uintptr)(unsafe.Pointer(p3 + uintptr(i)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(1+i)*8)))))
 34457  		}
 34458  	}
 34459  	n = objc - 1
 34460  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(p3)))
 34461  	return TCL_OK
 34462  }
 34463  
 34464  var n int32 = 0
 34465  var p3 uintptr = uintptr(0)
 34466  
 34467  func test_bind_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34468  	bp := tls.Alloc(56)
 34469  	defer tls.Free(56)
 34470  
 34471  	var rc int32
 34472  
 34473  	if objc != 4 {
 34474  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34475  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34476  		return TCL_ERROR
 34477  	}
 34478  
 34479  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34480  		return TCL_ERROR
 34481  	}
 34482  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34483  		return TCL_ERROR
 34484  	}
 34485  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 34486  		return TCL_ERROR
 34487  	}
 34488  
 34489  	rc = sqlite3.Xsqlite3_bind_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 48)))
 34490  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34491  		return TCL_ERROR
 34492  	}
 34493  	if rc != SQLITE_OK {
 34494  		return TCL_ERROR
 34495  	}
 34496  
 34497  	return TCL_OK
 34498  }
 34499  
 34500  func test_bind_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34501  	bp := tls.Alloc(64)
 34502  	defer tls.Free(64)
 34503  
 34504  	*(*float64)(unsafe.Pointer(bp + 48)) = float64(0)
 34505  	var rc int32
 34506  	var zVal uintptr
 34507  	var i int32
 34508  
 34509  	if objc != 4 {
 34510  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34511  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16629, 0))
 34512  		return TCL_ERROR
 34513  	}
 34514  
 34515  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34516  		return TCL_ERROR
 34517  	}
 34518  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34519  		return TCL_ERROR
 34520  	}
 34521  
 34522  	zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34523  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 34524  		FzName  uintptr
 34525  		FiUpper uint32
 34526  		FiLower uint32
 34527  	}{})); i++ {
 34528  		if libc.Xstrcmp(tls, aSpecialFp[i].FzName, zVal) == 0 {
 34529  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) = sqlite3_uint64(aSpecialFp[i].FiUpper)
 34530  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) <<= 32
 34531  			*(*sqlite3_uint64)(unsafe.Pointer(bp + 56)) |= sqlite3_uint64(aSpecialFp[i].FiLower)
 34532  
 34533  			libc.Xmemcpy(tls, bp+48, bp+56, uint64(8))
 34534  			break
 34535  		}
 34536  	}
 34537  	if uint64(i) >= uint64(unsafe.Sizeof(aSpecialFp))/uint64(unsafe.Sizeof(struct {
 34538  		FzName  uintptr
 34539  		FiUpper uint32
 34540  		FiLower uint32
 34541  	}{})) && tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+48) != 0 {
 34542  		return TCL_ERROR
 34543  	}
 34544  	rc = sqlite3.Xsqlite3_bind_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)), *(*float64)(unsafe.Pointer(bp + 48)))
 34545  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34546  		return TCL_ERROR
 34547  	}
 34548  	if rc != SQLITE_OK {
 34549  		return TCL_ERROR
 34550  	}
 34551  
 34552  	return TCL_OK
 34553  }
 34554  
 34555  var aSpecialFp = [10]struct {
 34556  	FzName  uintptr
 34557  	FiUpper uint32
 34558  	FiLower uint32
 34559  }{
 34560  	{FzName: ts + 16643, FiUpper: uint32(0x7fffffff), FiLower: 0xffffffff},
 34561  	{FzName: ts + 16647, FiUpper: uint32(0x7ff7ffff), FiLower: 0xffffffff},
 34562  	{FzName: ts + 16652, FiUpper: 0xffffffff, FiLower: 0xffffffff},
 34563  	{FzName: ts + 16657, FiUpper: 0xfff7ffff, FiLower: 0xffffffff},
 34564  	{FzName: ts + 16663, FiUpper: uint32(0x7ff00000)},
 34565  	{FzName: ts + 16668, FiUpper: 0xfff00000},
 34566  	{FzName: ts + 16673, FiLower: uint32(0x00000001)},
 34567  	{FzName: ts + 16681, FiUpper: 0x80000000, FiLower: uint32(0x00000001)},
 34568  	{FzName: ts + 16690, FiUpper: uint32(0x7ff80000)},
 34569  	{FzName: ts + 16695, FiUpper: 0xfff80000},
 34570  }
 34571  
 34572  func test_bind_null(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34573  	bp := tls.Alloc(44)
 34574  	defer tls.Free(44)
 34575  
 34576  	var rc int32
 34577  
 34578  	if objc != 3 {
 34579  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34580  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16701, 0))
 34581  		return TCL_ERROR
 34582  	}
 34583  
 34584  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 34585  		return TCL_ERROR
 34586  	}
 34587  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 34588  		return TCL_ERROR
 34589  	}
 34590  
 34591  	rc = sqlite3.Xsqlite3_bind_null(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 34592  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), rc) != 0 {
 34593  		return TCL_ERROR
 34594  	}
 34595  	if rc != SQLITE_OK {
 34596  		return TCL_ERROR
 34597  	}
 34598  
 34599  	return TCL_OK
 34600  }
 34601  
 34602  func test_bind_text(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34603  	bp := tls.Alloc(84)
 34604  	defer tls.Free(84)
 34605  
 34606  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 34607  
 34608  	var value uintptr
 34609  	var rc int32
 34610  	var toFree uintptr = uintptr(0)
 34611  
 34612  	if objc != 5 {
 34613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34614  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 34615  		return TCL_ERROR
 34616  	}
 34617  
 34618  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 34619  		return TCL_ERROR
 34620  	}
 34621  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 34622  		return TCL_ERROR
 34623  	}
 34624  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 34625  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 34626  		return TCL_ERROR
 34627  	}
 34628  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 {
 34629  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+1))
 34630  		if toFree == uintptr(0) {
 34631  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 34632  			return TCL_ERROR
 34633  		}
 34634  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 34635  		*(*int8)(unsafe.Pointer(toFree + uintptr(*(*int32)(unsafe.Pointer(bp + 76))))) = int8(0)
 34636  		value = toFree
 34637  	}
 34638  	rc = sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), libc.UintptrFromInt32(-1))
 34639  	libc.Xfree(tls, toFree)
 34640  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34641  		return TCL_ERROR
 34642  	}
 34643  	if rc != SQLITE_OK {
 34644  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 34645  		return TCL_ERROR
 34646  	}
 34647  
 34648  	return TCL_OK
 34649  }
 34650  
 34651  func test_bind_text16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34652  	bp := tls.Alloc(84)
 34653  	defer tls.Free(84)
 34654  
 34655  	var value uintptr
 34656  	var toFree uintptr = uintptr(0)
 34657  	var rc int32
 34658  	*(*int32)(unsafe.Pointer(bp + 76)) = 0
 34659  
 34660  	var xDel uintptr = func() uintptr {
 34661  		if objc == 6 {
 34662  			return uintptr(0)
 34663  		}
 34664  		return libc.UintptrFromInt32(-1)
 34665  	}()
 34666  	var oStmt uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-4)*8))
 34667  	var oN uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-3)*8))
 34668  	var oString uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8))
 34669  	var oBytes uintptr = *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8))
 34670  
 34671  	if objc != 5 && objc != 6 {
 34672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34673  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16709, 0))
 34674  		return TCL_ERROR
 34675  	}
 34676  
 34677  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, oStmt), bp+64) != 0 {
 34678  		return TCL_ERROR
 34679  	}
 34680  	if tcl.XTcl_GetIntFromObj(tls, interp, oN, bp+72) != 0 {
 34681  		return TCL_ERROR
 34682  	}
 34683  	value = tcl.XTcl_GetByteArrayFromObj(tls, oString, bp+76)
 34684  	if tcl.XTcl_GetIntFromObj(tls, interp, oBytes, bp+80) != 0 {
 34685  		return TCL_ERROR
 34686  	}
 34687  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 && xDel == libc.UintptrFromInt32(-1) {
 34688  		toFree = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 76))+3))
 34689  		if toFree == uintptr(0) {
 34690  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+2069, uintptr(0)))
 34691  			return TCL_ERROR
 34692  		}
 34693  		libc.Xmemcpy(tls, toFree, value, uint64(*(*int32)(unsafe.Pointer(bp + 76))))
 34694  		libc.Xmemset(tls, toFree+uintptr(*(*int32)(unsafe.Pointer(bp + 76))), 0, uint64(3))
 34695  		value = toFree
 34696  	}
 34697  	rc = sqlite3.Xsqlite3_bind_text16(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDel)
 34698  	libc.Xfree(tls, toFree)
 34699  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34700  		return TCL_ERROR
 34701  	}
 34702  	if rc != SQLITE_OK {
 34703  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 34704  		return TCL_ERROR
 34705  	}
 34706  
 34707  	return TCL_OK
 34708  }
 34709  
 34710  func test_bind_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34711  	bp := tls.Alloc(284)
 34712  	defer tls.Free(284)
 34713  
 34714  	var value uintptr
 34715  	var rc int32
 34716  	var xDestructor sqlite3_destructor_type = libc.UintptrFromInt32(-1)
 34717  
 34718  	if objc != 5 && objc != 6 {
 34719  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 34720  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+16729, 0))
 34721  		return TCL_ERROR
 34722  	}
 34723  
 34724  	if objc == 6 {
 34725  		xDestructor = uintptr(0)
 34726  		objv += 8
 34727  	}
 34728  
 34729  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 34730  		return TCL_ERROR
 34731  	}
 34732  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 34733  		return TCL_ERROR
 34734  	}
 34735  
 34736  	value = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76)
 34737  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 34738  		return TCL_ERROR
 34739  	}
 34740  
 34741  	if *(*int32)(unsafe.Pointer(bp + 80)) > *(*int32)(unsafe.Pointer(bp + 76)) {
 34742  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+84,
 34743  			ts+16748, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 76))))
 34744  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+84, uintptr(0)))
 34745  		return TCL_ERROR
 34746  	}
 34747  
 34748  	rc = sqlite3.Xsqlite3_bind_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), *(*int32)(unsafe.Pointer(bp + 72)), value, *(*int32)(unsafe.Pointer(bp + 80)), xDestructor)
 34749  	if sqlite3TestErrCode(tls, interp, sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 64))), rc) != 0 {
 34750  		return TCL_ERROR
 34751  	}
 34752  	if rc != SQLITE_OK {
 34753  		return TCL_ERROR
 34754  	}
 34755  
 34756  	return TCL_OK
 34757  }
 34758  
 34759  func test_bind_value_from_preupdate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34760  	bp := tls.Alloc(48)
 34761  	defer tls.Free(48)
 34762  
 34763  	var z3 uintptr = uintptr(0)
 34764  	var db uintptr = uintptr(0)
 34765  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 34766  
 34767  	if objc != 5 {
 34768  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16782)
 34769  		return TCL_ERROR
 34770  	}
 34771  
 34772  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 34773  		return TCL_ERROR
 34774  	}
 34775  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+32) != 0 {
 34776  		return TCL_ERROR
 34777  	}
 34778  	z3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34779  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+36) != 0 {
 34780  		return TCL_ERROR
 34781  	}
 34782  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 34783  
 34784  	if int32(*(*int8)(unsafe.Pointer(z3))) == 'n' {
 34785  		sqlite3.Xsqlite3_preupdate_new(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 34786  	} else if int32(*(*int8)(unsafe.Pointer(z3))) == 'o' {
 34787  		sqlite3.Xsqlite3_preupdate_old(tls, db, *(*int32)(unsafe.Pointer(bp + 36)), bp+40)
 34788  	} else {
 34789  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16801, z3, uintptr(0)))
 34790  		return TCL_ERROR
 34791  	}
 34792  	sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(bp + 40)))
 34793  
 34794  	return TCL_OK
 34795  }
 34796  
 34797  func test_bind_value_from_select(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34798  	bp := tls.Alloc(72)
 34799  	defer tls.Free(72)
 34800  
 34801  	var zSql uintptr = uintptr(0)
 34802  	var db uintptr = uintptr(0)
 34803  	var rc int32 = SQLITE_OK
 34804  
 34805  	if objc != 4 {
 34806  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16828)
 34807  		return TCL_ERROR
 34808  	}
 34809  
 34810  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 34811  		return TCL_ERROR
 34812  	}
 34813  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56) != 0 {
 34814  		return TCL_ERROR
 34815  	}
 34816  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 34817  	db = sqlite3.Xsqlite3_db_handle(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 34818  
 34819  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+64, uintptr(0))
 34820  	if rc != SQLITE_OK {
 34821  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+16842, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 34822  		return TCL_ERROR
 34823  	}
 34824  	if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 64))) == SQLITE_ROW {
 34825  		var pVal uintptr = sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), 0)
 34826  		sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)), pVal)
 34827  	}
 34828  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 64)))
 34829  	if rc != SQLITE_OK {
 34830  		tcl.XTcl_AppendResult(tls, interp,
 34831  			libc.VaList(bp+24, ts+16857, sqlite3.Xsqlite3_errmsg(tls, db), uintptr(0)))
 34832  		return TCL_ERROR
 34833  	}
 34834  
 34835  	return TCL_OK
 34836  }
 34837  
 34838  func test_carray_bind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 34839  	bp := tls.Alloc(112)
 34840  	defer tls.Free(112)
 34841  
 34842  	var eType int32
 34843  	var nData int32
 34844  	var aData uintptr
 34845  	var isTransient int32
 34846  	var isStatic int32
 34847  
 34848  	var i int32
 34849  	var j int32
 34850  	var rc int32
 34851  	var xDel uintptr
 34852  	var z uintptr
 34853  
 34854  	var a uintptr
 34855  
 34856  	var a1 uintptr
 34857  
 34858  	var a2 uintptr
 34859  	var v3 uintptr
 34860  	var a3 uintptr
 34861  	eType = 0
 34862  	nData = 0
 34863  	aData = uintptr(0)
 34864  	isTransient = 0
 34865  	isStatic = 0
 34866  	xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 34867  
 34868  	if !(aStaticData != 0) {
 34869  		goto __1
 34870  	}
 34871  
 34872  	if !(eStaticType == 3) {
 34873  		goto __2
 34874  	}
 34875  	i = 0
 34876  __3:
 34877  	if !(i < nStaticData) {
 34878  		goto __5
 34879  	}
 34880  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aStaticData + uintptr(i)*8)))
 34881  	goto __4
 34882  __4:
 34883  	i++
 34884  	goto __3
 34885  	goto __5
 34886  __5:
 34887  	;
 34888  __2:
 34889  	;
 34890  	sqlite3.Xsqlite3_free(tls, aStaticData)
 34891  	aStaticData = uintptr(0)
 34892  	nStaticData = 0
 34893  	eStaticType = 0
 34894  __1:
 34895  	;
 34896  	if !(objc == 1) {
 34897  		goto __6
 34898  	}
 34899  	return TCL_OK
 34900  __6:
 34901  	;
 34902  	i = 1
 34903  __7:
 34904  	if !(i < objc && int32(*(*int8)(unsafe.Pointer(tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))))) == '-') {
 34905  		goto __9
 34906  	}
 34907  	z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 34908  	if !(libc.Xstrcmp(tls, z, ts+16878) == 0) {
 34909  		goto __10
 34910  	}
 34911  	isTransient = 1
 34912  	xDel = libc.UintptrFromInt32(-1)
 34913  	goto __11
 34914  __10:
 34915  	if !(libc.Xstrcmp(tls, z, ts+16889) == 0) {
 34916  		goto __12
 34917  	}
 34918  	isStatic = 1
 34919  	xDel = uintptr(0)
 34920  	goto __13
 34921  __12:
 34922  	if !(libc.Xstrcmp(tls, z, ts+16897) == 0) {
 34923  		goto __14
 34924  	}
 34925  	eType = 0
 34926  	goto __15
 34927  __14:
 34928  	if !(libc.Xstrcmp(tls, z, ts+16904) == 0) {
 34929  		goto __16
 34930  	}
 34931  	eType = 1
 34932  	goto __17
 34933  __16:
 34934  	if !(libc.Xstrcmp(tls, z, ts+16911) == 0) {
 34935  		goto __18
 34936  	}
 34937  	eType = 2
 34938  	goto __19
 34939  __18:
 34940  	if !(libc.Xstrcmp(tls, z, ts+16919) == 0) {
 34941  		goto __20
 34942  	}
 34943  	eType = 3
 34944  	goto __21
 34945  __20:
 34946  	if !(libc.Xstrcmp(tls, z, ts+16925) == 0) {
 34947  		goto __22
 34948  	}
 34949  	goto __9
 34950  	goto __23
 34951  __22:
 34952  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+12444, z, uintptr(0)))
 34953  	return TCL_ERROR
 34954  __23:
 34955  	;
 34956  __21:
 34957  	;
 34958  __19:
 34959  	;
 34960  __17:
 34961  	;
 34962  __15:
 34963  	;
 34964  __13:
 34965  	;
 34966  __11:
 34967  	;
 34968  	goto __8
 34969  __8:
 34970  	i++
 34971  	goto __7
 34972  	goto __9
 34973  __9:
 34974  	;
 34975  	if !(eType == 3 && !(isStatic != 0) && !(isTransient != 0)) {
 34976  		goto __24
 34977  	}
 34978  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+16928,
 34979  		uintptr(0)))
 34980  	return TCL_ERROR
 34981  __24:
 34982  	;
 34983  	if !(isStatic != 0 && isTransient != 0) {
 34984  		goto __25
 34985  	}
 34986  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+16975,
 34987  		uintptr(0)))
 34988  	return TCL_ERROR
 34989  __25:
 34990  	;
 34991  	if !(objc-i < 2) {
 34992  		goto __26
 34993  	}
 34994  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17013)
 34995  	return TCL_ERROR
 34996  __26:
 34997  	;
 34998  	if !(getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8))), bp+80) != 0) {
 34999  		goto __27
 35000  	}
 35001  	return TCL_ERROR
 35002  __27:
 35003  	;
 35004  	i++
 35005  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+88) != 0) {
 35006  		goto __28
 35007  	}
 35008  	return TCL_ERROR
 35009  __28:
 35010  	;
 35011  	i++
 35012  	nData = objc - i
 35013  	switch eType + 4*libc.Bool32(nData <= 0) {
 35014  	case 0:
 35015  		goto __30
 35016  	case 1:
 35017  		goto __31
 35018  	case 2:
 35019  		goto __32
 35020  	case 3:
 35021  		goto __33
 35022  	case 4:
 35023  		goto __34
 35024  	}
 35025  	goto __29
 35026  __30:
 35027  	a = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(int32(0)))*uint64(nData)))
 35028  	if !(a == uintptr(0)) {
 35029  		goto __35
 35030  	}
 35031  	rc = SQLITE_NOMEM
 35032  	goto carray_bind_done
 35033  __35:
 35034  	;
 35035  	j = 0
 35036  __36:
 35037  	if !(j < nData) {
 35038  		goto __38
 35039  	}
 35040  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+92) != 0) {
 35041  		goto __39
 35042  	}
 35043  	sqlite3.Xsqlite3_free(tls, a)
 35044  	return TCL_ERROR
 35045  __39:
 35046  	;
 35047  	*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = *(*int32)(unsafe.Pointer(bp + 92))
 35048  	goto __37
 35049  __37:
 35050  	j++
 35051  	goto __36
 35052  	goto __38
 35053  __38:
 35054  	;
 35055  	aData = a
 35056  	goto __29
 35057  
 35058  __31:
 35059  	a1 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(nData)))
 35060  	if !(a1 == uintptr(0)) {
 35061  		goto __40
 35062  	}
 35063  	rc = SQLITE_NOMEM
 35064  	goto carray_bind_done
 35065  __40:
 35066  	;
 35067  	j = 0
 35068  __41:
 35069  	if !(j < nData) {
 35070  		goto __43
 35071  	}
 35072  	if !(tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+96) != 0) {
 35073  		goto __44
 35074  	}
 35075  	sqlite3.Xsqlite3_free(tls, a1)
 35076  	return TCL_ERROR
 35077  __44:
 35078  	;
 35079  	*(*sqlite3_int64)(unsafe.Pointer(a1 + uintptr(j)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 96))
 35080  	goto __42
 35081  __42:
 35082  	j++
 35083  	goto __41
 35084  	goto __43
 35085  __43:
 35086  	;
 35087  	aData = a1
 35088  	goto __29
 35089  
 35090  __32:
 35091  	a2 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(float64(0)))*uint64(nData)))
 35092  	if !(a2 == uintptr(0)) {
 35093  		goto __45
 35094  	}
 35095  	rc = SQLITE_NOMEM
 35096  	goto carray_bind_done
 35097  __45:
 35098  	;
 35099  	j = 0
 35100  __46:
 35101  	if !(j < nData) {
 35102  		goto __48
 35103  	}
 35104  	if !(tcl.XTcl_GetDoubleFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)), bp+104) != 0) {
 35105  		goto __49
 35106  	}
 35107  	sqlite3.Xsqlite3_free(tls, a2)
 35108  	return TCL_ERROR
 35109  __49:
 35110  	;
 35111  	*(*float64)(unsafe.Pointer(a2 + uintptr(j)*8)) = *(*float64)(unsafe.Pointer(bp + 104))
 35112  	goto __47
 35113  __47:
 35114  	j++
 35115  	goto __46
 35116  	goto __48
 35117  __48:
 35118  	;
 35119  	aData = a2
 35120  	goto __29
 35121  
 35122  __33:
 35123  	a3 = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(nData)))
 35124  	if !(a3 == uintptr(0)) {
 35125  		goto __50
 35126  	}
 35127  	rc = SQLITE_NOMEM
 35128  	goto carray_bind_done
 35129  __50:
 35130  	;
 35131  	j = 0
 35132  __51:
 35133  	if !(j < nData) {
 35134  		goto __53
 35135  	}
 35136  	v3 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+j)*8)))
 35137  	*(*uintptr)(unsafe.Pointer(a3 + uintptr(j)*8)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+56, v3))
 35138  	goto __52
 35139  __52:
 35140  	j++
 35141  	goto __51
 35142  	goto __53
 35143  __53:
 35144  	;
 35145  	aData = a3
 35146  	goto __29
 35147  
 35148  __34:
 35149  	aData = ts + 584
 35150  	xDel = uintptr(0)
 35151  	isTransient = 0
 35152  	isStatic = 0
 35153  	goto __29
 35154  
 35155  __29:
 35156  	;
 35157  	if !(isStatic != 0) {
 35158  		goto __54
 35159  	}
 35160  	aStaticData = aData
 35161  	nStaticData = nData
 35162  	eStaticType = eType
 35163  __54:
 35164  	;
 35165  	rc = sqlite3_carray_bind(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 88)), aData, nData, eType, xDel)
 35166  	if !(isTransient != 0) {
 35167  		goto __55
 35168  	}
 35169  	if !(eType == 3) {
 35170  		goto __56
 35171  	}
 35172  	i = 0
 35173  __57:
 35174  	if !(i < nData) {
 35175  		goto __59
 35176  	}
 35177  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(aData + uintptr(i)*8)))
 35178  	goto __58
 35179  __58:
 35180  	i++
 35181  	goto __57
 35182  	goto __59
 35183  __59:
 35184  	;
 35185  __56:
 35186  	;
 35187  	sqlite3.Xsqlite3_free(tls, aData)
 35188  __55:
 35189  	;
 35190  carray_bind_done:
 35191  	if !(rc != 0) {
 35192  		goto __60
 35193  	}
 35194  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, sqlite3.Xsqlite3_errstr(tls, rc), uintptr(0)))
 35195  	return TCL_ERROR
 35196  __60:
 35197  	;
 35198  	return TCL_OK
 35199  }
 35200  
 35201  var aStaticData uintptr = uintptr(0)
 35202  var nStaticData int32 = 0
 35203  var eStaticType int32 = 0
 35204  
 35205  func test_bind_parameter_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35206  	bp := tls.Alloc(8)
 35207  	defer tls.Free(8)
 35208  
 35209  	if objc != 2 {
 35210  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35211  		return TCL_ERROR
 35212  	}
 35213  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35214  		return TCL_ERROR
 35215  	}
 35216  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_bind_parameter_count(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35217  	return TCL_OK
 35218  }
 35219  
 35220  func test_bind_parameter_name(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35221  	bp := tls.Alloc(12)
 35222  	defer tls.Free(12)
 35223  
 35224  	if objc != 3 {
 35225  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17047)
 35226  		return TCL_ERROR
 35227  	}
 35228  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35229  		return TCL_ERROR
 35230  	}
 35231  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 35232  		return TCL_ERROR
 35233  	}
 35234  	tcl.XTcl_SetObjResult(tls, interp,
 35235  		tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_bind_parameter_name(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8))), -1))
 35236  	return TCL_OK
 35237  }
 35238  
 35239  func test_bind_parameter_index(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35240  	bp := tls.Alloc(8)
 35241  	defer tls.Free(8)
 35242  
 35243  	if objc != 3 {
 35244  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17054)
 35245  		return TCL_ERROR
 35246  	}
 35247  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35248  		return TCL_ERROR
 35249  	}
 35250  	tcl.XTcl_SetObjResult(tls, interp,
 35251  		tcl.XTcl_NewIntObj(tls,
 35252  			sqlite3.Xsqlite3_bind_parameter_index(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))))
 35253  	return TCL_OK
 35254  }
 35255  
 35256  func test_clear_bindings(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35257  	bp := tls.Alloc(8)
 35258  	defer tls.Free(8)
 35259  
 35260  	if objc != 2 {
 35261  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35262  		return TCL_ERROR
 35263  	}
 35264  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35265  		return TCL_ERROR
 35266  	}
 35267  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_clear_bindings(tls, *(*uintptr)(unsafe.Pointer(bp)))))
 35268  	return TCL_OK
 35269  }
 35270  
 35271  func test_sleep(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35272  	bp := tls.Alloc(4)
 35273  	defer tls.Free(4)
 35274  
 35275  	if objc != 2 {
 35276  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+13117)
 35277  		return TCL_ERROR
 35278  	}
 35279  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 35280  		return TCL_ERROR
 35281  	}
 35282  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_sleep(tls, *(*int32)(unsafe.Pointer(bp)))))
 35283  	return TCL_OK
 35284  }
 35285  
 35286  func test_ex_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35287  	bp := tls.Alloc(56)
 35288  	defer tls.Free(56)
 35289  
 35290  	var rc int32
 35291  
 35292  	if objc != 2 {
 35293  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35294  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35295  		return TCL_ERROR
 35296  	}
 35297  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35298  		return TCL_ERROR
 35299  	}
 35300  	rc = sqlite3.Xsqlite3_extended_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35301  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35302  	return TCL_OK
 35303  }
 35304  
 35305  func test_errcode(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35306  	bp := tls.Alloc(56)
 35307  	defer tls.Free(56)
 35308  
 35309  	var rc int32
 35310  
 35311  	if objc != 2 {
 35312  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35313  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35314  		return TCL_ERROR
 35315  	}
 35316  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35317  		return TCL_ERROR
 35318  	}
 35319  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 48)))
 35320  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 35321  	return TCL_OK
 35322  }
 35323  
 35324  func test_errmsg(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35325  	bp := tls.Alloc(40)
 35326  	defer tls.Free(40)
 35327  
 35328  	var zErr uintptr
 35329  
 35330  	if objc != 2 {
 35331  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35332  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35333  		return TCL_ERROR
 35334  	}
 35335  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35336  		return TCL_ERROR
 35337  	}
 35338  
 35339  	zErr = sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35340  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErr, -1))
 35341  	return TCL_OK
 35342  }
 35343  
 35344  func test_error_offset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35345  	bp := tls.Alloc(40)
 35346  	defer tls.Free(40)
 35347  
 35348  	var iByteOffset int32
 35349  
 35350  	if objc != 2 {
 35351  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35352  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35353  		return TCL_ERROR
 35354  	}
 35355  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35356  		return TCL_ERROR
 35357  	}
 35358  
 35359  	iByteOffset = sqlite3.Xsqlite3_error_offset(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35360  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iByteOffset))
 35361  	return TCL_OK
 35362  }
 35363  
 35364  func test_errmsg16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35365  	bp := tls.Alloc(40)
 35366  	defer tls.Free(40)
 35367  
 35368  	var zErr uintptr
 35369  	var z uintptr
 35370  	var bytes int32 = 0
 35371  
 35372  	if objc != 2 {
 35373  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35374  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+15001, 0))
 35375  		return TCL_ERROR
 35376  	}
 35377  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35378  		return TCL_ERROR
 35379  	}
 35380  
 35381  	zErr = sqlite3.Xsqlite3_errmsg16(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35382  	if zErr != 0 {
 35383  		z = zErr
 35384  		for bytes = 0; *(*int8)(unsafe.Pointer(z + uintptr(bytes))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(bytes+1))) != 0; bytes = bytes + 2 {
 35385  		}
 35386  	}
 35387  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zErr, bytes))
 35388  	return TCL_OK
 35389  }
 35390  
 35391  func test_prepare(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35392  	bp := tls.Alloc(162)
 35393  	defer tls.Free(162)
 35394  
 35395  	var zSql uintptr
 35396  
 35397  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35398  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35399  
 35400  	var rc int32
 35401  
 35402  	if objc != 5 && objc != 4 {
 35403  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35404  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35405  		return TCL_ERROR
 35406  	}
 35407  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35408  		return TCL_ERROR
 35409  	}
 35410  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35411  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35412  		return TCL_ERROR
 35413  	}
 35414  
 35415  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, func() uintptr {
 35416  		if objc >= 5 {
 35417  			return bp + 104
 35418  		}
 35419  		return uintptr(0)
 35420  	}())
 35421  	tcl.XTcl_ResetResult(tls, interp)
 35422  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35423  		return TCL_ERROR
 35424  	}
 35425  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 35426  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35427  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 35428  		}
 35429  		if int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104)))) < *(*int32)(unsafe.Pointer(bp + 88)) {
 35430  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(bp + 104))))
 35431  		}
 35432  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 104)), *(*int32)(unsafe.Pointer(bp + 88))), 0)
 35433  	}
 35434  	if rc != SQLITE_OK {
 35435  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35436  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35437  		return TCL_ERROR
 35438  	}
 35439  
 35440  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 35441  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 35442  			return TCL_ERROR
 35443  		}
 35444  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35445  	}
 35446  	return TCL_OK
 35447  }
 35448  
 35449  func test_prepare_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35450  	bp := tls.Alloc(162)
 35451  	defer tls.Free(162)
 35452  
 35453  	var zSql uintptr
 35454  	var zCopy uintptr = uintptr(0)
 35455  
 35456  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35457  	var pzTail uintptr
 35458  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35459  
 35460  	var rc int32
 35461  
 35462  	if objc != 5 && objc != 4 {
 35463  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35464  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 35465  		return TCL_ERROR
 35466  	}
 35467  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35468  		return TCL_ERROR
 35469  	}
 35470  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35471  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35472  		return TCL_ERROR
 35473  	}
 35474  
 35475  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35476  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35477  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35478  	} else {
 35479  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 35480  		zCopy = libc.Xmalloc(tls, uint64(n))
 35481  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 35482  	}
 35483  	if objc >= 5 {
 35484  		pzTail = bp + 96
 35485  	} else {
 35486  		pzTail = uintptr(0)
 35487  	}
 35488  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), bp+104, pzTail)
 35489  	if objc >= 5 {
 35490  		*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 35491  	}
 35492  	libc.Xfree(tls, zCopy)
 35493  
 35494  	tcl.XTcl_ResetResult(tls, interp)
 35495  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35496  		return TCL_ERROR
 35497  	}
 35498  	if rc == SQLITE_OK && objc >= 5 && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 35499  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35500  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 35501  		}
 35502  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 96)), *(*int32)(unsafe.Pointer(bp + 88))), 0)
 35503  	}
 35504  	if rc != SQLITE_OK {
 35505  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35506  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35507  		return TCL_ERROR
 35508  	}
 35509  
 35510  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 35511  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 35512  			return TCL_ERROR
 35513  		}
 35514  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35515  	}
 35516  	return TCL_OK
 35517  }
 35518  
 35519  func test_prepare_v3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35520  	bp := tls.Alloc(162)
 35521  	defer tls.Free(162)
 35522  
 35523  	var zSql uintptr
 35524  	var zCopy uintptr = uintptr(0)
 35525  
 35526  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 35527  	var pzTail uintptr
 35528  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 35529  
 35530  	var rc int32
 35531  
 35532  	if objc != 6 && objc != 5 {
 35533  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35534  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17110, 0))
 35535  		return TCL_ERROR
 35536  	}
 35537  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35538  		return TCL_ERROR
 35539  	}
 35540  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 35541  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 35542  		return TCL_ERROR
 35543  	}
 35544  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+92) != 0 {
 35545  		return TCL_ERROR
 35546  	}
 35547  
 35548  	if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35549  		zCopy = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35550  		libc.Xmemcpy(tls, zCopy, zSql, uint64(*(*int32)(unsafe.Pointer(bp + 88))))
 35551  	} else {
 35552  		var n int32 = int32(libc.Xstrlen(tls, zSql)) + 1
 35553  		zCopy = libc.Xmalloc(tls, uint64(n))
 35554  		libc.Xmemcpy(tls, zCopy, zSql, uint64(n))
 35555  	}
 35556  	if objc >= 6 {
 35557  		pzTail = bp + 96
 35558  	} else {
 35559  		pzTail = uintptr(0)
 35560  	}
 35561  	rc = sqlite3.Xsqlite3_prepare_v3(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zCopy, *(*int32)(unsafe.Pointer(bp + 88)), uint32(*(*int32)(unsafe.Pointer(bp + 92))), bp+104, pzTail)
 35562  	libc.Xfree(tls, zCopy)
 35563  	*(*uintptr)(unsafe.Pointer(bp + 96)) = zSql + uintptr((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zCopy))/1)
 35564  
 35565  	tcl.XTcl_ResetResult(tls, interp)
 35566  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35567  		return TCL_ERROR
 35568  	}
 35569  	if rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 && objc >= 6 {
 35570  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 35571  			*(*int32)(unsafe.Pointer(bp + 88)) = *(*int32)(unsafe.Pointer(bp + 88)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 96)))-int64(zSql))/1)
 35572  		}
 35573  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 96)), *(*int32)(unsafe.Pointer(bp + 88))), 0)
 35574  	}
 35575  	if rc != SQLITE_OK {
 35576  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+16476, libc.VaList(bp+32, rc))
 35577  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35578  		return TCL_ERROR
 35579  	}
 35580  
 35581  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 {
 35582  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 104))) != 0 {
 35583  			return TCL_ERROR
 35584  		}
 35585  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 35586  	}
 35587  	return TCL_OK
 35588  }
 35589  
 35590  func test_prepare_tkt3134(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35591  	bp := tls.Alloc(146)
 35592  	defer tls.Free(146)
 35593  
 35594  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 35595  
 35596  	var rc int32
 35597  
 35598  	if objc != 2 {
 35599  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35600  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 35601  		return TCL_ERROR
 35602  	}
 35603  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 35604  		return TCL_ERROR
 35605  	}
 35606  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), uintptr(unsafe.Pointer(&zSql))+1, 0, bp+88, uintptr(0))
 35607  
 35608  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 80)), rc) != 0 {
 35609  		return TCL_ERROR
 35610  	}
 35611  	if rc != SQLITE_OK {
 35612  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+96, ts+16476, libc.VaList(bp+32, rc))
 35613  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+96, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 35614  		return TCL_ERROR
 35615  	}
 35616  
 35617  	if *(*uintptr)(unsafe.Pointer(bp + 88)) != 0 {
 35618  		if sqlite3TestMakePointerStr(tls, interp, bp+96, *(*uintptr)(unsafe.Pointer(bp + 88))) != 0 {
 35619  			return TCL_ERROR
 35620  		}
 35621  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+96, 0))
 35622  	}
 35623  	return TCL_OK
 35624  }
 35625  
 35626  var zSql = *(*[10]int8)(unsafe.Pointer(ts + 17138))
 35627  
 35628  func test_prepare16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35629  	bp := tls.Alloc(130)
 35630  	defer tls.Free(130)
 35631  
 35632  	var zSql uintptr
 35633  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 35634  	var pTail uintptr = uintptr(0)
 35635  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 35636  
 35637  	var rc int32
 35638  
 35639  	if objc != 5 && objc != 4 {
 35640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35641  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35642  		return TCL_ERROR
 35643  	}
 35644  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35645  		return TCL_ERROR
 35646  	}
 35647  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 35648  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 35649  		return TCL_ERROR
 35650  	}
 35651  
 35652  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 35653  		if objc >= 5 {
 35654  			return bp + 72
 35655  		}
 35656  		return uintptr(0)
 35657  	}())
 35658  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 35659  		return TCL_ERROR
 35660  	}
 35661  	if rc != 0 {
 35662  		return TCL_ERROR
 35663  	}
 35664  
 35665  	if objc >= 5 {
 35666  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 35667  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 35668  		} else {
 35669  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 35670  		}
 35671  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 35672  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 35673  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 35674  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35675  			var _objPtr uintptr = pTail
 35676  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35677  				tcl.XTclFreeObj(tls, _objPtr)
 35678  			}
 35679  		}
 35680  	}
 35681  
 35682  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 35683  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 35684  			return TCL_ERROR
 35685  		}
 35686  	}
 35687  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 35688  	return TCL_OK
 35689  }
 35690  
 35691  func test_prepare16_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35692  	bp := tls.Alloc(130)
 35693  	defer tls.Free(130)
 35694  
 35695  	var zSql uintptr
 35696  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 35697  	var pTail uintptr = uintptr(0)
 35698  	*(*uintptr)(unsafe.Pointer(bp + 64)) = uintptr(0)
 35699  
 35700  	var rc int32
 35701  
 35702  	if objc != 5 && objc != 4 {
 35703  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35704  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17064, 0))
 35705  		return TCL_ERROR
 35706  	}
 35707  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 35708  		return TCL_ERROR
 35709  	}
 35710  	zSql = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+56)
 35711  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+60) != 0 {
 35712  		return TCL_ERROR
 35713  	}
 35714  
 35715  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zSql, *(*int32)(unsafe.Pointer(bp + 60)), bp+64, func() uintptr {
 35716  		if objc >= 5 {
 35717  			return bp + 72
 35718  		}
 35719  		return uintptr(0)
 35720  	}())
 35721  	if sqlite3TestErrCode(tls, interp, *(*uintptr)(unsafe.Pointer(bp + 48)), rc) != 0 {
 35722  		return TCL_ERROR
 35723  	}
 35724  	if rc != 0 {
 35725  		return TCL_ERROR
 35726  	}
 35727  
 35728  	if objc >= 5 {
 35729  		if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 35730  			*(*int32)(unsafe.Pointer(bp + 56)) = *(*int32)(unsafe.Pointer(bp + 56)) - int32((int64(*(*uintptr)(unsafe.Pointer(bp + 72)))-int64(zSql))/1)
 35731  		} else {
 35732  			*(*int32)(unsafe.Pointer(bp + 56)) = 0
 35733  		}
 35734  		pTail = tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), *(*int32)(unsafe.Pointer(bp + 56)))
 35735  		(*Tcl_Obj)(unsafe.Pointer(pTail)).FrefCount++
 35736  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), pTail, 0)
 35737  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 35738  			var _objPtr uintptr = pTail
 35739  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 35740  				tcl.XTclFreeObj(tls, _objPtr)
 35741  			}
 35742  		}
 35743  	}
 35744  
 35745  	if *(*uintptr)(unsafe.Pointer(bp + 64)) != 0 {
 35746  		if sqlite3TestMakePointerStr(tls, interp, bp+80, *(*uintptr)(unsafe.Pointer(bp + 64))) != 0 {
 35747  			return TCL_ERROR
 35748  		}
 35749  	}
 35750  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+80, 0))
 35751  	return TCL_OK
 35752  }
 35753  
 35754  func test_open(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35755  	bp := tls.Alloc(156)
 35756  	defer tls.Free(156)
 35757  
 35758  	var zFilename uintptr
 35759  
 35760  	if objc != 3 && objc != 2 && objc != 1 {
 35761  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35762  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 35763  		return TCL_ERROR
 35764  	}
 35765  
 35766  	if objc > 1 {
 35767  		zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35768  	} else {
 35769  		zFilename = uintptr(0)
 35770  	}
 35771  	sqlite3.Xsqlite3_open(tls, zFilename, bp+48)
 35772  
 35773  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 35774  		return TCL_ERROR
 35775  	}
 35776  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 35777  	return TCL_OK
 35778  }
 35779  
 35780  func test_open_v2(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35781  	bp := tls.Alloc(484)
 35782  	defer tls.Free(484)
 35783  
 35784  	var zFilename uintptr
 35785  	var zVfs uintptr
 35786  	var flags int32 = 0
 35787  
 35788  	var rc int32
 35789  
 35790  	var i int32
 35791  
 35792  	if objc != 4 {
 35793  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17171)
 35794  		return TCL_ERROR
 35795  	}
 35796  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35797  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 35798  	if int32(*(*int8)(unsafe.Pointer(zVfs))) == 0x00 {
 35799  		zVfs = uintptr(0)
 35800  	}
 35801  
 35802  	rc = tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16, bp+24)
 35803  	if rc != TCL_OK {
 35804  		return rc
 35805  	}
 35806  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 16)); i++ {
 35807  		*(*[21]OpenFlag)(unsafe.Pointer(bp + 32)) = [21]OpenFlag{
 35808  			{FzFlag: ts + 17190, Fflag: SQLITE_OPEN_READONLY},
 35809  			{FzFlag: ts + 17211, Fflag: SQLITE_OPEN_READWRITE},
 35810  			{FzFlag: ts + 17233, Fflag: SQLITE_OPEN_CREATE},
 35811  			{FzFlag: ts + 17252, Fflag: SQLITE_OPEN_DELETEONCLOSE},
 35812  			{FzFlag: ts + 17278, Fflag: SQLITE_OPEN_EXCLUSIVE},
 35813  			{FzFlag: ts + 17300, Fflag: SQLITE_OPEN_AUTOPROXY},
 35814  			{FzFlag: ts + 17322, Fflag: SQLITE_OPEN_MAIN_DB},
 35815  			{FzFlag: ts + 17342, Fflag: SQLITE_OPEN_TEMP_DB},
 35816  			{FzFlag: ts + 17362, Fflag: SQLITE_OPEN_TRANSIENT_DB},
 35817  			{FzFlag: ts + 17387, Fflag: SQLITE_OPEN_MAIN_JOURNAL},
 35818  			{FzFlag: ts + 17412, Fflag: SQLITE_OPEN_TEMP_JOURNAL},
 35819  			{FzFlag: ts + 17437, Fflag: SQLITE_OPEN_SUBJOURNAL},
 35820  			{FzFlag: ts + 17460, Fflag: SQLITE_OPEN_SUPER_JOURNAL},
 35821  			{FzFlag: ts + 17486, Fflag: SQLITE_OPEN_NOMUTEX},
 35822  			{FzFlag: ts + 17506, Fflag: SQLITE_OPEN_FULLMUTEX},
 35823  			{FzFlag: ts + 17528, Fflag: SQLITE_OPEN_SHAREDCACHE},
 35824  			{FzFlag: ts + 17552, Fflag: SQLITE_OPEN_PRIVATECACHE},
 35825  			{FzFlag: ts + 17577, Fflag: SQLITE_OPEN_WAL},
 35826  			{FzFlag: ts + 17593, Fflag: SQLITE_OPEN_URI},
 35827  			{FzFlag: ts + 17609, Fflag: SQLITE_OPEN_EXRESCODE},
 35828  			{},
 35829  		}
 35830  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)) + uintptr(i)*8)), bp+32, int32(unsafe.Sizeof(OpenFlag{})),
 35831  			ts+17631, 0, bp+368)
 35832  		if rc != TCL_OK {
 35833  			return rc
 35834  		}
 35835  		flags = flags | (*OpenFlag)(unsafe.Pointer(bp+32+uintptr(*(*int32)(unsafe.Pointer(bp + 368)))*16)).Fflag
 35836  	}
 35837  
 35838  	rc = sqlite3.Xsqlite3_open_v2(tls, zFilename, bp+376, flags, zVfs)
 35839  	if sqlite3TestMakePointerStr(tls, interp, bp+384, *(*uintptr)(unsafe.Pointer(bp + 376))) != 0 {
 35840  		return TCL_ERROR
 35841  	}
 35842  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+384, 0))
 35843  	return TCL_OK
 35844  }
 35845  
 35846  type OpenFlag = struct {
 35847  	FzFlag       uintptr
 35848  	Fflag        int32
 35849  	F__ccgo_pad1 [4]byte
 35850  }
 35851  
 35852  func test_open16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35853  	bp := tls.Alloc(156)
 35854  	defer tls.Free(156)
 35855  
 35856  	var zFilename uintptr
 35857  
 35858  	if objc != 3 {
 35859  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35860  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17148, 0))
 35861  		return TCL_ERROR
 35862  	}
 35863  
 35864  	zFilename = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 35865  	sqlite3.Xsqlite3_open16(tls, zFilename, bp+48)
 35866  
 35867  	if sqlite3TestMakePointerStr(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(bp + 48))) != 0 {
 35868  		return TCL_ERROR
 35869  	}
 35870  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+56, 0))
 35871  	return TCL_OK
 35872  }
 35873  
 35874  func test_complete16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35875  	var zBuf uintptr
 35876  
 35877  	if objc != 2 {
 35878  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17636)
 35879  		return TCL_ERROR
 35880  	}
 35881  
 35882  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(0))
 35883  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_complete16(tls, zBuf)))
 35884  	return TCL_OK
 35885  }
 35886  
 35887  func test_normalize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35888  	var zSql uintptr
 35889  	var zNorm uintptr
 35890  
 35891  	if objc != 2 {
 35892  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9535)
 35893  		return TCL_ERROR
 35894  	}
 35895  
 35896  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 35897  	zNorm = sqlite3_normalize(tls, zSql)
 35898  	if zNorm != 0 {
 35899  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zNorm, -1))
 35900  		sqlite3.Xsqlite3_free(tls, zNorm)
 35901  	}
 35902  	return TCL_OK
 35903  }
 35904  
 35905  func test_step(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35906  	bp := tls.Alloc(40)
 35907  	defer tls.Free(40)
 35908  
 35909  	var rc int32
 35910  
 35911  	if objc != 2 {
 35912  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35913  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+16315, 0))
 35914  		return TCL_ERROR
 35915  	}
 35916  
 35917  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35918  		return TCL_ERROR
 35919  	}
 35920  	rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 35921  
 35922  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 35923  	return TCL_OK
 35924  }
 35925  
 35926  func test_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35927  	bp := tls.Alloc(8)
 35928  	defer tls.Free(8)
 35929  
 35930  	if objc != 2 {
 35931  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35932  		return TCL_ERROR
 35933  	}
 35934  
 35935  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35936  		return TCL_ERROR
 35937  	}
 35938  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_sql(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 35939  	return TCL_OK
 35940  }
 35941  
 35942  func test_ex_sql(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35943  	bp := tls.Alloc(8)
 35944  	defer tls.Free(8)
 35945  
 35946  	var z uintptr
 35947  
 35948  	if objc != 2 {
 35949  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 35950  		return TCL_ERROR
 35951  	}
 35952  
 35953  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 35954  		return TCL_ERROR
 35955  	}
 35956  	z = sqlite3.Xsqlite3_expanded_sql(tls, *(*uintptr)(unsafe.Pointer(bp)))
 35957  	tcl.XTcl_SetResult(tls, interp, z, uintptr(1))
 35958  	sqlite3.Xsqlite3_free(tls, z)
 35959  	return TCL_OK
 35960  }
 35961  
 35962  func test_column_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35963  	bp := tls.Alloc(40)
 35964  	defer tls.Free(40)
 35965  
 35966  	if objc != 2 {
 35967  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35968  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 35969  		return TCL_ERROR
 35970  	}
 35971  
 35972  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35973  		return TCL_ERROR
 35974  	}
 35975  
 35976  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 35977  	return TCL_OK
 35978  }
 35979  
 35980  func test_column_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 35981  	bp := tls.Alloc(44)
 35982  	defer tls.Free(44)
 35983  
 35984  	var tp int32
 35985  
 35986  	if objc != 3 {
 35987  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 35988  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 35989  		return TCL_ERROR
 35990  	}
 35991  
 35992  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 35993  		return TCL_ERROR
 35994  	}
 35995  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 35996  		return TCL_ERROR
 35997  	}
 35998  
 35999  	tp = sqlite3.Xsqlite3_column_type(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36000  	switch tp {
 36001  	case SQLITE_INTEGER:
 36002  		tcl.XTcl_SetResult(tls, interp, ts+2413, uintptr(0))
 36003  		break
 36004  	case SQLITE_NULL:
 36005  		tcl.XTcl_SetResult(tls, interp, ts+5846, uintptr(0))
 36006  		break
 36007  	case SQLITE_FLOAT:
 36008  		tcl.XTcl_SetResult(tls, interp, ts+17662, uintptr(0))
 36009  		break
 36010  	case SQLITE_TEXT:
 36011  		tcl.XTcl_SetResult(tls, interp, ts+17668, uintptr(0))
 36012  		break
 36013  	case SQLITE_BLOB:
 36014  		tcl.XTcl_SetResult(tls, interp, ts+17673, uintptr(0))
 36015  		break
 36016  	default:
 36017  	}
 36018  
 36019  	return TCL_OK
 36020  }
 36021  
 36022  func test_column_int64(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36023  	bp := tls.Alloc(44)
 36024  	defer tls.Free(44)
 36025  
 36026  	var iVal i64
 36027  
 36028  	if objc != 3 {
 36029  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36030  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36031  		return TCL_ERROR
 36032  	}
 36033  
 36034  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36035  		return TCL_ERROR
 36036  	}
 36037  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36038  		return TCL_ERROR
 36039  	}
 36040  
 36041  	iVal = sqlite3.Xsqlite3_column_int64(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36042  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, iVal))
 36043  	return TCL_OK
 36044  }
 36045  
 36046  func test_column_blob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36047  	bp := tls.Alloc(44)
 36048  	defer tls.Free(44)
 36049  
 36050  	var len int32
 36051  	var pBlob uintptr
 36052  
 36053  	if objc != 3 {
 36054  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36055  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36056  		return TCL_ERROR
 36057  	}
 36058  
 36059  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36060  		return TCL_ERROR
 36061  	}
 36062  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36063  		return TCL_ERROR
 36064  	}
 36065  
 36066  	len = sqlite3.Xsqlite3_column_bytes(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36067  	pBlob = sqlite3.Xsqlite3_column_blob(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36068  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, pBlob, len))
 36069  	return TCL_OK
 36070  }
 36071  
 36072  func test_column_double(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36073  	bp := tls.Alloc(44)
 36074  	defer tls.Free(44)
 36075  
 36076  	var rVal float64
 36077  
 36078  	if objc != 3 {
 36079  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36080  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36081  		return TCL_ERROR
 36082  	}
 36083  
 36084  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36085  		return TCL_ERROR
 36086  	}
 36087  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36088  		return TCL_ERROR
 36089  	}
 36090  
 36091  	rVal = sqlite3.Xsqlite3_column_double(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36092  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewDoubleObj(tls, rVal))
 36093  	return TCL_OK
 36094  }
 36095  
 36096  func test_data_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36097  	bp := tls.Alloc(40)
 36098  	defer tls.Free(40)
 36099  
 36100  	if objc != 2 {
 36101  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36102  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36103  		return TCL_ERROR
 36104  	}
 36105  
 36106  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36107  		return TCL_ERROR
 36108  	}
 36109  
 36110  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_data_count(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))))
 36111  	return TCL_OK
 36112  }
 36113  
 36114  func test_stmt_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36115  	bp := tls.Alloc(44)
 36116  	defer tls.Free(44)
 36117  
 36118  	var xFunc uintptr
 36119  	var zRet uintptr
 36120  
 36121  	xFunc = clientData
 36122  	if objc != 3 {
 36123  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36124  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36125  		return TCL_ERROR
 36126  	}
 36127  
 36128  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36129  		return TCL_ERROR
 36130  	}
 36131  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36132  		return TCL_ERROR
 36133  	}
 36134  	zRet = (*struct {
 36135  		f func(*libc.TLS, uintptr, int32) uintptr
 36136  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36137  	if zRet != 0 {
 36138  		tcl.XTcl_SetResult(tls, interp, zRet, uintptr(0))
 36139  	}
 36140  	return TCL_OK
 36141  }
 36142  
 36143  func test_global_recover(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36144  	var rc int32
 36145  	if objc != 1 {
 36146  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36147  		return TCL_ERROR
 36148  	}
 36149  	rc = sqlite3.Xsqlite3_global_recover(tls)
 36150  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36151  	return TCL_OK
 36152  }
 36153  
 36154  func test_stmt_utf16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36155  	bp := tls.Alloc(44)
 36156  	defer tls.Free(44)
 36157  
 36158  	var pRet uintptr
 36159  	var zName16 uintptr
 36160  	var xFunc uintptr
 36161  
 36162  	xFunc = clientData
 36163  	if objc != 3 {
 36164  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36165  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36166  		return TCL_ERROR
 36167  	}
 36168  
 36169  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36170  		return TCL_ERROR
 36171  	}
 36172  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36173  		return TCL_ERROR
 36174  	}
 36175  
 36176  	zName16 = (*struct {
 36177  		f func(*libc.TLS, uintptr, int32) uintptr
 36178  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))
 36179  	if zName16 != 0 {
 36180  		var n int32
 36181  		var z uintptr = zName16
 36182  		for n = 0; *(*int8)(unsafe.Pointer(z + uintptr(n))) != 0 || *(*int8)(unsafe.Pointer(z + uintptr(n+1))) != 0; n = n + 2 {
 36183  		}
 36184  		pRet = tcl.XTcl_NewByteArrayObj(tls, zName16, n+2)
 36185  		tcl.XTcl_SetObjResult(tls, interp, pRet)
 36186  	}
 36187  
 36188  	return TCL_OK
 36189  }
 36190  
 36191  func test_stmt_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36192  	bp := tls.Alloc(44)
 36193  	defer tls.Free(44)
 36194  
 36195  	var xFunc uintptr
 36196  
 36197  	xFunc = clientData
 36198  	if objc != 3 {
 36199  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36200  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17649, 0))
 36201  		return TCL_ERROR
 36202  	}
 36203  
 36204  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36205  		return TCL_ERROR
 36206  	}
 36207  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 36208  		return TCL_ERROR
 36209  	}
 36210  
 36211  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*struct {
 36212  		f func(*libc.TLS, uintptr, int32) int32
 36213  	})(unsafe.Pointer(&struct{ uintptr }{xFunc})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*int32)(unsafe.Pointer(bp + 40)))))
 36214  	return TCL_OK
 36215  }
 36216  
 36217  func test_interrupt(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36218  	bp := tls.Alloc(40)
 36219  	defer tls.Free(40)
 36220  
 36221  	if argc != 2 {
 36222  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+15001, 0))
 36223  		return TCL_ERROR
 36224  	}
 36225  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36226  		return TCL_ERROR
 36227  	}
 36228  	sqlite3.Xsqlite3_interrupt(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 36229  	return TCL_OK
 36230  }
 36231  
 36232  func delete_function(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36233  	bp := tls.Alloc(40)
 36234  	defer tls.Free(40)
 36235  
 36236  	var rc int32
 36237  
 36238  	if argc != 3 {
 36239  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36240  			ts+17678, 0))
 36241  		return TCL_ERROR
 36242  	}
 36243  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36244  		return TCL_ERROR
 36245  	}
 36246  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), -1, SQLITE_UTF8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 36247  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36248  	return TCL_OK
 36249  }
 36250  
 36251  func delete_collation(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36252  	bp := tls.Alloc(40)
 36253  	defer tls.Free(40)
 36254  
 36255  	var rc int32
 36256  
 36257  	if argc != 3 {
 36258  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36259  			ts+17678, 0))
 36260  		return TCL_ERROR
 36261  	}
 36262  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+32) != 0 {
 36263  		return TCL_ERROR
 36264  	}
 36265  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(argv + 2*8)), SQLITE_UTF8, uintptr(0), uintptr(0))
 36266  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36267  	return TCL_OK
 36268  }
 36269  
 36270  func get_autocommit(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36271  	bp := tls.Alloc(94)
 36272  	defer tls.Free(94)
 36273  
 36274  	if argc != 2 {
 36275  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36276  			ts+15001, 0))
 36277  		return TCL_ERROR
 36278  	}
 36279  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+56) != 0 {
 36280  		return TCL_ERROR
 36281  	}
 36282  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+64, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3_get_autocommit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))))
 36283  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+64, 0))
 36284  	return TCL_OK
 36285  }
 36286  
 36287  func test_busy_timeout(tls *libc.TLS, clientData uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 36288  	bp := tls.Alloc(60)
 36289  	defer tls.Free(60)
 36290  
 36291  	var rc int32
 36292  
 36293  	if argc != 3 {
 36294  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 36295  			ts+15001, 0))
 36296  		return TCL_ERROR
 36297  	}
 36298  	if getDbPointer(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 36299  		return TCL_ERROR
 36300  	}
 36301  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 36302  		return TCL_ERROR
 36303  	}
 36304  	rc = sqlite3.Xsqlite3_busy_timeout(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 56)))
 36305  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 36306  	return TCL_OK
 36307  }
 36308  
 36309  func tcl_variable_type(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36310  	var pVar uintptr
 36311  	if objc != 2 {
 36312  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17696)
 36313  		return TCL_ERROR
 36314  	}
 36315  	pVar = tcl.XTcl_GetVar2Ex(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0), TCL_LEAVE_ERR_MSG)
 36316  	if pVar == uintptr(0) {
 36317  		return TCL_ERROR
 36318  	}
 36319  	if (*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr != 0 {
 36320  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*Tcl_ObjType)(unsafe.Pointer((*Tcl_Obj)(unsafe.Pointer(pVar)).FtypePtr)).Fname, -1))
 36321  	}
 36322  	return TCL_OK
 36323  }
 36324  
 36325  func test_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36326  	bp := tls.Alloc(4)
 36327  	defer tls.Free(4)
 36328  
 36329  	var amt int32
 36330  	if objc != 1 && objc != 2 {
 36331  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36332  		return TCL_ERROR
 36333  	}
 36334  	if objc == 2 {
 36335  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36336  			return TCL_ERROR
 36337  		}
 36338  	} else {
 36339  		*(*int32)(unsafe.Pointer(bp)) = -1
 36340  	}
 36341  	amt = sqlite3.Xsqlite3_release_memory(tls, *(*int32)(unsafe.Pointer(bp)))
 36342  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, amt))
 36343  	return TCL_OK
 36344  }
 36345  
 36346  func test_db_release_memory(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36347  	bp := tls.Alloc(8)
 36348  	defer tls.Free(8)
 36349  
 36350  	var rc int32
 36351  	if objc != 2 {
 36352  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36353  		return TCL_ERROR
 36354  	}
 36355  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36356  		return TCL_ERROR
 36357  	}
 36358  	rc = sqlite3.Xsqlite3_db_release_memory(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36359  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36360  	return TCL_OK
 36361  }
 36362  
 36363  func test_db_cacheflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36364  	bp := tls.Alloc(8)
 36365  	defer tls.Free(8)
 36366  
 36367  	var rc int32
 36368  	if objc != 2 {
 36369  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36370  		return TCL_ERROR
 36371  	}
 36372  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36373  		return TCL_ERROR
 36374  	}
 36375  	rc = sqlite3.Xsqlite3_db_cacheflush(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36376  	if rc != 0 {
 36377  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrStr(tls, rc), uintptr(0))
 36378  		return TCL_ERROR
 36379  	}
 36380  
 36381  	tcl.XTcl_ResetResult(tls, interp)
 36382  	return TCL_OK
 36383  }
 36384  
 36385  func test_system_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36386  	bp := tls.Alloc(8)
 36387  	defer tls.Free(8)
 36388  
 36389  	var iErrno int32
 36390  	if objc != 2 {
 36391  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 36392  		return TCL_ERROR
 36393  	}
 36394  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36395  		return TCL_ERROR
 36396  	}
 36397  	iErrno = sqlite3.Xsqlite3_system_errno(tls, *(*uintptr)(unsafe.Pointer(bp)))
 36398  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iErrno))
 36399  	return TCL_OK
 36400  }
 36401  
 36402  func test_db_filename(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36403  	bp := tls.Alloc(24)
 36404  	defer tls.Free(24)
 36405  
 36406  	var zDbName uintptr
 36407  	if objc != 3 {
 36408  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36409  		return TCL_ERROR
 36410  	}
 36411  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 36412  		return TCL_ERROR
 36413  	}
 36414  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36415  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3_db_filename(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbName), uintptr(0)))
 36416  	return TCL_OK
 36417  }
 36418  
 36419  func test_db_readonly(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36420  	bp := tls.Alloc(8)
 36421  	defer tls.Free(8)
 36422  
 36423  	var zDbName uintptr
 36424  	if objc != 3 {
 36425  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16225)
 36426  		return TCL_ERROR
 36427  	}
 36428  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 36429  		return TCL_ERROR
 36430  	}
 36431  	zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36432  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_db_readonly(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName)))
 36433  	return TCL_OK
 36434  }
 36435  
 36436  func test_soft_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36437  	bp := tls.Alloc(8)
 36438  	defer tls.Free(8)
 36439  
 36440  	var amt sqlite3_int64
 36441  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36442  	if objc != 1 && objc != 2 {
 36443  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36444  		return TCL_ERROR
 36445  	}
 36446  	if objc == 2 {
 36447  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36448  			return TCL_ERROR
 36449  		}
 36450  	}
 36451  	amt = sqlite3.Xsqlite3_soft_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36452  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36453  	return TCL_OK
 36454  }
 36455  
 36456  func test_hard_heap_limit(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36457  	bp := tls.Alloc(8)
 36458  	defer tls.Free(8)
 36459  
 36460  	var amt sqlite3_int64
 36461  	*(*Tcl_WideInt)(unsafe.Pointer(bp)) = int64(-1)
 36462  	if objc != 1 && objc != 2 {
 36463  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17705)
 36464  		return TCL_ERROR
 36465  	}
 36466  	if objc == 2 {
 36467  		if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 36468  			return TCL_ERROR
 36469  		}
 36470  	}
 36471  	amt = sqlite3.Xsqlite3_hard_heap_limit64(tls, *(*Tcl_WideInt)(unsafe.Pointer(bp)))
 36472  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, amt))
 36473  	return TCL_OK
 36474  }
 36475  
 36476  func test_thread_cleanup(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36477  	sqlite3.Xsqlite3_thread_cleanup(tls)
 36478  	return TCL_OK
 36479  }
 36480  
 36481  func test_pager_refcounts(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 36482  	bp := tls.Alloc(40)
 36483  	defer tls.Free(40)
 36484  
 36485  	var i int32
 36486  	var v int32
 36487  	var a uintptr
 36488  	var pResult uintptr
 36489  
 36490  	if objc != 2 {
 36491  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36492  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36493  		return TCL_ERROR
 36494  	}
 36495  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36496  		return TCL_ERROR
 36497  	}
 36498  	pResult = tcl.XTcl_NewObj(tls)
 36499  	for i = 0; i < (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FnDb; i++ {
 36500  		if (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt == uintptr(0) {
 36501  			v = -1
 36502  		} else {
 36503  			sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 36504  			a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FaDb+uintptr(i)*32)).FpBt))
 36505  			v = *(*int32)(unsafe.Pointer(a))
 36506  			sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).Fmutex)
 36507  		}
 36508  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, v))
 36509  	}
 36510  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 36511  	return TCL_OK
 36512  }
 36513  
 36514  func working_64bit_int(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36515  	var pTestObj uintptr
 36516  	var working int32 = 0
 36517  
 36518  	pTestObj = tcl.XTcl_NewWideIntObj(tls, int64(1000000)*int64(1234567890))
 36519  	working = libc.Bool32(libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, pTestObj), ts+17709) == 0)
 36520  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 36521  		var _objPtr uintptr = pTestObj
 36522  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 36523  			tcl.XTclFreeObj(tls, _objPtr)
 36524  		}
 36525  	}
 36526  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(working != 0)))
 36527  	return TCL_OK
 36528  }
 36529  
 36530  func vfs_unlink_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36531  	bp := tls.Alloc(496)
 36532  	defer tls.Free(496)
 36533  
 36534  	var i int32
 36535  	var pMain uintptr
 36536  
 36537  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(0))
 36538  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 36539  	(*sqlite3_vfs)(unsafe.Pointer(bp + 168)).FzName = ts + 17732
 36540  
 36541  	pMain = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36542  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 36543  
 36544  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 0)
 36545  
 36546  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 36547  
 36548  	sqlite3.Xsqlite3_vfs_register(tls, bp+168, 1)
 36549  
 36550  	if pMain != 0 {
 36551  		sqlite3.Xsqlite3_vfs_register(tls, pMain, 1)
 36552  
 36553  	}
 36554  
 36555  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 36556  		*(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36557  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 36558  			sqlite3.Xsqlite3_vfs_unregister(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)))
 36559  
 36560  		}
 36561  	}
 36562  
 36563  	sqlite3.Xsqlite3_vfs_register(tls, pMain, 0)
 36564  
 36565  	sqlite3.Xsqlite3_vfs_unregister(tls, pMain)
 36566  
 36567  	for i = int32(uint64(unsafe.Sizeof([20]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))) - uint64(1)); i >= 0; i-- {
 36568  		if *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)) != 0 {
 36569  			sqlite3.Xsqlite3_vfs_register(tls, *(*uintptr)(unsafe.Pointer(bp + 336 + uintptr(i)*8)), 1)
 36570  
 36571  		}
 36572  	}
 36573  
 36574  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 36575  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 36576  
 36577  	sqlite3.Xsqlite3_vfs_unregister(tls, bp)
 36578  	sqlite3.Xsqlite3_vfs_unregister(tls, bp+168)
 36579  
 36580  	return TCL_OK
 36581  }
 36582  
 36583  func vfs_initfail_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36584  	bp := tls.Alloc(168)
 36585  	defer tls.Free(168)
 36586  
 36587  	(*sqlite3_vfs)(unsafe.Pointer(bp)).FzName = ts + 17726
 36588  
 36589  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36590  		return TCL_ERROR
 36591  	}
 36592  	sqlite3.Xsqlite3_vfs_register(tls, bp, 0)
 36593  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36594  		return TCL_ERROR
 36595  	}
 36596  	sqlite3.Xsqlite3_vfs_register(tls, bp, 1)
 36597  	if sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)) != 0 {
 36598  		return TCL_ERROR
 36599  	}
 36600  	return TCL_OK
 36601  }
 36602  
 36603  var apVfs [20]uintptr
 36604  var nVfs int32 = 0
 36605  
 36606  func vfs_unregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36607  	var i int32
 36608  	for i = 0; i < int32(uint64(unsafe.Sizeof(apVfs))/uint64(unsafe.Sizeof(uintptr(0)))); i++ {
 36609  		apVfs[i] = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 36610  		if apVfs[i] == uintptr(0) {
 36611  			break
 36612  		}
 36613  		sqlite3.Xsqlite3_vfs_unregister(tls, apVfs[i])
 36614  	}
 36615  	nVfs = i
 36616  	return TCL_OK
 36617  }
 36618  
 36619  func vfs_reregister_all(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36620  	var i int32
 36621  	for i = nVfs - 1; i >= 0; i-- {
 36622  		sqlite3.Xsqlite3_vfs_register(tls, apVfs[i], 1)
 36623  	}
 36624  	return TCL_OK
 36625  }
 36626  
 36627  func file_control_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36628  	bp := tls.Alloc(44)
 36629  	defer tls.Free(44)
 36630  
 36631  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 36632  
 36633  	var rc int32
 36634  	_ = rc
 36635  
 36636  	if objc != 2 {
 36637  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36638  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36639  		return TCL_ERROR
 36640  	}
 36641  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36642  		return TCL_ERROR
 36643  	}
 36644  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), uintptr(0), 0, bp+40)
 36645  
 36646  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+17738, SQLITE_FCNTL_LOCKSTATE, bp+40)
 36647  
 36648  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+85, -1, bp+40)
 36649  
 36650  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), ts+8931, -1, bp+40)
 36651  
 36652  	return TCL_OK
 36653  }
 36654  
 36655  func file_control_lasterrno_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36656  	bp := tls.Alloc(76)
 36657  	defer tls.Free(76)
 36658  
 36659  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 36660  
 36661  	var rc int32
 36662  
 36663  	if objc != 2 {
 36664  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36665  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+15001, 0))
 36666  		return TCL_ERROR
 36667  	}
 36668  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36669  		return TCL_ERROR
 36670  	}
 36671  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_LAST_ERRNO, bp+72)
 36672  	if rc != 0 {
 36673  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36674  		return TCL_ERROR
 36675  	}
 36676  	if *(*int32)(unsafe.Pointer(bp + 72)) != 0 {
 36677  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17751,
 36678  			tcl.XTcl_GetStringFromObj(tls, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 72))), uintptr(0)), ts+4894, 0))
 36679  		return TCL_ERROR
 36680  	}
 36681  	return TCL_OK
 36682  }
 36683  
 36684  func file_control_data_version(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36685  	bp := tls.Alloc(120)
 36686  	defer tls.Free(120)
 36687  
 36688  	var zDb uintptr
 36689  
 36690  	var rc int32
 36691  
 36692  	if objc != 3 && objc != 2 {
 36693  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17779)
 36694  		return TCL_ERROR
 36695  	}
 36696  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 36697  		return TCL_ERROR
 36698  	}
 36699  	if objc == 3 {
 36700  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36701  	} else {
 36702  		zDb = uintptr(0)
 36703  	}
 36704  
 36705  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, SQLITE_FCNTL_DATA_VERSION, bp+16)
 36706  	if rc != 0 {
 36707  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36708  		return TCL_ERROR
 36709  	} else {
 36710  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+20, ts+17791, libc.VaList(bp, *(*uint32)(unsafe.Pointer(bp + 16))))
 36711  		tcl.XTcl_SetResult(tls, interp, bp+20, uintptr(1))
 36712  		return TCL_OK
 36713  	}
 36714  	return int32(0)
 36715  }
 36716  
 36717  func file_control_chunksize_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36718  	bp := tls.Alloc(12)
 36719  	defer tls.Free(12)
 36720  
 36721  	var zDb uintptr
 36722  
 36723  	var rc int32
 36724  
 36725  	if objc != 4 {
 36726  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 36727  		return TCL_ERROR
 36728  	}
 36729  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36730  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 36731  		return TCL_ERROR
 36732  	}
 36733  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36734  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 36735  		zDb = uintptr(0)
 36736  	}
 36737  
 36738  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_CHUNK_SIZE, bp+8)
 36739  	if rc != 0 {
 36740  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36741  		return TCL_ERROR
 36742  	}
 36743  	return TCL_OK
 36744  }
 36745  
 36746  func file_control_sizehint_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36747  	bp := tls.Alloc(16)
 36748  	defer tls.Free(16)
 36749  
 36750  	var zDb uintptr
 36751  
 36752  	var rc int32
 36753  
 36754  	if objc != 4 {
 36755  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17794)
 36756  		return TCL_ERROR
 36757  	}
 36758  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36759  		tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8) != 0 {
 36760  		return TCL_ERROR
 36761  	}
 36762  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36763  	if int32(*(*int8)(unsafe.Pointer(zDb))) == 0 {
 36764  		zDb = uintptr(0)
 36765  	}
 36766  
 36767  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb, SQLITE_FCNTL_SIZE_HINT, bp+8)
 36768  	if rc != 0 {
 36769  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36770  		return TCL_ERROR
 36771  	}
 36772  	return TCL_OK
 36773  }
 36774  
 36775  func file_control_lockproxy_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36776  	bp := tls.Alloc(40)
 36777  	defer tls.Free(40)
 36778  
 36779  	if objc != 3 {
 36780  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36781  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17809, 0))
 36782  		return TCL_ERROR
 36783  	}
 36784  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36785  		return TCL_ERROR
 36786  	}
 36787  
 36788  	return TCL_OK
 36789  }
 36790  
 36791  func file_control_persist_wal(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36792  	bp := tls.Alloc(176)
 36793  	defer tls.Free(176)
 36794  
 36795  	var rc int32
 36796  
 36797  	if objc != 3 {
 36798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36799  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 36800  		return TCL_ERROR
 36801  	}
 36802  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36803  		return TCL_ERROR
 36804  	}
 36805  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 36806  		return TCL_ERROR
 36807  	}
 36808  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_PERSIST_WAL, bp+72)
 36809  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 36810  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 36811  	return TCL_OK
 36812  }
 36813  
 36814  func file_control_powersafe_overwrite(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36815  	bp := tls.Alloc(176)
 36816  	defer tls.Free(176)
 36817  
 36818  	var rc int32
 36819  
 36820  	if objc != 3 {
 36821  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36822  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17817, 0))
 36823  		return TCL_ERROR
 36824  	}
 36825  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 36826  		return TCL_ERROR
 36827  	}
 36828  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 36829  		return TCL_ERROR
 36830  	}
 36831  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), uintptr(0), SQLITE_FCNTL_POWERSAFE_OVERWRITE, bp+72)
 36832  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+17826, libc.VaList(bp+32, rc, *(*int32)(unsafe.Pointer(bp + 72))))
 36833  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+76, uintptr(0)))
 36834  	return TCL_OK
 36835  }
 36836  
 36837  func file_control_vfsname(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36838  	bp := tls.Alloc(64)
 36839  	defer tls.Free(64)
 36840  
 36841  	var zDbName uintptr = ts + 85
 36842  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 36843  
 36844  	if objc != 2 && objc != 3 {
 36845  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36846  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36847  		return TCL_ERROR
 36848  	}
 36849  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36850  		return TCL_ERROR
 36851  	}
 36852  	if objc == 3 {
 36853  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36854  	}
 36855  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_VFSNAME, bp+56)
 36856  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 36857  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 36858  	return TCL_OK
 36859  }
 36860  
 36861  func file_control_reservebytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36862  	bp := tls.Alloc(12)
 36863  	defer tls.Free(12)
 36864  
 36865  	var zDbName uintptr = ts + 85
 36866  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 36867  	var rc int32
 36868  
 36869  	if objc != 3 {
 36870  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17844)
 36871  		return TCL_ERROR
 36872  	}
 36873  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 36874  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 36875  		return TCL_ERROR
 36876  	}
 36877  
 36878  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbName, SQLITE_FCNTL_RESERVE_BYTES, bp+8)
 36879  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 36880  	return TCL_OK
 36881  }
 36882  
 36883  func file_control_tempfilename(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36884  	bp := tls.Alloc(64)
 36885  	defer tls.Free(64)
 36886  
 36887  	var zDbName uintptr = ts + 85
 36888  	*(*uintptr)(unsafe.Pointer(bp + 56)) = uintptr(0)
 36889  
 36890  	if objc != 2 && objc != 3 {
 36891  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36892  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36893  		return TCL_ERROR
 36894  	}
 36895  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 36896  		return TCL_ERROR
 36897  	}
 36898  	if objc == 3 {
 36899  		zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36900  	}
 36901  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), zDbName, SQLITE_FCNTL_TEMPFILENAME, bp+56)
 36902  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, *(*uintptr)(unsafe.Pointer(bp + 56)), uintptr(0)))
 36903  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 56)))
 36904  	return TCL_OK
 36905  }
 36906  
 36907  func file_control_external_reader(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36908  	bp := tls.Alloc(44)
 36909  	defer tls.Free(44)
 36910  
 36911  	var zName uintptr = ts + 85
 36912  	*(*int32)(unsafe.Pointer(bp + 40)) = 0
 36913  	var rc int32 = SQLITE_OK
 36914  
 36915  	if objc != 2 && objc != 3 {
 36916  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36917  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17832, 0))
 36918  		return TCL_ERROR
 36919  	}
 36920  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 36921  		return TCL_ERROR
 36922  	}
 36923  	if objc == 3 {
 36924  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36925  	}
 36926  	rc = sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, SQLITE_FCNTL_EXTERNAL_READER, bp+40)
 36927  	if rc != SQLITE_OK {
 36928  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 36929  		return TCL_ERROR
 36930  	}
 36931  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 40))))
 36932  	return TCL_OK
 36933  }
 36934  
 36935  func vfs_list(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36936  	var pVfs uintptr
 36937  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 36938  	if objc != 1 {
 36939  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 36940  		return TCL_ERROR
 36941  	}
 36942  	for pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)); pVfs != 0; pVfs = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpNext {
 36943  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 36944  	}
 36945  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 36946  	return TCL_OK
 36947  }
 36948  
 36949  func test_limit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 36950  	bp := tls.Alloc(68)
 36951  	defer tls.Free(68)
 36952  
 36953  	var rc int32
 36954  	var i int32
 36955  	var id int32 = 0
 36956  
 36957  	var zId uintptr
 36958  
 36959  	if objc != 4 {
 36960  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 36961  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+17849, 0))
 36962  		return TCL_ERROR
 36963  	}
 36964  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 36965  		return TCL_ERROR
 36966  	}
 36967  	zId = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 36968  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 36969  		FzName       uintptr
 36970  		Fid          int32
 36971  		F__ccgo_pad1 [4]byte
 36972  	}{})); i++ {
 36973  		if libc.Xstrcmp(tls, zId, aId[i].FzName) == 0 {
 36974  			id = aId[i].Fid
 36975  			break
 36976  		}
 36977  	}
 36978  	if uint64(i) >= uint64(unsafe.Sizeof(aId))/uint64(unsafe.Sizeof(struct {
 36979  		FzName       uintptr
 36980  		Fid          int32
 36981  		F__ccgo_pad1 [4]byte
 36982  	}{})) {
 36983  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+17862, zId, uintptr(0)))
 36984  		return TCL_ERROR
 36985  	}
 36986  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 36987  		return TCL_ERROR
 36988  	}
 36989  	rc = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), id, *(*int32)(unsafe.Pointer(bp + 64)))
 36990  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 36991  	return TCL_OK
 36992  }
 36993  
 36994  var aId = [14]struct {
 36995  	FzName       uintptr
 36996  	Fid          int32
 36997  	F__ccgo_pad1 [4]byte
 36998  }{
 36999  	{FzName: ts + 17883},
 37000  	{FzName: ts + 17903, Fid: SQLITE_LIMIT_SQL_LENGTH},
 37001  	{FzName: ts + 17927, Fid: SQLITE_LIMIT_COLUMN},
 37002  	{FzName: ts + 17947, Fid: SQLITE_LIMIT_EXPR_DEPTH},
 37003  	{FzName: ts + 17971, Fid: SQLITE_LIMIT_COMPOUND_SELECT},
 37004  	{FzName: ts + 18000, Fid: SQLITE_LIMIT_VDBE_OP},
 37005  	{FzName: ts + 18021, Fid: SQLITE_LIMIT_FUNCTION_ARG},
 37006  	{FzName: ts + 18047, Fid: SQLITE_LIMIT_ATTACHED},
 37007  	{FzName: ts + 18069, Fid: SQLITE_LIMIT_LIKE_PATTERN_LENGTH},
 37008  	{FzName: ts + 18102, Fid: SQLITE_LIMIT_VARIABLE_NUMBER},
 37009  	{FzName: ts + 18131, Fid: SQLITE_LIMIT_TRIGGER_DEPTH},
 37010  	{FzName: ts + 18158, Fid: SQLITE_LIMIT_WORKER_THREADS},
 37011  	{FzName: ts + 18186, Fid: -1},
 37012  	{FzName: ts + 18208, Fid: SQLITE_LIMIT_WORKER_THREADS + 1},
 37013  }
 37014  
 37015  func save_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37016  	var rc int32 = sqlite3.Xsqlite3_test_control(tls, 9999, 0)
 37017  	_ = rc
 37018  
 37019  	rc = sqlite3.Xsqlite3_test_control(tls, -1, 0)
 37020  
 37021  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SAVE, 0)
 37022  	return TCL_OK
 37023  }
 37024  
 37025  func restore_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37026  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_RESTORE, 0)
 37027  	return TCL_OK
 37028  }
 37029  
 37030  func reset_prng_state(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37031  	sqlite3.Xsqlite3_randomness(tls, 0, uintptr(0))
 37032  	return TCL_OK
 37033  }
 37034  
 37035  func prng_seed(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37036  	bp := tls.Alloc(32)
 37037  	defer tls.Free(32)
 37038  
 37039  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 37040  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 37041  	if objc != 2 && objc != 3 {
 37042  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18228)
 37043  		return TCL_ERROR
 37044  	}
 37045  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 37046  		return TCL_ERROR
 37047  	}
 37048  	if objc == 3 && getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+24) != 0 {
 37049  		return TCL_ERROR
 37050  	}
 37051  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PRNG_SEED, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(bp + 24))))
 37052  	return TCL_OK
 37053  }
 37054  
 37055  func extra_schema_checks(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37056  	bp := tls.Alloc(12)
 37057  	defer tls.Free(12)
 37058  
 37059  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 37060  	if objc != 2 {
 37061  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 37062  		return TCL_ERROR
 37063  	}
 37064  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 37065  		return TCL_ERROR
 37066  	}
 37067  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_EXTRA_SCHEMA_CHECKS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 37068  	return TCL_OK
 37069  }
 37070  
 37071  func database_may_be_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37072  	bp := tls.Alloc(8)
 37073  	defer tls.Free(8)
 37074  
 37075  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 0))
 37076  	return TCL_OK
 37077  }
 37078  
 37079  func database_never_corrupt(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37080  	bp := tls.Alloc(8)
 37081  	defer tls.Free(8)
 37082  
 37083  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_NEVER_CORRUPT, libc.VaList(bp, 1))
 37084  	return TCL_OK
 37085  }
 37086  
 37087  func test_pcache_stats(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37088  	bp := tls.Alloc(16)
 37089  	defer tls.Free(16)
 37090  
 37091  	var pRet uintptr
 37092  
 37093  	sqlite3.Xsqlite3PcacheStats(tls, bp, bp+4, bp+8, bp+12)
 37094  
 37095  	pRet = tcl.XTcl_NewObj(tls)
 37096  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18246, -1))
 37097  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp))))
 37098  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18254, -1))
 37099  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4))))
 37100  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18258, -1))
 37101  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 37102  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+18262, -1))
 37103  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 37104  
 37105  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37106  
 37107  	return TCL_OK
 37108  }
 37109  
 37110  func test_unlock_notify_cb(tls *libc.TLS, aArg uintptr, nArg int32) {
 37111  	var ii int32
 37112  	for ii = 0; ii < nArg; ii++ {
 37113  		tcl.XTcl_EvalEx(tls, *(*uintptr)(unsafe.Pointer(aArg + uintptr(ii)*8)), ts+13692, -1, TCL_EVAL_GLOBAL)
 37114  	}
 37115  }
 37116  
 37117  func test_unlock_notify(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37118  	bp := tls.Alloc(8)
 37119  	defer tls.Free(8)
 37120  
 37121  	var rc int32
 37122  
 37123  	if objc != 2 {
 37124  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37125  		return TCL_ERROR
 37126  	}
 37127  
 37128  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37129  		return TCL_ERROR
 37130  	}
 37131  	rc = sqlite3.Xsqlite3_unlock_notify(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*uintptr)(unsafe.Pointer(&struct {
 37132  		f func(*libc.TLS, uintptr, int32)
 37133  	}{test_unlock_notify_cb})), interp)
 37134  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37135  	return TCL_OK
 37136  }
 37137  
 37138  func test_wal_checkpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37139  	bp := tls.Alloc(8)
 37140  	defer tls.Free(8)
 37141  
 37142  	var zDb uintptr = uintptr(0)
 37143  
 37144  	var rc int32
 37145  
 37146  	if objc != 3 && objc != 2 {
 37147  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18273)
 37148  		return TCL_ERROR
 37149  	}
 37150  
 37151  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37152  		return TCL_ERROR
 37153  	}
 37154  	if objc == 3 {
 37155  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37156  	}
 37157  	rc = sqlite3.Xsqlite3_wal_checkpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 37158  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37159  	return TCL_OK
 37160  }
 37161  
 37162  func test_wal_checkpoint_v2(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37163  	bp := tls.Alloc(96)
 37164  	defer tls.Free(96)
 37165  
 37166  	var zDb uintptr = uintptr(0)
 37167  
 37168  	var rc int32
 37169  
 37170  	*(*int32)(unsafe.Pointer(bp + 88)) = -555
 37171  	*(*int32)(unsafe.Pointer(bp + 92)) = -555
 37172  	var pRet uintptr
 37173  
 37174  	*(*[5]uintptr)(unsafe.Pointer(bp + 48)) = [5]uintptr{ts + 18283, ts + 18291, ts + 18296, ts + 18304, uintptr(0)}
 37175  
 37176  	if objc != 3 && objc != 4 {
 37177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18313)
 37178  		return TCL_ERROR
 37179  	}
 37180  
 37181  	if objc == 4 {
 37182  		zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37183  	}
 37184  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 || TCL_OK != tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) &&
 37185  		TCL_OK != tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+48, int32(unsafe.Sizeof(uintptr(0))), ts+18328, 0, bp+40) {
 37186  		return TCL_ERROR
 37187  	}
 37188  
 37189  	rc = sqlite3.Xsqlite3_wal_checkpoint_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zDb, *(*int32)(unsafe.Pointer(bp + 40)), bp+88, bp+92)
 37190  	if rc != SQLITE_OK && rc != SQLITE_BUSY {
 37191  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37192  		tcl.XTcl_ResetResult(tls, interp)
 37193  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErrCode, ts+9645, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0))
 37194  		return TCL_ERROR
 37195  	}
 37196  
 37197  	pRet = tcl.XTcl_NewObj(tls)
 37198  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, func() int32 {
 37199  		if rc == SQLITE_BUSY {
 37200  			return 1
 37201  		}
 37202  		return 0
 37203  	}()))
 37204  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 88))))
 37205  	tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 92))))
 37206  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 37207  
 37208  	return TCL_OK
 37209  }
 37210  
 37211  func test_wal_autocheckpoint(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37212  	bp := tls.Alloc(12)
 37213  	defer tls.Free(12)
 37214  
 37215  	var rc int32
 37216  
 37217  	if objc != 3 {
 37218  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18333)
 37219  		return TCL_ERROR
 37220  	}
 37221  
 37222  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 37223  		tcl.XTcl_GetIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 37224  		return TCL_ERROR
 37225  	}
 37226  
 37227  	rc = sqlite3.Xsqlite3_wal_autocheckpoint(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)))
 37228  	tcl.XTcl_ResetResult(tls, interp)
 37229  	if rc != SQLITE_OK {
 37230  		var zErrCode uintptr = sqlite3.Xsqlite3ErrName(tls, rc)
 37231  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zErrCode, -1))
 37232  		return TCL_ERROR
 37233  	}
 37234  
 37235  	return TCL_OK
 37236  }
 37237  
 37238  type LogCallback = struct {
 37239  	FpInterp uintptr
 37240  	FpObj    uintptr
 37241  }
 37242  
 37243  var logcallback = LogCallback{}
 37244  
 37245  func xLogcallback(tls *libc.TLS, unused uintptr, err int32, zMsg uintptr) {
 37246  	var pNew uintptr = tcl.XTcl_DuplicateObj(tls, logcallback.FpObj)
 37247  	(*Tcl_Obj)(unsafe.Pointer(pNew)).FrefCount++
 37248  	tcl.XTcl_ListObjAppendElement(tls,
 37249  		uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, err), -1))
 37250  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pNew, tcl.XTcl_NewStringObj(tls, zMsg, -1))
 37251  	tcl.XTcl_EvalObjEx(tls, logcallback.FpInterp, pNew, TCL_EVAL_GLOBAL|TCL_EVAL_DIRECT)
 37252  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37253  		var _objPtr uintptr = pNew
 37254  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37255  			tcl.XTclFreeObj(tls, _objPtr)
 37256  		}
 37257  	}
 37258  }
 37259  
 37260  func test_sqlite3_log(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37261  	bp := tls.Alloc(32)
 37262  	defer tls.Free(32)
 37263  
 37264  	if objc > 2 {
 37265  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10187)
 37266  		return TCL_ERROR
 37267  	}
 37268  	if logcallback.FpObj != 0 {
 37269  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 37270  			var _objPtr uintptr = logcallback.FpObj
 37271  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 37272  				tcl.XTclFreeObj(tls, _objPtr)
 37273  			}
 37274  		}
 37275  		logcallback.FpObj = uintptr(0)
 37276  		logcallback.FpInterp = uintptr(0)
 37277  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp, uintptr(0), uintptr(0)))
 37278  	}
 37279  	if objc > 1 {
 37280  		logcallback.FpObj = *(*uintptr)(unsafe.Pointer(objv + 1*8))
 37281  		(*Tcl_Obj)(unsafe.Pointer(logcallback.FpObj)).FrefCount++
 37282  		logcallback.FpInterp = interp
 37283  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOG, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct {
 37284  			f func(*libc.TLS, uintptr, int32, uintptr)
 37285  		}{xLogcallback})), uintptr(0)))
 37286  	}
 37287  	return TCL_OK
 37288  }
 37289  
 37290  func runAsObjProc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37291  	bp := tls.Alloc(112)
 37292  	defer tls.Free(112)
 37293  
 37294  	if objc < 2 {
 37295  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18342)
 37296  		return TCL_ERROR
 37297  	}
 37298  	if !(tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0) {
 37299  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14859,
 37300  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37301  		return TCL_ERROR
 37302  	}
 37303  	if (*Tcl_CmdInfo)(unsafe.Pointer(bp+48)).FobjProc == uintptr(0) {
 37304  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18354,
 37305  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 37306  		return TCL_ERROR
 37307  	}
 37308  	return (*struct {
 37309  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 37310  	})(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)*8)
 37311  }
 37312  
 37313  func printExplainQueryPlan(tls *libc.TLS, pStmt uintptr) int32 {
 37314  	bp := tls.Alloc(48)
 37315  	defer tls.Free(48)
 37316  
 37317  	var zSql uintptr
 37318  	var zExplain uintptr
 37319  
 37320  	var rc int32
 37321  
 37322  	zSql = sqlite3.Xsqlite3_sql(tls, pStmt)
 37323  	if zSql == uintptr(0) {
 37324  		return SQLITE_ERROR
 37325  	}
 37326  
 37327  	zExplain = sqlite3.Xsqlite3_mprintf(tls, ts+330, libc.VaList(bp, zSql))
 37328  	if zExplain == uintptr(0) {
 37329  		return SQLITE_NOMEM
 37330  	}
 37331  
 37332  	rc = sqlite3.Xsqlite3_prepare_v2(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt), zExplain, -1, bp+40, uintptr(0))
 37333  	sqlite3.Xsqlite3_free(tls, zExplain)
 37334  	if rc != SQLITE_OK {
 37335  		return rc
 37336  	}
 37337  
 37338  	for SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 40))) {
 37339  		var iSelectid int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 0)
 37340  		var iOrder int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 1)
 37341  		var iFrom int32 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 2)
 37342  		var zDetail uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), 3)
 37343  
 37344  		libc.Xprintf(tls, ts+18379, libc.VaList(bp+8, iSelectid, iOrder, iFrom, zDetail))
 37345  	}
 37346  
 37347  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 40)))
 37348  }
 37349  
 37350  func test_print_eqp(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37351  	bp := tls.Alloc(8)
 37352  	defer tls.Free(8)
 37353  
 37354  	var rc int32
 37355  
 37356  	if objc != 2 {
 37357  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 37358  		return TCL_ERROR
 37359  	}
 37360  	if getStmtPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 37361  		return TCL_ERROR
 37362  	}
 37363  	rc = printExplainQueryPlan(tls, *(*uintptr)(unsafe.Pointer(bp)))
 37364  
 37365  	libc.Xfflush(tls, uintptr(unsafe.Pointer(&libc.X__sF))+1*152)
 37366  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 37367  	return TCL_OK
 37368  }
 37369  
 37370  func testLocaltime(tls *libc.TLS, aliasT uintptr, aliasTM uintptr) int32 {
 37371  	var t time_t = *(*time_t)(unsafe.Pointer(aliasT))
 37372  	var pTm uintptr = aliasTM
 37373  	var altT time_t
 37374  	var iJD sqlite3_int64
 37375  	var Z int32
 37376  	var A int32
 37377  	var B int32
 37378  	var C int32
 37379  	var D int32
 37380  	var E int32
 37381  	var X1 int32
 37382  	var S int32
 37383  
 37384  	if t/int64(86400)&int64(1) != 0 {
 37385  		altT = t + int64(1800)
 37386  	} else {
 37387  		altT = t - int64(1800)
 37388  	}
 37389  	iJD = altT + 210866760000
 37390  	Z = int32((iJD + int64(43200)) / int64(86400))
 37391  	A = libc.Int32FromFloat64((float64(Z) - 1867216.25) / 36524.25)
 37392  	A = Z + 1 + A - A/4
 37393  	B = A + 1524
 37394  	C = libc.Int32FromFloat64((float64(B) - 122.1) / 365.25)
 37395  	D = 36525 * (C & 32767) / 100
 37396  	E = libc.Int32FromFloat64(float64(B-D) / 30.6001)
 37397  	X1 = libc.Int32FromFloat64(30.6001 * float64(E))
 37398  	(*tm)(unsafe.Pointer(pTm)).Ftm_mday = B - D - X1
 37399  	(*tm)(unsafe.Pointer(pTm)).Ftm_mon = func() int32 {
 37400  		if E < 14 {
 37401  			return E - 2
 37402  		}
 37403  		return E - 14
 37404  	}()
 37405  	(*tm)(unsafe.Pointer(pTm)).Ftm_year = func() int32 {
 37406  		if (*tm)(unsafe.Pointer(pTm)).Ftm_mon > 1 {
 37407  			return C - 4716
 37408  		}
 37409  		return C - 4715
 37410  	}() - 1900
 37411  	S = int32((iJD + int64(43200)) % int64(86400))
 37412  	(*tm)(unsafe.Pointer(pTm)).Ftm_hour = S / 3600
 37413  	(*tm)(unsafe.Pointer(pTm)).Ftm_min = S / 60 % 60
 37414  	(*tm)(unsafe.Pointer(pTm)).Ftm_sec = S % 60
 37415  	return libc.Bool32(t == int64(959609760))
 37416  }
 37417  
 37418  func test_test_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37419  	bp := tls.Alloc(192)
 37420  	defer tls.Free(192)
 37421  
 37422  	*(*[4]Verb)(unsafe.Pointer(bp + 72)) = [4]Verb{
 37423  		{FzName: ts + 18392, Fi: SQLITE_TESTCTRL_LOCALTIME_FAULT},
 37424  		{FzName: ts + 18424, Fi: SQLITE_TESTCTRL_SORTER_MMAP},
 37425  		{FzName: ts + 18452, Fi: SQLITE_TESTCTRL_IMPOSTER},
 37426  		{FzName: ts + 18477, Fi: SQLITE_TESTCTRL_INTERNAL_FUNCTIONS},
 37427  	}
 37428  
 37429  	var iFlag int32
 37430  	var rc int32
 37431  
 37432  	if objc < 2 {
 37433  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18512)
 37434  		return TCL_ERROR
 37435  	}
 37436  
 37437  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 37438  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+72, int32(unsafe.Sizeof(Verb{})), ts+18525, 0, bp+136)
 37439  	if rc != TCL_OK {
 37440  		return rc
 37441  	}
 37442  
 37443  	iFlag = (*Verb)(unsafe.Pointer(bp + 72 + uintptr(*(*int32)(unsafe.Pointer(bp + 136)))*16)).Fi
 37444  	switch iFlag {
 37445  	case SQLITE_TESTCTRL_INTERNAL_FUNCTIONS:
 37446  		{
 37447  			*(*uintptr)(unsafe.Pointer(bp + 144)) = uintptr(0)
 37448  			if objc != 3 {
 37449  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 37450  				return TCL_ERROR
 37451  			}
 37452  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+144) != 0 {
 37453  				return TCL_ERROR
 37454  			}
 37455  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_INTERNAL_FUNCTIONS, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(bp + 144))))
 37456  			break
 37457  
 37458  		}
 37459  	case SQLITE_TESTCTRL_LOCALTIME_FAULT:
 37460  		{
 37461  			if objc != 3 {
 37462  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18530)
 37463  				return TCL_ERROR
 37464  			}
 37465  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+152) != 0 {
 37466  				return TCL_ERROR
 37467  			}
 37468  			sqlite3.Xsqlite3_test_control(tls, iFlag, libc.VaList(bp+8, *(*int32)(unsafe.Pointer(bp + 152)), *(*uintptr)(unsafe.Pointer(&struct {
 37469  				f func(*libc.TLS, uintptr, uintptr) int32
 37470  			}{testLocaltime}))))
 37471  			break
 37472  
 37473  		}
 37474  
 37475  	case SQLITE_TESTCTRL_SORTER_MMAP:
 37476  		{
 37477  			if objc != 4 {
 37478  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18536)
 37479  				return TCL_ERROR
 37480  			}
 37481  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+160) != 0 {
 37482  				return TCL_ERROR
 37483  			}
 37484  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+168) != 0 {
 37485  				return TCL_ERROR
 37486  			}
 37487  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_SORTER_MMAP, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(bp + 160)), *(*int32)(unsafe.Pointer(bp + 168))))
 37488  			break
 37489  
 37490  		}
 37491  
 37492  	case SQLITE_TESTCTRL_IMPOSTER:
 37493  		{
 37494  			var zDbName uintptr
 37495  
 37496  			if objc != 6 {
 37497  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+18545)
 37498  				return TCL_ERROR
 37499  			}
 37500  			if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+176) != 0 {
 37501  				return TCL_ERROR
 37502  			}
 37503  			zDbName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 37504  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+184) != 0 {
 37505  				return TCL_ERROR
 37506  			}
 37507  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+188) != 0 {
 37508  				return TCL_ERROR
 37509  			}
 37510  			sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_IMPOSTER, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 176)), zDbName, *(*int32)(unsafe.Pointer(bp + 184)), *(*int32)(unsafe.Pointer(bp + 188))))
 37511  			break
 37512  
 37513  		}
 37514  	}
 37515  
 37516  	tcl.XTcl_ResetResult(tls, interp)
 37517  	return TCL_OK
 37518  }
 37519  
 37520  type Verb = struct {
 37521  	FzName       uintptr
 37522  	Fi           int32
 37523  	F__ccgo_pad1 [4]byte
 37524  }
 37525  
 37526  type rusage = struct {
 37527  	Fru_utime struct {
 37528  		Ftv_sec  time_t
 37529  		Ftv_usec suseconds_t
 37530  	}
 37531  	Fru_stime struct {
 37532  		Ftv_sec  time_t
 37533  		Ftv_usec suseconds_t
 37534  	}
 37535  	Fru_maxrss   int64
 37536  	Fru_ixrss    int64
 37537  	Fru_idrss    int64
 37538  	Fru_isrss    int64
 37539  	Fru_minflt   int64
 37540  	Fru_majflt   int64
 37541  	Fru_nswap    int64
 37542  	Fru_inblock  int64
 37543  	Fru_oublock  int64
 37544  	Fru_msgsnd   int64
 37545  	Fru_msgrcv   int64
 37546  	Fru_nsignals int64
 37547  	Fru_nvcsw    int64
 37548  	Fru_nivcsw   int64
 37549  }
 37550  
 37551  type rlimit = struct {
 37552  	Frlim_cur rlim_t
 37553  	Frlim_max rlim_t
 37554  }
 37555  
 37556  type loadavg = struct {
 37557  	Fldavg       [3]fixpt_t
 37558  	F__ccgo_pad1 [4]byte
 37559  	Ffscale      int64
 37560  }
 37561  
 37562  func test_getrusage(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37563  	bp := tls.Alloc(1216)
 37564  	defer tls.Free(1216)
 37565  
 37566  	libc.Xmemset(tls, bp+48, 0, uint64(unsafe.Sizeof(rusage{})))
 37567  	libc.Xgetrusage(tls, RUSAGE_SELF, bp+48)
 37568  
 37569  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1024]int8{})), bp+192,
 37570  		ts+18566,
 37571  		libc.VaList(bp, int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_utime.Ftv_usec),
 37572  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_sec), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_stime.Ftv_usec),
 37573  			int32((*rusage)(unsafe.Pointer(bp+48)).Fru_minflt), int32((*rusage)(unsafe.Pointer(bp+48)).Fru_majflt)))
 37574  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+192, -1))
 37575  	return TCL_OK
 37576  }
 37577  
 37578  func optimization_control(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37579  	bp := tls.Alloc(68)
 37580  	defer tls.Free(68)
 37581  
 37582  	var i int32
 37583  
 37584  	var zOpt uintptr
 37585  
 37586  	var mask int32 = 0
 37587  
 37588  	if objc != 4 {
 37589  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18626)
 37590  		return TCL_ERROR
 37591  	}
 37592  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 37593  		return TCL_ERROR
 37594  	}
 37595  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 37596  		return TCL_ERROR
 37597  	}
 37598  	zOpt = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37599  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37600  		FzOptName    uintptr
 37601  		Fmask        int32
 37602  		F__ccgo_pad1 [4]byte
 37603  	}{})); i++ {
 37604  		if libc.Xstrcmp(tls, zOpt, aOpt[i].FzOptName) == 0 {
 37605  			mask = aOpt[i].Fmask
 37606  			break
 37607  		}
 37608  	}
 37609  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 37610  		mask = ^mask
 37611  	}
 37612  	if uint64(i) >= uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37613  		FzOptName    uintptr
 37614  		Fmask        int32
 37615  		F__ccgo_pad1 [4]byte
 37616  	}{})) {
 37617  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18641,
 37618  			uintptr(0)))
 37619  		for i = 0; uint64(i) < uint64(unsafe.Sizeof(aOpt))/uint64(unsafe.Sizeof(struct {
 37620  			FzOptName    uintptr
 37621  			Fmask        int32
 37622  			F__ccgo_pad1 [4]byte
 37623  		}{})); i++ {
 37624  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+4894, aOpt[i].FzOptName, uintptr(0)))
 37625  		}
 37626  		return TCL_ERROR
 37627  	}
 37628  	sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_OPTIMIZATIONS, libc.VaList(bp+40, *(*uintptr)(unsafe.Pointer(bp + 56)), mask))
 37629  	return TCL_OK
 37630  }
 37631  
 37632  var aOpt = [14]struct {
 37633  	FzOptName    uintptr
 37634  	Fmask        int32
 37635  	F__ccgo_pad1 [4]byte
 37636  }{
 37637  	{FzOptName: ts + 18682, Fmask: libc.Int32FromUint32(SQLITE_AllOpts)},
 37638  	{FzOptName: ts + 18686},
 37639  	{FzOptName: ts + 18691, Fmask: SQLITE_QueryFlattener},
 37640  	{FzOptName: ts + 18707, Fmask: SQLITE_GroupByOrder},
 37641  	{FzOptName: ts + 18721, Fmask: SQLITE_FactorOutConst},
 37642  	{FzOptName: ts + 18738, Fmask: SQLITE_DistinctOpt},
 37643  	{FzOptName: ts + 18751, Fmask: SQLITE_CoverIdxScan},
 37644  	{FzOptName: ts + 18766, Fmask: SQLITE_OrderByIdxJoin},
 37645  	{FzOptName: ts + 18784, Fmask: SQLITE_Transitive},
 37646  	{FzOptName: ts + 18795, Fmask: SQLITE_OmitNoopJoin},
 37647  	{FzOptName: ts + 18810, Fmask: SQLITE_Stat4},
 37648  	{FzOptName: ts + 18816, Fmask: SQLITE_SkipScan},
 37649  	{FzOptName: ts + 18826, Fmask: SQLITE_PushDown},
 37650  	{FzOptName: ts + 18836, Fmask: SQLITE_BalancedMerge},
 37651  }
 37652  
 37653  func tclLoadStaticExtensionCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37654  	bp := tls.Alloc(80)
 37655  	defer tls.Free(80)
 37656  
 37657  	var zName uintptr
 37658  	var i int32
 37659  	var j int32
 37660  	var rc int32
 37661  	*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 37662  	if objc < 3 {
 37663  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18851)
 37664  		return TCL_ERROR
 37665  	}
 37666  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 37667  		return TCL_ERROR
 37668  	}
 37669  	for j = 2; j < objc; j++ {
 37670  		zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(j)*8)))
 37671  		for i = 0; i < int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 37672  			FzExtName uintptr
 37673  			FpInit    uintptr
 37674  		}{}))); i++ {
 37675  			if libc.Xstrcmp(tls, zName, aExtension[i].FzExtName) == 0 {
 37676  				break
 37677  			}
 37678  		}
 37679  		if i >= int32(uint64(unsafe.Sizeof(aExtension))/uint64(unsafe.Sizeof(struct {
 37680  			FzExtName uintptr
 37681  			FpInit    uintptr
 37682  		}{}))) {
 37683  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18863, zName, uintptr(0)))
 37684  			return TCL_ERROR
 37685  		}
 37686  		if aExtension[i].FpInit != 0 {
 37687  			rc = (*struct {
 37688  				f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 37689  			})(unsafe.Pointer(&struct{ uintptr }{aExtension[i].FpInit})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), bp+72, uintptr(0))
 37690  		} else {
 37691  			rc = SQLITE_OK
 37692  		}
 37693  		if rc != SQLITE_OK && rc != SQLITE_OK|int32(1)<<8 || *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 37694  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+18883, zName, ts+18902, *(*uintptr)(unsafe.Pointer(bp + 72)),
 37695  				uintptr(0)))
 37696  			sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37697  			return TCL_ERROR
 37698  		}
 37699  	}
 37700  	return TCL_OK
 37701  }
 37702  
 37703  var aExtension = [22]struct {
 37704  	FzExtName uintptr
 37705  	FpInit    uintptr
 37706  }{
 37707  	{FzExtName: ts + 18912, FpInit: 0},
 37708  	{FzExtName: ts + 18919, FpInit: 0},
 37709  	{FzExtName: ts + 4060, FpInit: 0},
 37710  	{FzExtName: ts + 18929, FpInit: 0},
 37711  	{FzExtName: ts + 4815, FpInit: 0},
 37712  	{FzExtName: ts + 4838, FpInit: 0},
 37713  	{FzExtName: ts + 4896, FpInit: 0},
 37714  	{FzExtName: ts + 4974, FpInit: 0},
 37715  	{FzExtName: ts + 18937, FpInit: 0},
 37716  	{FzExtName: ts + 5483, FpInit: 0},
 37717  	{FzExtName: ts + 5507, FpInit: 0},
 37718  	{FzExtName: ts + 18944, FpInit: 0},
 37719  	{FzExtName: ts + 6087, FpInit: 0},
 37720  	{FzExtName: ts + 6162, FpInit: 0},
 37721  	{FzExtName: ts + 6535, FpInit: 0},
 37722  	{FzExtName: ts + 6831, FpInit: 0},
 37723  	{FzExtName: ts + 6846, FpInit: 0},
 37724  	{FzExtName: ts + 18953, FpInit: 0},
 37725  	{FzExtName: ts + 18960, FpInit: 0},
 37726  	{FzExtName: ts + 18969, FpInit: 0},
 37727  	{FzExtName: ts + 8921, FpInit: 0},
 37728  	{FzExtName: ts + 9463, FpInit: 0},
 37729  }
 37730  
 37731  func sorter_test_fakeheap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37732  	bp := tls.Alloc(4)
 37733  	defer tls.Free(4)
 37734  
 37735  	if objc != 2 {
 37736  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 37737  		return TCL_ERROR
 37738  	}
 37739  
 37740  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37741  		return TCL_ERROR
 37742  	}
 37743  
 37744  	if *(*int32)(unsafe.Pointer(bp)) != 0 {
 37745  		if sqlite3.Xsqlite3Config.FpHeap == uintptr(0) {
 37746  			sqlite3.Xsqlite3Config.FpHeap = libc.UintptrFromInt64(int64(-1))
 37747  		}
 37748  	} else {
 37749  		if sqlite3.Xsqlite3Config.FpHeap == libc.UintptrFromInt64(int64(-1)) {
 37750  			sqlite3.Xsqlite3Config.FpHeap = uintptr(0)
 37751  		}
 37752  	}
 37753  
 37754  	tcl.XTcl_ResetResult(tls, interp)
 37755  	return TCL_OK
 37756  }
 37757  
 37758  func sorter_test_sort4_helper(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37759  	bp := tls.Alloc(80)
 37760  	defer tls.Free(80)
 37761  
 37762  	var zSql1 uintptr
 37763  	var zSql2 uintptr
 37764  
 37765  	var iStep int32
 37766  	var iCksum1 uint32
 37767  	var iCksum2 uint32
 37768  	var rc int32
 37769  	var iB int32
 37770  
 37771  	var a int32
 37772  	var a1 int32
 37773  	iCksum1 = uint32(0)
 37774  	iCksum2 = uint32(0)
 37775  
 37776  	if !(objc != 5) {
 37777  		goto __1
 37778  	}
 37779  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18976)
 37780  	return TCL_ERROR
 37781  __1:
 37782  	;
 37783  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0) {
 37784  		goto __2
 37785  	}
 37786  	return TCL_ERROR
 37787  __2:
 37788  	;
 37789  	zSql1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37790  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0) {
 37791  		goto __3
 37792  	}
 37793  	return TCL_ERROR
 37794  __3:
 37795  	;
 37796  	zSql2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 37797  
 37798  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql1, -1, bp+72, uintptr(0))
 37799  	if !(rc != SQLITE_OK) {
 37800  		goto __4
 37801  	}
 37802  	goto sql_error
 37803  __4:
 37804  	;
 37805  	iB = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 72))) - 1
 37806  	iStep = 0
 37807  __5:
 37808  	if !(iStep < *(*int32)(unsafe.Pointer(bp + 64)) && SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 37809  		goto __7
 37810  	}
 37811  	a = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 37812  	if !(a != sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), iB)) {
 37813  		goto __8
 37814  	}
 37815  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+18995, 0))
 37816  	return TCL_ERROR
 37817  __8:
 37818  	;
 37819  	iCksum1 = iCksum1 + (iCksum1<<3 + uint32(a))
 37820  	goto __6
 37821  __6:
 37822  	iStep++
 37823  	goto __5
 37824  	goto __7
 37825  __7:
 37826  	;
 37827  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37828  	if !(rc != SQLITE_OK) {
 37829  		goto __9
 37830  	}
 37831  	goto sql_error
 37832  __9:
 37833  	;
 37834  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 56)), zSql2, -1, bp+72, uintptr(0))
 37835  	if !(rc != SQLITE_OK) {
 37836  		goto __10
 37837  	}
 37838  	goto sql_error
 37839  __10:
 37840  	;
 37841  	iStep = 0
 37842  __11:
 37843  	if !(SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))) {
 37844  		goto __13
 37845  	}
 37846  	a1 = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 72)), 0)
 37847  	iCksum2 = iCksum2 + (iCksum2<<3 + uint32(a1))
 37848  	goto __12
 37849  __12:
 37850  	iStep++
 37851  	goto __11
 37852  	goto __13
 37853  __13:
 37854  	;
 37855  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 37856  	if !(rc != SQLITE_OK) {
 37857  		goto __14
 37858  	}
 37859  	goto sql_error
 37860  __14:
 37861  	;
 37862  	if !(iCksum1 != iCksum2) {
 37863  		goto __15
 37864  	}
 37865  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19014, 0))
 37866  	return TCL_ERROR
 37867  __15:
 37868  	;
 37869  	return TCL_OK
 37870  sql_error:
 37871  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19032, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 56))), 0))
 37872  	return TCL_ERROR
 37873  }
 37874  
 37875  func test_bad_behavior(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 37876  	bp := tls.Alloc(44)
 37877  	defer tls.Free(44)
 37878  
 37879  	var xyz int32
 37880  	var i int32 = *(*int32)(unsafe.Pointer(clientData))
 37881  	var j int32
 37882  
 37883  	var a uintptr
 37884  	if objc != 2 {
 37885  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19044)
 37886  		return TCL_ERROR
 37887  	}
 37888  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 37889  		return TCL_ERROR
 37890  	}
 37891  	switch *(*int32)(unsafe.Pointer(bp)) {
 37892  	case 1:
 37893  		{
 37894  			xyz = 0x7fffff00 - i
 37895  			xyz = xyz + 0x100
 37896  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, xyz))
 37897  			break
 37898  
 37899  		}
 37900  	case 2:
 37901  		{
 37902  			*(*int32)(unsafe.Pointer(bp + 4 + 1*4)) = 5
 37903  			if *(*int32)(unsafe.Pointer(bp + 4 + uintptr(i)*4)) > 0 {
 37904  				*(*int32)(unsafe.Pointer(bp + 4 + 1*4))++
 37905  			}
 37906  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 4 + 1*4))))
 37907  			break
 37908  
 37909  		}
 37910  	case 3:
 37911  		{
 37912  			a = libc.Xmalloc(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(10))
 37913  			for j = 0; j < 10; j++ {
 37914  				*(*int32)(unsafe.Pointer(a + uintptr(j)*4)) = j
 37915  			}
 37916  			libc.Xfree(tls, a)
 37917  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 37918  			break
 37919  
 37920  		}
 37921  	case 4:
 37922  		{
 37923  			tcl.XTcl_Panic(tls, ts+19049, 0)
 37924  			break
 37925  
 37926  		}
 37927  	}
 37928  	return TCL_OK
 37929  }
 37930  
 37931  func test_register_dbstat_vtab(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37932  	bp := tls.Alloc(64)
 37933  	defer tls.Free(64)
 37934  
 37935  	var zDb uintptr
 37936  
 37937  	if objc != 2 {
 37938  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 37939  		return TCL_ERROR
 37940  	}
 37941  
 37942  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 37943  	if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp) != 0 {
 37944  		var db uintptr = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData)).Fdb
 37945  		sqlite3.Xsqlite3DbstatRegister(tls, db)
 37946  	}
 37947  	return TCL_OK
 37948  }
 37949  
 37950  func test_sqlite3_db_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 37951  	bp := tls.Alloc(28)
 37952  	defer tls.Free(28)
 37953  
 37954  	var i int32
 37955  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 37956  	var zSetting uintptr
 37957  
 37958  	if objc != 4 && objc != 3 {
 37959  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19066)
 37960  		return TCL_ERROR
 37961  	}
 37962  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 {
 37963  		return TCL_ERROR
 37964  	}
 37965  	zSetting = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 37966  	if sqlite3.Xsqlite3_strglob(tls, ts+19085, zSetting) == 0 {
 37967  		zSetting += uintptr(7)
 37968  	}
 37969  	if sqlite3.Xsqlite3_strglob(tls, ts+19094, zSetting) == 0 {
 37970  		zSetting += uintptr(9)
 37971  	}
 37972  	if sqlite3.Xsqlite3_strglob(tls, ts+19105, zSetting) == 0 {
 37973  		zSetting += uintptr(7)
 37974  	}
 37975  	for i = 0; i < int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 37976  		FzName       uintptr
 37977  		FeVal        int32
 37978  		F__ccgo_pad1 [4]byte
 37979  	}{}))); i++ {
 37980  		if libc.Xstrcmp(tls, zSetting, aSetting[i].FzName) == 0 {
 37981  			break
 37982  		}
 37983  	}
 37984  	if i >= int32(uint64(unsafe.Sizeof(aSetting))/uint64(unsafe.Sizeof(struct {
 37985  		FzName       uintptr
 37986  		FeVal        int32
 37987  		F__ccgo_pad1 [4]byte
 37988  	}{}))) {
 37989  		tcl.XTcl_SetObjResult(tls, interp,
 37990  			tcl.XTcl_NewStringObj(tls, ts+19114, -1))
 37991  		return TCL_ERROR
 37992  	}
 37993  	if objc == 4 {
 37994  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 37995  			return TCL_ERROR
 37996  		}
 37997  	} else {
 37998  		*(*int32)(unsafe.Pointer(bp + 24)) = -1
 37999  	}
 38000  	sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), aSetting[i].FeVal, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 24)), bp+24))
 38001  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 24))))
 38002  	return TCL_OK
 38003  }
 38004  
 38005  var aSetting = [14]struct {
 38006  	FzName       uintptr
 38007  	FeVal        int32
 38008  	F__ccgo_pad1 [4]byte
 38009  }{
 38010  	{FzName: ts + 19148, FeVal: SQLITE_DBCONFIG_ENABLE_FKEY},
 38011  	{FzName: ts + 19153, FeVal: SQLITE_DBCONFIG_ENABLE_TRIGGER},
 38012  	{FzName: ts + 19161, FeVal: SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER},
 38013  	{FzName: ts + 19176, FeVal: SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION},
 38014  	{FzName: ts + 19191, FeVal: SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE},
 38015  	{FzName: ts + 19208, FeVal: SQLITE_DBCONFIG_ENABLE_QPSG},
 38016  	{FzName: ts + 19213, FeVal: SQLITE_DBCONFIG_TRIGGER_EQP},
 38017  	{FzName: ts + 19225, FeVal: SQLITE_DBCONFIG_RESET_DATABASE},
 38018  	{FzName: ts + 19234, FeVal: SQLITE_DBCONFIG_DEFENSIVE},
 38019  	{FzName: ts + 19244, FeVal: SQLITE_DBCONFIG_WRITABLE_SCHEMA},
 38020  	{FzName: ts + 19260, FeVal: SQLITE_DBCONFIG_LEGACY_ALTER_TABLE},
 38021  	{FzName: ts + 19279, FeVal: SQLITE_DBCONFIG_DQS_DML},
 38022  	{FzName: ts + 19287, FeVal: SQLITE_DBCONFIG_DQS_DDL},
 38023  	{FzName: ts + 19295, FeVal: SQLITE_DBCONFIG_LEGACY_FILE_FORMAT},
 38024  }
 38025  
 38026  func test_sqlite3_txn_state(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38027  	bp := tls.Alloc(8)
 38028  	defer tls.Free(8)
 38029  
 38030  	var zSchema uintptr
 38031  	var iTxn int32
 38032  
 38033  	if objc != 2 && objc != 3 {
 38034  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19314)
 38035  		return TCL_ERROR
 38036  	}
 38037  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38038  		return TCL_ERROR
 38039  	}
 38040  	if objc == 3 {
 38041  		zSchema = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38042  	} else {
 38043  		zSchema = uintptr(0)
 38044  	}
 38045  	iTxn = sqlite3.Xsqlite3_txn_state(tls, *(*uintptr)(unsafe.Pointer(bp)), zSchema)
 38046  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iTxn))
 38047  	return TCL_OK
 38048  }
 38049  
 38050  func test_dbconfig_maindbname_icecube(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38051  	bp := tls.Alloc(16)
 38052  	defer tls.Free(16)
 38053  
 38054  	var rc int32
 38055  
 38056  	if objc != 2 {
 38057  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 38058  		return TCL_ERROR
 38059  	} else {
 38060  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 38061  			return TCL_ERROR
 38062  		}
 38063  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), SQLITE_DBCONFIG_MAINDBNAME, libc.VaList(bp, ts+19326))
 38064  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 38065  		return TCL_OK
 38066  	}
 38067  	return int32(0)
 38068  }
 38069  
 38070  func test_mmap_warm(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38071  	bp := tls.Alloc(8)
 38072  	defer tls.Free(8)
 38073  
 38074  	if objc != 2 && objc != 3 {
 38075  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19334)
 38076  		return TCL_ERROR
 38077  	} else {
 38078  		var rc int32
 38079  
 38080  		var zDb uintptr = uintptr(0)
 38081  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38082  			return TCL_ERROR
 38083  		}
 38084  		if objc == 3 {
 38085  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38086  		}
 38087  		rc = sqlite3_mmap_warm(tls, *(*uintptr)(unsafe.Pointer(bp)), zDb)
 38088  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 38089  		return TCL_OK
 38090  	}
 38091  	return int32(0)
 38092  }
 38093  
 38094  func test_write_db(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38095  	bp := tls.Alloc(32)
 38096  	defer tls.Free(32)
 38097  
 38098  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 38099  	*(*Tcl_WideInt)(unsafe.Pointer(bp + 8)) = int64(0)
 38100  	var aData uintptr = uintptr(0)
 38101  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 38102  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 38103  	var rc int32
 38104  
 38105  	if objc != 4 {
 38106  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19346)
 38107  		return TCL_ERROR
 38108  	}
 38109  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 38110  		return TCL_ERROR
 38111  	}
 38112  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 38113  		return TCL_ERROR
 38114  	}
 38115  	aData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16)
 38116  
 38117  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+85, SQLITE_FCNTL_FILE_POINTER, bp+24)
 38118  	rc = (*struct {
 38119  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 38120  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 24)))).FpMethods)).FxWrite})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), aData, *(*int32)(unsafe.Pointer(bp + 16)), *(*Tcl_WideInt)(unsafe.Pointer(bp + 8)))
 38121  
 38122  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38123  	return TCL_OK
 38124  }
 38125  
 38126  func test_register_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38127  	if objc != 1 {
 38128  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38129  		return TCL_ERROR
 38130  	} else {
 38131  		var rc int32 = sqlite3_register_cksumvfs(tls, uintptr(0))
 38132  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38133  	}
 38134  	return TCL_OK
 38135  }
 38136  
 38137  func test_unregister_cksumvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38138  	if objc != 1 {
 38139  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 38140  		return TCL_ERROR
 38141  	} else {
 38142  		var rc int32 = sqlite3_unregister_cksumvfs(tls)
 38143  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 38144  	}
 38145  	return TCL_OK
 38146  }
 38147  
 38148  func test_decode_hexdb(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38149  	bp := tls.Alloc(296)
 38150  	defer tls.Free(296)
 38151  
 38152  	var zIn uintptr = uintptr(0)
 38153  	var a uintptr = uintptr(0)
 38154  	*(*int32)(unsafe.Pointer(bp + 216)) = 0
 38155  	var lineno int32 = 0
 38156  	var i int32
 38157  	var iNext int32
 38158  	var iOffset int32 = 0
 38159  
 38160  	var rc int32
 38161  
 38162  	if objc != 2 {
 38163  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19361)
 38164  		return TCL_ERROR
 38165  	}
 38166  	zIn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 38167  	for i = 0; *(*int8)(unsafe.Pointer(zIn + uintptr(i))) != 0; i = iNext {
 38168  		lineno++
 38169  		for iNext = i; *(*int8)(unsafe.Pointer(zIn + uintptr(iNext))) != 0 && int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) != '\n'; iNext++ {
 38170  		}
 38171  		if int32(*(*int8)(unsafe.Pointer(zIn + uintptr(iNext)))) == '\n' {
 38172  			iNext++
 38173  		}
 38174  		for int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == ' ' || int32(*(*int8)(unsafe.Pointer(zIn + uintptr(i)))) == '\t' {
 38175  			i++
 38176  		}
 38177  		if a == uintptr(0) {
 38178  			rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19367, libc.VaList(bp, bp+216, bp+220))
 38179  			if rc != 2 {
 38180  				continue
 38181  			}
 38182  			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 {
 38183  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+19389, uintptr(0)))
 38184  				return TCL_ERROR
 38185  			}
 38186  			*(*int32)(unsafe.Pointer(bp + 216)) = (*(*int32)(unsafe.Pointer(bp + 216)) + *(*int32)(unsafe.Pointer(bp + 220)) - 1) & ^(*(*int32)(unsafe.Pointer(bp + 220)) - 1)
 38187  			if *(*int32)(unsafe.Pointer(bp + 216)) < 512 {
 38188  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+19410, uintptr(0)))
 38189  				return TCL_ERROR
 38190  			}
 38191  			a = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38192  			if a == uintptr(0) {
 38193  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+2069, uintptr(0)))
 38194  				return TCL_ERROR
 38195  			}
 38196  			libc.Xmemset(tls, a, 0, uint64(*(*int32)(unsafe.Pointer(bp + 216))))
 38197  			continue
 38198  		}
 38199  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19427, libc.VaList(bp+64, bp+224, bp+228))
 38200  		if rc == 2 {
 38201  			iOffset = *(*int32)(unsafe.Pointer(bp + 228))
 38202  			continue
 38203  		}
 38204  		rc = libc.Xsscanf(tls, zIn+uintptr(i), ts+19447,
 38205  			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,
 38206  				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))
 38207  		if rc == 17 {
 38208  			*(*int32)(unsafe.Pointer(bp + 228)) = iOffset + *(*int32)(unsafe.Pointer(bp + 224))
 38209  			if *(*int32)(unsafe.Pointer(bp + 228))+16 <= *(*int32)(unsafe.Pointer(bp + 216)) {
 38210  				var ii int32
 38211  				for ii = 0; ii < 16; ii++ {
 38212  					*(*uint8)(unsafe.Pointer(a + uintptr(*(*int32)(unsafe.Pointer(bp + 228))+ii))) = uint8(*(*uint32)(unsafe.Pointer(bp + 232 + uintptr(ii)*4)) & uint32(0xff))
 38213  				}
 38214  			}
 38215  			continue
 38216  		}
 38217  	}
 38218  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, a, *(*int32)(unsafe.Pointer(bp + 216))))
 38219  	libc.Xfree(tls, a)
 38220  	return TCL_OK
 38221  }
 38222  
 38223  type AutovacPageData1 = struct {
 38224  	Finterp  uintptr
 38225  	FzScript uintptr
 38226  }
 38227  
 38228  type AutovacPageData = AutovacPageData1
 38229  
 38230  func test_autovacuum_pages_callback(tls *libc.TLS, pClientData uintptr, zSchema uintptr, nFilePages uint32, nFreePages uint32, nBytePerPage uint32) uint32 {
 38231  	bp := tls.Alloc(344)
 38232  	defer tls.Free(344)
 38233  
 38234  	var pData uintptr = pClientData
 38235  
 38236  	tcl.XTcl_DStringInit(tls, bp+24)
 38237  	tcl.XTcl_DStringAppend(tls, bp+24, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, -1)
 38238  	tcl.XTcl_DStringAppendElement(tls, bp+24, zSchema)
 38239  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp, nFilePages))
 38240  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38241  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+8, nFreePages))
 38242  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38243  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+240, ts+17791, libc.VaList(bp+16, nBytePerPage))
 38244  	tcl.XTcl_DStringAppendElement(tls, bp+24, bp+240)
 38245  	tcl.XTcl_ResetResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp)
 38246  	tcl.XTcl_Eval(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp, (*Tcl_DString)(unsafe.Pointer(bp+24)).Fstring)
 38247  	tcl.XTcl_DStringFree(tls, bp+24)
 38248  	*(*uint32)(unsafe.Pointer(bp + 340)) = nFreePages
 38249  	tcl.XTcl_GetIntFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, (*AutovacPageData)(unsafe.Pointer(pData)).Finterp), bp+340)
 38250  	return *(*uint32)(unsafe.Pointer(bp + 340))
 38251  }
 38252  
 38253  func test_autovacuum_pages(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 38254  	bp := tls.Alloc(1048)
 38255  	defer tls.Free(1048)
 38256  
 38257  	var pData uintptr
 38258  
 38259  	var rc int32
 38260  	var zScript uintptr
 38261  	if objc != 2 && objc != 3 {
 38262  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+19501)
 38263  		return TCL_ERROR
 38264  	}
 38265  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) != 0 {
 38266  		return TCL_ERROR
 38267  	}
 38268  	if objc == 3 {
 38269  		zScript = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 38270  	} else {
 38271  		zScript = uintptr(0)
 38272  	}
 38273  	if zScript != 0 {
 38274  		var nScript size_t = libc.Xstrlen(tls, zScript)
 38275  		pData = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(AutovacPageData{}))+nScript+uint64(1))
 38276  		if pData == uintptr(0) {
 38277  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+2069, uintptr(0)))
 38278  			return TCL_ERROR
 38279  		}
 38280  		(*AutovacPageData)(unsafe.Pointer(pData)).Finterp = interp
 38281  		(*AutovacPageData)(unsafe.Pointer(pData)).FzScript = pData + 1*16
 38282  		libc.Xmemcpy(tls, (*AutovacPageData)(unsafe.Pointer(pData)).FzScript, zScript, nScript+uint64(1))
 38283  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), *(*uintptr)(unsafe.Pointer(&struct {
 38284  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32, uint32) uint32
 38285  		}{test_autovacuum_pages_callback})),
 38286  			pData, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 38287  	} else {
 38288  		rc = sqlite3.Xsqlite3_autovacuum_pages(tls, *(*uintptr)(unsafe.Pointer(bp + 40)), uintptr(0), uintptr(0), uintptr(0))
 38289  	}
 38290  	if rc != 0 {
 38291  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+48,
 38292  			ts+19513, libc.VaList(bp+16, rc))
 38293  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+48, uintptr(0)))
 38294  		return TCL_ERROR
 38295  	}
 38296  	return TCL_OK
 38297  }
 38298  
 38299  func Sqlitetest1_Init(tls *libc.TLS, interp uintptr) int32 {
 38300  	var i int32
 38301  
 38302  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd1))/uint64(unsafe.Sizeof(struct {
 38303  		FzName uintptr
 38304  		FxProc uintptr
 38305  	}{})); i++ {
 38306  		tcl.XTcl_CreateCommand(tls, interp, aCmd1[i].FzName, aCmd1[i].FxProc, uintptr(0), uintptr(0))
 38307  	}
 38308  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd1))/uint64(unsafe.Sizeof(struct {
 38309  		FzName      uintptr
 38310  		FxProc      uintptr
 38311  		FclientData uintptr
 38312  	}{})); i++ {
 38313  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd1[i].FzName,
 38314  			aObjCmd1[i].FxProc, aObjCmd1[i].FclientData, uintptr(0))
 38315  	}
 38316  	tcl.XTcl_LinkVar(tls, interp, ts+19551,
 38317  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_search_count)), TCL_LINK_INT)
 38318  	tcl.XTcl_LinkVar(tls, interp, ts+19571,
 38319  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_found_count)), TCL_LINK_INT)
 38320  	tcl.XTcl_LinkVar(tls, interp, ts+19590,
 38321  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sort_count)), TCL_LINK_INT)
 38322  	tcl.XTcl_LinkVar(tls, interp, ts+19608,
 38323  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_max_blobsize)), TCL_LINK_INT)
 38324  	tcl.XTcl_LinkVar(tls, interp, ts+19629,
 38325  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_like_count)), TCL_LINK_INT)
 38326  	tcl.XTcl_LinkVar(tls, interp, ts+19647,
 38327  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_interrupt_count)), TCL_LINK_INT)
 38328  	tcl.XTcl_LinkVar(tls, interp, ts+19670,
 38329  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_open_file_count)), TCL_LINK_INT)
 38330  	tcl.XTcl_LinkVar(tls, interp, ts+19693,
 38331  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_current_time)), TCL_LINK_INT)
 38332  	tcl.XTcl_LinkVar(tls, interp, ts+19713,
 38333  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_xferopt_count)), TCL_LINK_INT)
 38334  	tcl.XTcl_LinkVar(tls, interp, ts+19735,
 38335  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_readdb_count)), TCL_LINK_INT)
 38336  	tcl.XTcl_LinkVar(tls, interp, ts+19762,
 38337  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writedb_count)), TCL_LINK_INT)
 38338  	tcl.XTcl_LinkVar(tls, interp, ts+19790,
 38339  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_pager_writej_count)), TCL_LINK_INT)
 38340  	tcl.XTcl_LinkVar(tls, interp, ts+19817,
 38341  		uintptr(unsafe.Pointer(&unaligned_string_counter)), TCL_LINK_INT)
 38342  	tcl.XTcl_LinkVar(tls, interp, ts+19842,
 38343  		uintptr(unsafe.Pointer(&pzNeededCollation)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38344  	{
 38345  		tcl.XTcl_LinkVar(tls, interp, ts+19871,
 38346  			uintptr(unsafe.Pointer(&query_plan)), TCL_LINK_STRING|TCL_LINK_READ_ONLY)
 38347  
 38348  	}
 38349  	tcl.XTcl_LinkVar(tls, interp, ts+19889,
 38350  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_opentemp_count)), TCL_LINK_INT)
 38351  	tcl.XTcl_LinkVar(tls, interp, ts+19911,
 38352  		uintptr(unsafe.Pointer(&sqlite_static_bind_value)), TCL_LINK_STRING)
 38353  	tcl.XTcl_LinkVar(tls, interp, ts+19936,
 38354  		uintptr(unsafe.Pointer(&sqlite_static_bind_nbyte)), TCL_LINK_INT)
 38355  	tcl.XTcl_LinkVar(tls, interp, ts+19961,
 38356  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_temp_directory)), TCL_LINK_STRING)
 38357  	tcl.XTcl_LinkVar(tls, interp, ts+19983,
 38358  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_data_directory)), TCL_LINK_STRING)
 38359  	tcl.XTcl_LinkVar(tls, interp, ts+20005,
 38360  		uintptr(unsafe.Pointer(&bitmask_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38361  	tcl.XTcl_LinkVar(tls, interp, ts+20018,
 38362  		uintptr(unsafe.Pointer(&longdouble_size)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 38363  	tcl.XTcl_LinkVar(tls, interp, ts+20034,
 38364  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_sync_count)), TCL_LINK_INT)
 38365  	tcl.XTcl_LinkVar(tls, interp, ts+20052,
 38366  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_fullsync_count)), TCL_LINK_INT)
 38367  	return TCL_OK
 38368  }
 38369  
 38370  var iZero int32 = 0
 38371  var aCmd1 = [39]struct {
 38372  	FzName uintptr
 38373  	FxProc uintptr
 38374  }{
 38375  	{FzName: ts + 20074, FxProc: 0},
 38376  	{FzName: ts + 20083, FxProc: 0},
 38377  	{FzName: ts + 20092, FxProc: 0},
 38378  	{FzName: ts + 20112, FxProc: 0},
 38379  	{FzName: ts + 20134, FxProc: 0},
 38380  	{FzName: ts + 20155, FxProc: 0},
 38381  	{FzName: ts + 20175, FxProc: 0},
 38382  	{FzName: ts + 20196, FxProc: 0},
 38383  	{FzName: ts + 20220, FxProc: 0},
 38384  	{FzName: ts + 20243, FxProc: 0},
 38385  	{FzName: ts + 20266, FxProc: 0},
 38386  	{FzName: ts + 20292, FxProc: 0},
 38387  	{FzName: ts + 20315, FxProc: 0},
 38388  	{FzName: ts + 20338, FxProc: 0},
 38389  	{FzName: ts + 20359, FxProc: 0},
 38390  	{FzName: ts + 20385, FxProc: 0},
 38391  	{FzName: ts + 20405, FxProc: 0},
 38392  	{FzName: ts + 20422, FxProc: 0},
 38393  	{FzName: ts + 20435, FxProc: 0},
 38394  	{FzName: ts + 20451, FxProc: 0},
 38395  	{FzName: ts + 20476, FxProc: 0},
 38396  	{FzName: ts + 20490, FxProc: 0},
 38397  	{FzName: ts + 20507, FxProc: 0},
 38398  	{FzName: ts + 20531, FxProc: 0},
 38399  	{FzName: ts + 20556, FxProc: 0},
 38400  	{FzName: ts + 20577, FxProc: 0},
 38401  	{FzName: ts + 20607, FxProc: 0},
 38402  	{FzName: ts + 20620, FxProc: 0},
 38403  	{FzName: ts + 20632, FxProc: 0},
 38404  	{FzName: ts + 20643, FxProc: 0},
 38405  	{FzName: ts + 20655, FxProc: 0},
 38406  	{FzName: ts + 20669, FxProc: 0},
 38407  	{FzName: ts + 20687, FxProc: 0},
 38408  	{FzName: ts + 20710, FxProc: 0},
 38409  	{FzName: ts + 20734, FxProc: 0},
 38410  	{FzName: ts + 20757, FxProc: 0},
 38411  	{FzName: ts + 20778, FxProc: 0},
 38412  	{FzName: ts + 20785, FxProc: 0},
 38413  	{FzName: ts + 20800, FxProc: 0},
 38414  }
 38415  var aObjCmd1 = [165]struct {
 38416  	FzName      uintptr
 38417  	FxProc      uintptr
 38418  	FclientData uintptr
 38419  }{
 38420  	{FzName: ts + 20823, FxProc: 0},
 38421  	{FzName: ts + 20841, FxProc: 0},
 38422  	{FzName: ts + 20859, FxProc: 0, FclientData: 0},
 38423  	{FzName: ts + 20872, FxProc: 0},
 38424  	{FzName: ts + 20893, FxProc: 0},
 38425  	{FzName: ts + 20920, FxProc: 0},
 38426  	{FzName: ts + 20934, FxProc: 0},
 38427  	{FzName: ts + 20950, FxProc: 0},
 38428  	{FzName: ts + 20967, FxProc: 0},
 38429  	{FzName: ts + 20982, FxProc: 0},
 38430  	{FzName: ts + 20999, FxProc: 0},
 38431  	{FzName: ts + 21021, FxProc: 0},
 38432  	{FzName: ts + 21045, FxProc: 0},
 38433  	{FzName: ts + 21064, FxProc: 0},
 38434  	{FzName: ts + 21084, FxProc: 0},
 38435  	{FzName: ts + 21102, FxProc: 0},
 38436  	{FzName: ts + 21120, FxProc: 0},
 38437  	{FzName: ts + 21140, FxProc: 0},
 38438  	{FzName: ts + 21158, FxProc: 0},
 38439  	{FzName: ts + 21189, FxProc: 0},
 38440  	{FzName: ts + 21223, FxProc: 0},
 38441  	{FzName: ts + 21243, FxProc: 0},
 38442  	{FzName: ts + 21272, FxProc: 0},
 38443  	{FzName: ts + 21300, FxProc: 0},
 38444  	{FzName: ts + 21329, FxProc: 0},
 38445  	{FzName: ts + 21352, FxProc: 0},
 38446  	{FzName: ts + 21366, FxProc: 0},
 38447  	{FzName: ts + 21382, FxProc: 0},
 38448  	{FzName: ts + 21407, FxProc: 0},
 38449  	{FzName: ts + 21422, FxProc: 0},
 38450  	{FzName: ts + 21443, FxProc: 0},
 38451  	{FzName: ts + 21460, FxProc: 0},
 38452  	{FzName: ts + 21473, FxProc: 0},
 38453  	{FzName: ts + 21488, FxProc: 0},
 38454  	{FzName: ts + 21504, FxProc: 0},
 38455  	{FzName: ts + 21523, FxProc: 0},
 38456  	{FzName: ts + 21541, FxProc: 0},
 38457  	{FzName: ts + 21557, FxProc: 0},
 38458  	{FzName: ts + 21575, FxProc: 0},
 38459  	{FzName: ts + 21594, FxProc: 0},
 38460  	{FzName: ts + 21613, FxProc: 0},
 38461  	{FzName: ts + 21637, FxProc: 0},
 38462  	{FzName: ts + 21658, FxProc: 0},
 38463  	{FzName: ts + 21675, FxProc: 0},
 38464  	{FzName: ts + 21695, FxProc: 0},
 38465  	{FzName: ts + 21709, FxProc: 0},
 38466  	{FzName: ts + 21725, FxProc: 0},
 38467  	{FzName: ts + 21751, FxProc: 0},
 38468  	{FzName: ts + 21767, FxProc: 0},
 38469  	{FzName: ts + 21780, FxProc: 0},
 38470  	{FzName: ts + 21792, FxProc: 0},
 38471  	{FzName: ts + 21813, FxProc: 0},
 38472  	{FzName: ts + 21831, FxProc: 0},
 38473  	{FzName: ts + 21853, FxProc: 0},
 38474  	{FzName: ts + 21876, FxProc: 0},
 38475  	{FzName: ts + 21894, FxProc: 0},
 38476  	{FzName: ts + 21912, FxProc: 0},
 38477  	{FzName: ts + 21935, FxProc: 0},
 38478  	{FzName: ts + 21961, FxProc: 0},
 38479  	{FzName: ts + 21983, FxProc: 0},
 38480  	{FzName: ts + 22004, FxProc: 0},
 38481  	{FzName: ts + 22024, FxProc: 0},
 38482  	{FzName: ts + 22044, FxProc: 0},
 38483  	{FzName: ts + 22068, FxProc: 0},
 38484  	{FzName: ts + 22094, FxProc: 0},
 38485  	{FzName: ts + 22120, FxProc: 0},
 38486  	{FzName: ts + 22143, FxProc: 0},
 38487  	{FzName: ts + 22167, FxProc: 0},
 38488  	{FzName: ts + 22190, FxProc: 0},
 38489  	{FzName: ts + 22220, FxProc: 0},
 38490  	{FzName: ts + 22250, FxProc: 0},
 38491  	{FzName: ts + 22264, FxProc: 0},
 38492  	{FzName: ts + 22292, FxProc: 0},
 38493  	{FzName: ts + 22308, FxProc: 0},
 38494  	{FzName: ts + 22327, FxProc: 0},
 38495  	{FzName: ts + 22344, FxProc: 0},
 38496  	{FzName: ts + 22354, FxProc: 0},
 38497  	{FzName: ts + 22374, FxProc: 0},
 38498  	{FzName: ts + 22397, FxProc: 0},
 38499  	{FzName: ts + 22421, FxProc: 0},
 38500  	{FzName: ts + 22442, FxProc: 0},
 38501  	{FzName: ts + 22454, FxProc: 0},
 38502  	{FzName: ts + 22475, FxProc: 0},
 38503  	{FzName: ts + 22494, FxProc: 0},
 38504  	{FzName: ts + 22514, FxProc: 0},
 38505  	{FzName: ts + 22534, FxProc: 0},
 38506  	{FzName: ts + 22556, FxProc: 0},
 38507  	{FzName: ts + 22577, FxProc: 0, FclientData: 0},
 38508  	{FzName: ts + 22597, FxProc: 0, FclientData: 0},
 38509  	{FzName: ts + 22617, FxProc: 0, FclientData: 0},
 38510  	{FzName: ts + 22636, FxProc: 0, FclientData: 0},
 38511  	{FzName: ts + 22657, FxProc: 0, FclientData: 0},
 38512  	{FzName: ts + 22681, FxProc: 0, FclientData: 0},
 38513  	{FzName: ts + 22710, FxProc: 0, FclientData: 0},
 38514  	{FzName: ts + 22736, FxProc: 0, FclientData: 0},
 38515  	{FzName: ts + 22763, FxProc: 0, FclientData: 0},
 38516  	{FzName: ts + 22786, FxProc: 0, FclientData: 0},
 38517  	{FzName: ts + 22808, FxProc: 0, FclientData: 0},
 38518  	{FzName: ts + 22830, FxProc: 0},
 38519  	{FzName: ts + 22860, FxProc: 0, FclientData: 0},
 38520  	{FzName: ts + 22886,
 38521  		FxProc: 0, FclientData: 0},
 38522  	{FzName: ts + 22917, FxProc: 0, FclientData: 0},
 38523  	{FzName: ts + 22945, FxProc: 0, FclientData: 0},
 38524  	{FzName: ts + 22974, FxProc: 0},
 38525  	{FzName: ts + 23002, FxProc: 0},
 38526  	{FzName: ts + 23025, FxProc: 0},
 38527  	{FzName: ts + 23043, FxProc: 0},
 38528  	{FzName: ts + 23059, FxProc: 0},
 38529  	{FzName: ts + 23077, FxProc: 0},
 38530  	{FzName: ts + 23096, FxProc: 0},
 38531  	{FzName: ts + 23115, FxProc: 0},
 38532  	{FzName: ts + 23133, FxProc: 0},
 38533  	{FzName: ts + 23161, FxProc: 0},
 38534  	{FzName: ts + 23189, FxProc: 0},
 38535  	{FzName: ts + 23217, FxProc: 0},
 38536  	{FzName: ts + 23244, FxProc: 0},
 38537  	{FzName: ts + 23270, FxProc: 0},
 38538  	{FzName: ts + 23295, FxProc: 0},
 38539  	{FzName: ts + 23328, FxProc: 0},
 38540  	{FzName: ts + 23349, FxProc: 0},
 38541  	{FzName: ts + 23375, FxProc: 0},
 38542  	{FzName: ts + 23401, FxProc: 0},
 38543  	{FzName: ts + 23430, FxProc: 0},
 38544  	{FzName: ts + 23447, FxProc: 0},
 38545  	{FzName: ts + 23474, FxProc: 0},
 38546  	{FzName: ts + 23491, FxProc: 0},
 38547  	{FzName: ts + 23515, FxProc: 0},
 38548  	{FzName: ts + 23533, FxProc: 0},
 38549  	{FzName: ts + 23559, FxProc: 0},
 38550  	{FzName: ts + 23579, FxProc: 0},
 38551  	{FzName: ts + 23597, FxProc: 0},
 38552  	{FzName: ts + 23625, FxProc: 0},
 38553  	{FzName: ts + 23653, FxProc: 0},
 38554  	{FzName: ts + 23679, FxProc: 0},
 38555  	{FzName: ts + 23709, FxProc: 0},
 38556  	{FzName: ts + 23729, FxProc: 0},
 38557  	{FzName: ts + 23742, FxProc: 0},
 38558  	{FzName: ts + 23764, FxProc: 0},
 38559  	{FzName: ts + 23787, FxProc: 0},
 38560  	{FzName: ts + 23813, FxProc: 0},
 38561  	{FzName: ts + 23840, FxProc: 0},
 38562  	{FzName: ts + 23857, FxProc: 0},
 38563  	{FzName: ts + 23882, FxProc: 0},
 38564  	{FzName: ts + 23903, FxProc: 0},
 38565  	{FzName: ts + 23913, FxProc: 0},
 38566  	{FzName: ts + 23935, FxProc: 0},
 38567  	{FzName: ts + 23956, FxProc: 0},
 38568  	{FzName: ts + 23981, FxProc: 0},
 38569  	{FzName: ts + 24004, FxProc: 0},
 38570  	{FzName: ts + 24025, FxProc: 0},
 38571  	{FzName: ts + 24047, FxProc: 0},
 38572  	{FzName: ts + 24069, FxProc: 0},
 38573  	{FzName: ts + 24090, FxProc: 0},
 38574  	{FzName: ts + 24115, FxProc: 0},
 38575  	{FzName: ts + 24141, FxProc: 0},
 38576  	{FzName: ts + 24168, FxProc: 0},
 38577  	{FzName: ts + 24194, FxProc: 0},
 38578  	{FzName: ts + 24218, FxProc: 0},
 38579  	{FzName: ts + 24237, FxProc: 0},
 38580  	{FzName: ts + 24255, FxProc: 0},
 38581  	{FzName: ts + 24280, FxProc: 0},
 38582  	{FzName: ts + 24305, FxProc: 0},
 38583  	{FzName: ts + 24318, FxProc: 0},
 38584  	{FzName: ts + 24332, FxProc: 0},
 38585  	{FzName: ts + 24358, FxProc: 0},
 38586  }
 38587  var bitmask_size int32 = int32(uint64(unsafe.Sizeof(Bitmask(0))) * uint64(8))
 38588  var longdouble_size int32 = int32(unsafe.Sizeof(float64(0)))
 38589  var query_plan uintptr = ts + 24386
 38590  
 38591  var test_pagesize int32 = 1024
 38592  
 38593  func pager_test_reiniter(tls *libc.TLS, pNotUsed uintptr) {
 38594  	return
 38595  }
 38596  
 38597  func pager_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38598  	bp := tls.Alloc(192)
 38599  	defer tls.Free(192)
 38600  
 38601  	var rc int32
 38602  
 38603  	if argc != 3 {
 38604  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38605  			ts+24412, 0))
 38606  		return TCL_ERROR
 38607  	}
 38608  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 38609  		return TCL_ERROR
 38610  	}
 38611  	rc = sqlite3.Xsqlite3PagerOpen(tls, sqlite3.Xsqlite3_vfs_find(tls, uintptr(0)), bp+80, *(*uintptr)(unsafe.Pointer(argv + 1*8)), 0, 0,
 38612  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB,
 38613  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{pager_test_reiniter})))
 38614  	if rc != SQLITE_OK {
 38615  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38616  		return TCL_ERROR
 38617  	}
 38618  	sqlite3.Xsqlite3PagerSetCachesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 38619  	*(*u32)(unsafe.Pointer(bp + 88)) = u32(test_pagesize)
 38620  	sqlite3.Xsqlite3PagerSetPagesize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), bp+88, -1)
 38621  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+92, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 38622  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+92, 0))
 38623  	return TCL_OK
 38624  }
 38625  
 38626  func pager_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38627  	bp := tls.Alloc(48)
 38628  	defer tls.Free(48)
 38629  
 38630  	var pPager uintptr
 38631  	var rc int32
 38632  	if argc != 2 {
 38633  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38634  			ts+24430, 0))
 38635  		return TCL_ERROR
 38636  	}
 38637  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38638  	rc = sqlite3.Xsqlite3PagerClose(tls, pPager, uintptr(0))
 38639  	if rc != SQLITE_OK {
 38640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38641  		return TCL_ERROR
 38642  	}
 38643  	return TCL_OK
 38644  }
 38645  
 38646  func pager_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38647  	bp := tls.Alloc(48)
 38648  	defer tls.Free(48)
 38649  
 38650  	var pPager uintptr
 38651  	var rc int32
 38652  	if argc != 2 {
 38653  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38654  			ts+24430, 0))
 38655  		return TCL_ERROR
 38656  	}
 38657  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38658  	rc = sqlite3.Xsqlite3PagerRollback(tls, pPager)
 38659  	if rc != SQLITE_OK {
 38660  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38661  		return TCL_ERROR
 38662  	}
 38663  	return TCL_OK
 38664  }
 38665  
 38666  func pager_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38667  	bp := tls.Alloc(64)
 38668  	defer tls.Free(64)
 38669  
 38670  	var pPager uintptr
 38671  	var rc int32
 38672  	if argc != 2 {
 38673  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38674  			ts+24430, 0))
 38675  		return TCL_ERROR
 38676  	}
 38677  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38678  	rc = sqlite3.Xsqlite3PagerCommitPhaseOne(tls, pPager, uintptr(0), 0)
 38679  	if rc != SQLITE_OK {
 38680  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38681  		return TCL_ERROR
 38682  	}
 38683  	rc = sqlite3.Xsqlite3PagerCommitPhaseTwo(tls, pPager)
 38684  	if rc != SQLITE_OK {
 38685  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38686  		return TCL_ERROR
 38687  	}
 38688  	return TCL_OK
 38689  }
 38690  
 38691  func pager_stmt_begin(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38692  	bp := tls.Alloc(48)
 38693  	defer tls.Free(48)
 38694  
 38695  	var pPager uintptr
 38696  	var rc int32
 38697  	if argc != 2 {
 38698  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38699  			ts+24430, 0))
 38700  		return TCL_ERROR
 38701  	}
 38702  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38703  	rc = sqlite3.Xsqlite3PagerOpenSavepoint(tls, pPager, 1)
 38704  	if rc != SQLITE_OK {
 38705  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38706  		return TCL_ERROR
 38707  	}
 38708  	return TCL_OK
 38709  }
 38710  
 38711  func pager_stmt_rollback(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38712  	bp := tls.Alloc(48)
 38713  	defer tls.Free(48)
 38714  
 38715  	var pPager uintptr
 38716  	var rc int32
 38717  	if argc != 2 {
 38718  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38719  			ts+24430, 0))
 38720  		return TCL_ERROR
 38721  	}
 38722  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38723  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_ROLLBACK, 0)
 38724  	sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 38725  	if rc != SQLITE_OK {
 38726  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38727  		return TCL_ERROR
 38728  	}
 38729  	return TCL_OK
 38730  }
 38731  
 38732  func pager_stmt_commit(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38733  	bp := tls.Alloc(48)
 38734  	defer tls.Free(48)
 38735  
 38736  	var pPager uintptr
 38737  	var rc int32
 38738  	if argc != 2 {
 38739  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38740  			ts+24430, 0))
 38741  		return TCL_ERROR
 38742  	}
 38743  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38744  	rc = sqlite3.Xsqlite3PagerSavepoint(tls, pPager, SAVEPOINT_RELEASE, 0)
 38745  	if rc != SQLITE_OK {
 38746  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38747  		return TCL_ERROR
 38748  	}
 38749  	return TCL_OK
 38750  }
 38751  
 38752  func pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38753  	bp := tls.Alloc(140)
 38754  	defer tls.Free(140)
 38755  
 38756  	var pPager uintptr
 38757  	var i int32
 38758  	var a uintptr
 38759  	if argc != 2 {
 38760  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38761  			ts+24430, 0))
 38762  		return TCL_ERROR
 38763  	}
 38764  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38765  	a = sqlite3.Xsqlite3PagerStats(tls, pPager)
 38766  	for i = 0; i < 9; i++ {
 38767  		tcl.XTcl_AppendElement(tls, interp, zName[i])
 38768  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 38769  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 38770  	}
 38771  	return TCL_OK
 38772  }
 38773  
 38774  var zName = [9]uintptr{
 38775  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 38776  	ts + 24448, ts + 24452, ts + 24457,
 38777  }
 38778  
 38779  func pager_pagecount(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38780  	bp := tls.Alloc(160)
 38781  	defer tls.Free(160)
 38782  
 38783  	var pPager uintptr
 38784  
 38785  	if argc != 2 {
 38786  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38787  			ts+24430, 0))
 38788  		return TCL_ERROR
 38789  	}
 38790  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38791  	sqlite3.Xsqlite3PagerPagecount(tls, pPager, bp+56)
 38792  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 56))))
 38793  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 38794  	return TCL_OK
 38795  }
 38796  
 38797  func page_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38798  	bp := tls.Alloc(188)
 38799  	defer tls.Free(188)
 38800  
 38801  	var pPager uintptr
 38802  
 38803  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 38804  
 38805  	var rc int32
 38806  	if argc != 3 {
 38807  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38808  			ts+24462, 0))
 38809  		return TCL_ERROR
 38810  	}
 38811  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38812  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 38813  		return TCL_ERROR
 38814  	}
 38815  	rc = sqlite3.Xsqlite3PagerSharedLock(tls, pPager)
 38816  	if rc == SQLITE_OK {
 38817  		rc = sqlite3.Xsqlite3PagerGet(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 72))), bp+80, 0)
 38818  	}
 38819  	if rc != SQLITE_OK {
 38820  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38821  		return TCL_ERROR
 38822  	}
 38823  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 38824  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 38825  	return TCL_OK
 38826  }
 38827  
 38828  func page_lookup(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38829  	bp := tls.Alloc(160)
 38830  	defer tls.Free(160)
 38831  
 38832  	var pPager uintptr
 38833  
 38834  	var pPage uintptr
 38835  
 38836  	if argc != 3 {
 38837  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38838  			ts+24462, 0))
 38839  		return TCL_ERROR
 38840  	}
 38841  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38842  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+56) != 0 {
 38843  		return TCL_ERROR
 38844  	}
 38845  	pPage = sqlite3.Xsqlite3PagerLookup(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 56))))
 38846  	if pPage != 0 {
 38847  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+60, ts+9889, libc.VaList(bp+32, pPage))
 38848  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+60, 0))
 38849  	}
 38850  	return TCL_OK
 38851  }
 38852  
 38853  func pager_truncate(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38854  	bp := tls.Alloc(36)
 38855  	defer tls.Free(36)
 38856  
 38857  	var pPager uintptr
 38858  
 38859  	if argc != 3 {
 38860  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38861  			ts+24462, 0))
 38862  		return TCL_ERROR
 38863  	}
 38864  	pPager = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38865  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 38866  		return TCL_ERROR
 38867  	}
 38868  	sqlite3.Xsqlite3PagerTruncateImage(tls, pPager, uint32(*(*int32)(unsafe.Pointer(bp + 32))))
 38869  	return TCL_OK
 38870  }
 38871  
 38872  func page_unref(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38873  	bp := tls.Alloc(32)
 38874  	defer tls.Free(32)
 38875  
 38876  	var pPage uintptr
 38877  	if argc != 2 {
 38878  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38879  			ts+24472, 0))
 38880  		return TCL_ERROR
 38881  	}
 38882  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38883  	sqlite3.Xsqlite3PagerUnref(tls, pPage)
 38884  	return TCL_OK
 38885  }
 38886  
 38887  func page_read(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38888  	bp := tls.Alloc(148)
 38889  	defer tls.Free(148)
 38890  
 38891  	var pPage uintptr
 38892  	if argc != 2 {
 38893  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38894  			ts+24472, 0))
 38895  		return TCL_ERROR
 38896  	}
 38897  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38898  	libc.Xmemcpy(tls, bp+48, sqlite3.Xsqlite3PagerGetData(tls, pPage), uint64(unsafe.Sizeof([100]int8{})))
 38899  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+48, 0))
 38900  	return TCL_OK
 38901  }
 38902  
 38903  func page_number(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38904  	bp := tls.Alloc(156)
 38905  	defer tls.Free(156)
 38906  
 38907  	var pPage uintptr
 38908  	if argc != 2 {
 38909  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38910  			ts+24472, 0))
 38911  		return TCL_ERROR
 38912  	}
 38913  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38914  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+56, ts+1333, libc.VaList(bp+32, sqlite3.Xsqlite3PagerPagenumber(tls, pPage)))
 38915  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 38916  	return TCL_OK
 38917  }
 38918  
 38919  func page_write(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38920  	bp := tls.Alloc(48)
 38921  	defer tls.Free(48)
 38922  
 38923  	var pPage uintptr
 38924  	var pData uintptr
 38925  	var rc int32
 38926  	if argc != 3 {
 38927  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38928  			ts+24479, 0))
 38929  		return TCL_ERROR
 38930  	}
 38931  	pPage = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 38932  	rc = sqlite3.Xsqlite3PagerWrite(tls, pPage)
 38933  	if rc != SQLITE_OK {
 38934  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38935  		return TCL_ERROR
 38936  	}
 38937  	pData = sqlite3.Xsqlite3PagerGetData(tls, pPage)
 38938  	libc.Xstrncpy(tls, pData, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(test_pagesize-1))
 38939  	*(*int8)(unsafe.Pointer(pData + uintptr(test_pagesize-1))) = int8(0)
 38940  	return TCL_OK
 38941  }
 38942  
 38943  func fake_big_file(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38944  	bp := tls.Alloc(96)
 38945  	defer tls.Free(96)
 38946  
 38947  	var pVfs uintptr
 38948  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 38949  	var rc int32
 38950  
 38951  	var offset i64
 38952  	var zFile uintptr
 38953  	var nFile int32
 38954  	if argc != 3 {
 38955  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38956  			ts+24491, 0))
 38957  		return TCL_ERROR
 38958  	}
 38959  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+80) != 0 {
 38960  		return TCL_ERROR
 38961  	}
 38962  
 38963  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 38964  	nFile = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 38965  	zFile = sqlite3.Xsqlite3_malloc(tls, nFile+2)
 38966  	if zFile == uintptr(0) {
 38967  		return TCL_ERROR
 38968  	}
 38969  	libc.Xmemcpy(tls, zFile, *(*uintptr)(unsafe.Pointer(argv + 2*8)), uint64(nFile+1))
 38970  	*(*int8)(unsafe.Pointer(zFile + uintptr(nFile+1))) = int8(0)
 38971  	rc = sqlite3.Xsqlite3OsOpenMalloc(tls, pVfs, zFile, bp+88,
 38972  		SQLITE_OPEN_CREATE|SQLITE_OPEN_READWRITE|SQLITE_OPEN_MAIN_DB, uintptr(0))
 38973  	if rc != 0 {
 38974  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+24510, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38975  		sqlite3.Xsqlite3_free(tls, zFile)
 38976  		return TCL_ERROR
 38977  	}
 38978  	offset = i64(*(*int32)(unsafe.Pointer(bp + 80)))
 38979  	offset = offset * int64(1024*1024)
 38980  	rc = sqlite3.Xsqlite3OsWrite(tls, *(*uintptr)(unsafe.Pointer(bp + 88)), ts+24524, 14, offset)
 38981  	sqlite3.Xsqlite3OsCloseFree(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 38982  	sqlite3.Xsqlite3_free(tls, zFile)
 38983  	if rc != 0 {
 38984  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, ts+24538, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 38985  		return TCL_ERROR
 38986  	}
 38987  	return TCL_OK
 38988  }
 38989  
 38990  func testPendingByte(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 38991  	bp := tls.Alloc(44)
 38992  	defer tls.Free(44)
 38993  
 38994  	var rc int32
 38995  	if argc != 2 {
 38996  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 38997  			ts+24553, uintptr(0)))
 38998  		return TCL_ERROR
 38999  	}
 39000  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+40) != 0 {
 39001  		return TCL_ERROR
 39002  	}
 39003  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_PENDING_BYTE, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 40))))
 39004  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39005  	return TCL_OK
 39006  }
 39007  
 39008  var faultSimInterp uintptr = uintptr(0)
 39009  var faultSimScriptSize int32 = 0
 39010  var faultSimScript uintptr
 39011  
 39012  func faultSimCallback(tls *libc.TLS, x int32) int32 {
 39013  	bp := tls.Alloc(38)
 39014  	defer tls.Free(38)
 39015  
 39016  	var i int32
 39017  	var isNeg int32
 39018  	var rc int32
 39019  	if x == 0 {
 39020  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), ts+14193, uint64(2))
 39021  	} else {
 39022  		if x < 0 {
 39023  			isNeg = 1
 39024  			x = -x
 39025  		} else {
 39026  			isNeg = 0
 39027  		}
 39028  		*(*int8)(unsafe.Pointer(bp + 8 + 29)) = int8(0)
 39029  		i = int32(uint64(unsafe.Sizeof([30]int8{})) - uint64(2))
 39030  	__1:
 39031  		if !(i > 0 && x > 0) {
 39032  			goto __3
 39033  		}
 39034  		{
 39035  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8(x%10 + '0')
 39036  
 39037  		}
 39038  		goto __2
 39039  	__2:
 39040  		i--
 39041  		x = x / 10
 39042  		goto __1
 39043  		goto __3
 39044  	__3:
 39045  		;
 39046  		if isNeg != 0 {
 39047  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(libc.PostDecInt32(&i, 1)))) = int8('-')
 39048  		}
 39049  		libc.Xmemcpy(tls, faultSimScript+uintptr(faultSimScriptSize), bp+8+uintptr(i)+uintptr(1), uint64(unsafe.Sizeof([30]int8{}))-uint64(i))
 39050  	}
 39051  	rc = tcl.XTcl_Eval(tls, faultSimInterp, faultSimScript)
 39052  	if rc != 0 {
 39053  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+24568, libc.VaList(bp, faultSimScript))
 39054  		rc = SQLITE_ERROR
 39055  	} else {
 39056  		rc = libc.Xatoi(tls, tcl.XTcl_GetStringResult(tls, faultSimInterp))
 39057  	}
 39058  	tcl.XTcl_ResetResult(tls, faultSimInterp)
 39059  	return rc
 39060  }
 39061  
 39062  func faultInstallCmd(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39063  	bp := tls.Alloc(64)
 39064  	defer tls.Free(64)
 39065  
 39066  	var zScript uintptr
 39067  	var nScript int32
 39068  	var rc int32
 39069  	if argc != 1 && argc != 2 {
 39070  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39071  			ts+24604, uintptr(0)))
 39072  	}
 39073  	if argc == 2 {
 39074  		zScript = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 39075  	} else {
 39076  		zScript = ts + 584
 39077  	}
 39078  	nScript = int32(libc.Xstrlen(tls, zScript))
 39079  	if faultSimScript != 0 {
 39080  		libc.Xfree(tls, faultSimScript)
 39081  		faultSimScript = uintptr(0)
 39082  	}
 39083  	if nScript == 0 {
 39084  		rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_FAULT_INSTALL, libc.VaList(bp+32, 0))
 39085  	} else {
 39086  		faultSimScript = libc.Xmalloc(tls, uint64(nScript+100))
 39087  		if faultSimScript == uintptr(0) {
 39088  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+2069, uintptr(0)))
 39089  			return SQLITE_ERROR
 39090  		}
 39091  		libc.Xmemcpy(tls, faultSimScript, zScript, uint64(nScript))
 39092  		*(*int8)(unsafe.Pointer(faultSimScript + uintptr(nScript))) = int8(' ')
 39093  		faultSimScriptSize = nScript + 1
 39094  		faultSimInterp = interp
 39095  		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}))))
 39096  	}
 39097  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39098  	return SQLITE_OK
 39099  }
 39100  
 39101  func testBitvecBuiltinTest(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39102  	bp := tls.Alloc(452)
 39103  	defer tls.Free(452)
 39104  
 39105  	var rc int32
 39106  	var nProg int32 = 0
 39107  
 39108  	var z uintptr
 39109  	if argc != 3 {
 39110  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39111  			ts+24613, uintptr(0)))
 39112  	}
 39113  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+48) != 0 {
 39114  		return TCL_ERROR
 39115  	}
 39116  	z = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 39117  	for nProg < 99 && *(*int8)(unsafe.Pointer(z)) != 0 {
 39118  		for *(*int8)(unsafe.Pointer(z)) != 0 && !(int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0) {
 39119  			z++
 39120  		}
 39121  		if int32(*(*int8)(unsafe.Pointer(z))) == 0 {
 39122  			break
 39123  		}
 39124  		*(*int32)(unsafe.Pointer(bp + 52 + uintptr(libc.PostIncInt32(&nProg, 1))*4)) = libc.Xatoi(tls, z)
 39125  		for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 39126  			z++
 39127  		}
 39128  	}
 39129  	*(*int32)(unsafe.Pointer(bp + 52 + uintptr(nProg)*4)) = 0
 39130  	rc = sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BITVEC_TEST, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 48)), bp+52))
 39131  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 39132  	return TCL_OK
 39133  }
 39134  
 39135  func Sqlitetest2_Init(tls *libc.TLS, interp uintptr) int32 {
 39136  	var i int32
 39137  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd2))/uint64(unsafe.Sizeof(struct {
 39138  		FzName uintptr
 39139  		FxProc uintptr
 39140  	}{})); i++ {
 39141  		tcl.XTcl_CreateCommand(tls, interp, aCmd2[i].FzName, aCmd2[i].FxProc, uintptr(0), uintptr(0))
 39142  	}
 39143  	tcl.XTcl_LinkVar(tls, interp, ts+24628,
 39144  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_pending)), TCL_LINK_INT)
 39145  	tcl.XTcl_LinkVar(tls, interp, ts+24652,
 39146  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_persist)), TCL_LINK_INT)
 39147  	tcl.XTcl_LinkVar(tls, interp, ts+24676,
 39148  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hit)), TCL_LINK_INT)
 39149  	tcl.XTcl_LinkVar(tls, interp, ts+24696,
 39150  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_io_error_hardhit)), TCL_LINK_INT)
 39151  	tcl.XTcl_LinkVar(tls, interp, ts+24720,
 39152  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull_pending)), TCL_LINK_INT)
 39153  	tcl.XTcl_LinkVar(tls, interp, ts+24744,
 39154  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3_diskfull)), TCL_LINK_INT)
 39155  	tcl.XTcl_LinkVar(tls, interp, ts+24760,
 39156  		uintptr(unsafe.Pointer(&sqlite3.Xsqlite3PendingByte)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 39157  	return TCL_OK
 39158  }
 39159  
 39160  var aCmd2 = [20]struct {
 39161  	FzName uintptr
 39162  	FxProc uintptr
 39163  }{
 39164  	{FzName: ts + 24780, FxProc: 0},
 39165  	{FzName: ts + 24791, FxProc: 0},
 39166  	{FzName: ts + 24803, FxProc: 0},
 39167  	{FzName: ts + 24816, FxProc: 0},
 39168  	{FzName: ts + 24831, FxProc: 0},
 39169  	{FzName: ts + 24848, FxProc: 0},
 39170  	{FzName: ts + 24866, FxProc: 0},
 39171  	{FzName: ts + 24886, FxProc: 0},
 39172  	{FzName: ts + 24898, FxProc: 0},
 39173  	{FzName: ts + 24914, FxProc: 0},
 39174  	{FzName: ts + 24923, FxProc: 0},
 39175  	{FzName: ts + 24935, FxProc: 0},
 39176  	{FzName: ts + 24946, FxProc: 0},
 39177  	{FzName: ts + 24956, FxProc: 0},
 39178  	{FzName: ts + 24967, FxProc: 0},
 39179  	{FzName: ts + 24979, FxProc: 0},
 39180  	{FzName: ts + 24994, FxProc: 0},
 39181  	{FzName: ts + 25008, FxProc: 0},
 39182  	{FzName: ts + 25033, FxProc: 0},
 39183  	{FzName: ts + 25067, FxProc: 0},
 39184  }
 39185  
 39186  type Btree = Btree1
 39187  type BtCursor = BtCursor1
 39188  type BtShared = BtShared1
 39189  
 39190  type MemPage1 = struct {
 39191  	FisInit          u8
 39192  	FintKey          u8
 39193  	FintKeyLeaf      u8
 39194  	F__ccgo_pad1     [1]byte
 39195  	Fpgno            Pgno
 39196  	Fleaf            u8
 39197  	FhdrOffset       u8
 39198  	FchildPtrSize    u8
 39199  	Fmax1bytePayload u8
 39200  	FnOverflow       u8
 39201  	F__ccgo_pad2     [1]byte
 39202  	FmaxLocal        u16
 39203  	FminLocal        u16
 39204  	FcellOffset      u16
 39205  	FnFree           int32
 39206  	FnCell           u16
 39207  	FmaskPage        u16
 39208  	FaiOvfl          [4]u16
 39209  	F__ccgo_pad3     [4]byte
 39210  	FapOvfl          [4]uintptr
 39211  	FpBt             uintptr
 39212  	FaData           uintptr
 39213  	FaDataEnd        uintptr
 39214  	FaCellIdx        uintptr
 39215  	FaDataOfst       uintptr
 39216  	FpDbPage         uintptr
 39217  	FxCellSize       uintptr
 39218  	FxParseCell      uintptr
 39219  }
 39220  
 39221  type MemPage = MemPage1
 39222  type BtLock1 = struct {
 39223  	FpBtree      uintptr
 39224  	FiTable      Pgno
 39225  	FeLock       u8
 39226  	F__ccgo_pad1 [3]byte
 39227  	FpNext       uintptr
 39228  }
 39229  
 39230  type BtLock = BtLock1
 39231  type CellInfo1 = struct {
 39232  	FnKey     i64
 39233  	FpPayload uintptr
 39234  	FnPayload u32
 39235  	FnLocal   u16
 39236  	FnSize    u16
 39237  }
 39238  
 39239  type CellInfo = CellInfo1
 39240  
 39241  type IntegrityCk1 = struct {
 39242  	FpBt       uintptr
 39243  	FpPager    uintptr
 39244  	FaPgRef    uintptr
 39245  	FnPage     Pgno
 39246  	FmxErr     int32
 39247  	FnErr      int32
 39248  	FbOomFault int32
 39249  	FzPfx      uintptr
 39250  	Fv1        Pgno
 39251  	Fv2        int32
 39252  	FerrMsg    StrAccum
 39253  	Fheap      uintptr
 39254  	Fdb        uintptr
 39255  }
 39256  
 39257  type IntegrityCk = IntegrityCk1
 39258  
 39259  var sDb sqlite31
 39260  var nRefSqlite3 int32 = 0
 39261  
 39262  func btree_open(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39263  	bp := tls.Alloc(188)
 39264  	defer tls.Free(188)
 39265  
 39266  	var rc int32
 39267  
 39268  	var n int32
 39269  	var zFilename uintptr
 39270  	if argc != 3 {
 39271  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39272  			ts+25102, 0))
 39273  		return TCL_ERROR
 39274  	}
 39275  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39276  		return TCL_ERROR
 39277  	}
 39278  	nRefSqlite3++
 39279  	if nRefSqlite3 == 1 {
 39280  		sDb.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 39281  		sDb.Fmutex = sqlite3.Xsqlite3MutexAlloc(tls, SQLITE_MUTEX_RECURSIVE)
 39282  		sqlite3.Xsqlite3_mutex_enter(tls, sDb.Fmutex)
 39283  	}
 39284  	n = int32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 39285  	zFilename = sqlite3.Xsqlite3_malloc(tls, n+2)
 39286  	if zFilename == uintptr(0) {
 39287  		return TCL_ERROR
 39288  	}
 39289  	libc.Xmemcpy(tls, zFilename, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint64(n+1))
 39290  	*(*int8)(unsafe.Pointer(zFilename + uintptr(n+1))) = int8(0)
 39291  	rc = sqlite3.Xsqlite3BtreeOpen(tls, sDb.FpVfs, zFilename, uintptr(unsafe.Pointer(&sDb)), bp+80, 0,
 39292  		SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE|SQLITE_OPEN_MAIN_DB)
 39293  	sqlite3.Xsqlite3_free(tls, zFilename)
 39294  	if rc != SQLITE_OK {
 39295  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39296  		return TCL_ERROR
 39297  	}
 39298  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 72)))
 39299  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+88, ts+9889, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(bp + 80))))
 39300  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+88, 0))
 39301  	return TCL_OK
 39302  }
 39303  
 39304  func btree_close(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39305  	bp := tls.Alloc(48)
 39306  	defer tls.Free(48)
 39307  
 39308  	var pBt uintptr
 39309  	var rc int32
 39310  	if argc != 2 {
 39311  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39312  			ts+24430, 0))
 39313  		return TCL_ERROR
 39314  	}
 39315  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39316  	rc = sqlite3.Xsqlite3BtreeClose(tls, pBt)
 39317  	if rc != SQLITE_OK {
 39318  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39319  		return TCL_ERROR
 39320  	}
 39321  	nRefSqlite3--
 39322  	if nRefSqlite3 == 0 {
 39323  		sqlite3.Xsqlite3_mutex_leave(tls, sDb.Fmutex)
 39324  		sqlite3.Xsqlite3_mutex_free(tls, sDb.Fmutex)
 39325  		sDb.Fmutex = uintptr(0)
 39326  		sDb.FpVfs = uintptr(0)
 39327  	}
 39328  	return TCL_OK
 39329  }
 39330  
 39331  func btree_begin_transaction(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39332  	bp := tls.Alloc(48)
 39333  	defer tls.Free(48)
 39334  
 39335  	var pBt uintptr
 39336  	var rc int32
 39337  	if argc != 2 {
 39338  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39339  			ts+24430, 0))
 39340  		return TCL_ERROR
 39341  	}
 39342  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39343  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39344  	rc = sqlite3.Xsqlite3BtreeBeginTrans(tls, pBt, 1, uintptr(0))
 39345  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39346  	if rc != SQLITE_OK {
 39347  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39348  		return TCL_ERROR
 39349  	}
 39350  	return TCL_OK
 39351  }
 39352  
 39353  func btree_pager_stats(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39354  	bp := tls.Alloc(140)
 39355  	defer tls.Free(140)
 39356  
 39357  	var pBt uintptr
 39358  	var i int32
 39359  	var a uintptr
 39360  
 39361  	if argc != 2 {
 39362  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39363  			ts+24430, 0))
 39364  		return TCL_ERROR
 39365  	}
 39366  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39367  
 39368  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39369  
 39370  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39371  	a = sqlite3.Xsqlite3PagerStats(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 39372  	for i = 0; i < 11; i++ {
 39373  		tcl.XTcl_AppendElement(tls, interp, zName1[i])
 39374  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+40, ts+1333, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(a + uintptr(i)*4))))
 39375  		tcl.XTcl_AppendElement(tls, interp, bp+40)
 39376  	}
 39377  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39378  
 39379  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39380  	return TCL_OK
 39381  }
 39382  
 39383  var zName1 = [11]uintptr{
 39384  	ts + 24435, ts + 24439, ts + 18254, ts + 11809, ts + 9558, ts + 24444,
 39385  	ts + 24448, ts + 24452, ts + 24457, ts + 25126, ts + 25131,
 39386  }
 39387  
 39388  func btree_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39389  	bp := tls.Alloc(110)
 39390  	defer tls.Free(110)
 39391  
 39392  	var pBt uintptr
 39393  
 39394  	var pCur uintptr
 39395  	var rc int32 = SQLITE_OK
 39396  
 39397  	if argc != 4 {
 39398  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39399  			ts+25137, 0))
 39400  		return TCL_ERROR
 39401  	}
 39402  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39403  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+72) != 0 {
 39404  		return TCL_ERROR
 39405  	}
 39406  	if tcl.XTcl_GetBoolean(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+76) != 0 {
 39407  		return TCL_ERROR
 39408  	}
 39409  	if *(*int32)(unsafe.Pointer(bp + 76)) != 0 {
 39410  		*(*int32)(unsafe.Pointer(bp + 76)) = BTREE_WRCSR
 39411  	}
 39412  	pCur = tcl.XTcl_Alloc(tls, uint32(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39413  	libc.Xmemset(tls, pCur, 0, uint64(sqlite3.Xsqlite3BtreeCursorSize(tls)))
 39414  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39415  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39416  	rc = sqlite3.Xsqlite3BtreeLockTable(tls, pBt, *(*int32)(unsafe.Pointer(bp + 72)), libc.BoolUint8(!!(*(*int32)(unsafe.Pointer(bp + 76)) != 0)))
 39417  	if rc == SQLITE_OK {
 39418  		rc = sqlite3.Xsqlite3BtreeCursor(tls, pBt, uint32(*(*int32)(unsafe.Pointer(bp + 72))), *(*int32)(unsafe.Pointer(bp + 76)), uintptr(0), pCur)
 39419  	}
 39420  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39421  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39422  	if rc != 0 {
 39423  		tcl.XTcl_Free(tls, pCur)
 39424  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39425  		return TCL_ERROR
 39426  	}
 39427  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+80, ts+9889, libc.VaList(bp+48, pCur))
 39428  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+80, 0))
 39429  	return SQLITE_OK
 39430  }
 39431  
 39432  func btree_close_cursor(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39433  	bp := tls.Alloc(48)
 39434  	defer tls.Free(48)
 39435  
 39436  	var pCur uintptr
 39437  	var rc int32
 39438  
 39439  	if argc != 2 {
 39440  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39441  			ts+24430, 0))
 39442  		return TCL_ERROR
 39443  	}
 39444  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39445  	{
 39446  		var pBt uintptr = (*BtCursor)(unsafe.Pointer(pCur)).FpBtree
 39447  		sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39448  		sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39449  		rc = sqlite3.Xsqlite3BtreeCloseCursor(tls, pCur)
 39450  		sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39451  		sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39452  
 39453  	}
 39454  	tcl.XTcl_Free(tls, pCur)
 39455  	if rc != 0 {
 39456  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39457  		return TCL_ERROR
 39458  	}
 39459  	return SQLITE_OK
 39460  }
 39461  
 39462  func btree_next(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39463  	bp := tls.Alloc(172)
 39464  	defer tls.Free(172)
 39465  
 39466  	var pCur uintptr
 39467  	var rc int32
 39468  	var res int32 = 0
 39469  
 39470  	if argc != 2 {
 39471  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39472  			ts+24430, 0))
 39473  		return TCL_ERROR
 39474  	}
 39475  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39476  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39477  	rc = sqlite3.Xsqlite3BtreeNext(tls, pCur, 0)
 39478  	if rc == SQLITE_DONE {
 39479  		res = 1
 39480  		rc = SQLITE_OK
 39481  	}
 39482  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39483  	if rc != 0 {
 39484  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39485  		return TCL_ERROR
 39486  	}
 39487  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, res))
 39488  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 39489  	return SQLITE_OK
 39490  }
 39491  
 39492  func btree_first(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39493  	bp := tls.Alloc(176)
 39494  	defer tls.Free(176)
 39495  
 39496  	var pCur uintptr
 39497  	var rc int32
 39498  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 39499  
 39500  	if argc != 2 {
 39501  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39502  			ts+24430, 0))
 39503  		return TCL_ERROR
 39504  	}
 39505  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39506  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39507  	rc = sqlite3.Xsqlite3BtreeFirst(tls, pCur, bp+72)
 39508  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39509  	if rc != 0 {
 39510  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc), 0))
 39511  		return TCL_ERROR
 39512  	}
 39513  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+76, ts+1333, libc.VaList(bp+48, *(*int32)(unsafe.Pointer(bp + 72))))
 39514  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+76, 0))
 39515  	return SQLITE_OK
 39516  }
 39517  
 39518  func btree_eof(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39519  	bp := tls.Alloc(106)
 39520  	defer tls.Free(106)
 39521  
 39522  	var pCur uintptr
 39523  	var rc int32
 39524  
 39525  	if argc != 2 {
 39526  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39527  			ts+24430, 0))
 39528  		return TCL_ERROR
 39529  	}
 39530  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39531  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39532  	rc = sqlite3.Xsqlite3BtreeEof(tls, pCur)
 39533  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39534  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+1333, libc.VaList(bp+32, rc))
 39535  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39536  	return SQLITE_OK
 39537  }
 39538  
 39539  func btree_payload_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39540  	bp := tls.Alloc(106)
 39541  	defer tls.Free(106)
 39542  
 39543  	var pCur uintptr
 39544  	var n u32
 39545  
 39546  	if argc != 2 {
 39547  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39548  			ts+24430, 0))
 39549  		return TCL_ERROR
 39550  	}
 39551  	pCur = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39552  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39553  	n = sqlite3.Xsqlite3BtreePayloadSize(tls, pCur)
 39554  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39555  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+56, ts+17791, libc.VaList(bp+32, n))
 39556  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+56, 0))
 39557  	return SQLITE_OK
 39558  }
 39559  
 39560  func btree_varint_test(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39561  	bp := tls.Alloc(516)
 39562  	defer tls.Free(516)
 39563  
 39564  	var in u64
 39565  
 39566  	var n1 int32
 39567  	var n2 int32
 39568  	var i int32
 39569  	var j int32
 39570  
 39571  	if argc != 5 {
 39572  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39573  			ts+25161, 0))
 39574  		return TCL_ERROR
 39575  	}
 39576  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+184) != 0 {
 39577  		return TCL_ERROR
 39578  	}
 39579  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+188) != 0 {
 39580  		return TCL_ERROR
 39581  	}
 39582  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 3*8)), bp+192) != 0 {
 39583  		return TCL_ERROR
 39584  	}
 39585  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 4*8)), bp+196) != 0 {
 39586  		return TCL_ERROR
 39587  	}
 39588  	in = u64(*(*u32)(unsafe.Pointer(bp + 184)))
 39589  	in = in * u64(*(*u32)(unsafe.Pointer(bp + 188)))
 39590  	for i = 0; i < int32(*(*u32)(unsafe.Pointer(bp + 192))); i++ {
 39591  		n1 = sqlite3.Xsqlite3PutVarint(tls, bp+200, in)
 39592  		if n1 > 9 || n1 < 1 {
 39593  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39594  				ts+25196, libc.VaList(bp+32, n1))
 39595  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+300, 0))
 39596  			return TCL_ERROR
 39597  		}
 39598  		n2 = int32(sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504))
 39599  		if n1 != n2 {
 39600  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39601  				ts+25246, libc.VaList(bp+56, n1, n2))
 39602  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, bp+300, 0))
 39603  			return TCL_ERROR
 39604  		}
 39605  		if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 39606  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39607  				ts+25294, libc.VaList(bp+88, in, *(*u64)(unsafe.Pointer(bp + 504))))
 39608  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+104, bp+300, 0))
 39609  			return TCL_ERROR
 39610  		}
 39611  		if in&uint64(0xffffffff) == in {
 39612  			n2 = int32(func() uint8 {
 39613  				if int32(*(*uint8)(unsafe.Pointer(bp + 200))) < int32(u8(0x80)) {
 39614  					return uint8(func() int32 { *(*u32)(unsafe.Pointer(bp + 512)) = u32(*(*uint8)(unsafe.Pointer(bp + 200))); return 1 }())
 39615  				}
 39616  				return sqlite3.Xsqlite3GetVarint32(tls, bp+200, bp+512)
 39617  			}())
 39618  			*(*u64)(unsafe.Pointer(bp + 504)) = u64(*(*u32)(unsafe.Pointer(bp + 512)))
 39619  			if n1 != n2 {
 39620  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39621  					ts+25333,
 39622  					libc.VaList(bp+120, n1, n2))
 39623  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+136, bp+300, 0))
 39624  				return TCL_ERROR
 39625  			}
 39626  			if in != *(*u64)(unsafe.Pointer(bp + 504)) {
 39627  				sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([200]int8{})), bp+300,
 39628  					ts+25383,
 39629  					libc.VaList(bp+152, in, *(*u64)(unsafe.Pointer(bp + 504))))
 39630  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+168, bp+300, 0))
 39631  				return TCL_ERROR
 39632  			}
 39633  		}
 39634  
 39635  		for j = 0; j < 19; j++ {
 39636  			sqlite3.Xsqlite3GetVarint(tls, bp+200, bp+504)
 39637  		}
 39638  		in = in + u64(*(*u32)(unsafe.Pointer(bp + 196)))
 39639  	}
 39640  	return TCL_OK
 39641  }
 39642  
 39643  func btree_from_db(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39644  	bp := tls.Alloc(236)
 39645  	defer tls.Free(236)
 39646  
 39647  	var db uintptr
 39648  	var pBt uintptr
 39649  	var iDb int32 = 0
 39650  
 39651  	if argc != 2 && argc != 3 {
 39652  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39653  			ts+25439, 0))
 39654  		return TCL_ERROR
 39655  	}
 39656  
 39657  	if 1 != tcl.XTcl_GetCommandInfo(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)), bp+72) {
 39658  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25455, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+11945, 0))
 39659  		return TCL_ERROR
 39660  	}
 39661  	if argc == 3 {
 39662  		iDb = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 39663  	}
 39664  
 39665  	db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 72)).FobjClientData))
 39666  
 39667  	pBt = (*Db)(unsafe.Pointer((*sqlite31)(unsafe.Pointer(db)).FaDb + uintptr(iDb)*32)).FpBt
 39668  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+136, ts+9889, libc.VaList(bp+64, pBt))
 39669  	tcl.XTcl_SetResult(tls, interp, bp+136, uintptr(1))
 39670  	return TCL_OK
 39671  }
 39672  
 39673  func btree_ismemdb(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39674  	bp := tls.Alloc(32)
 39675  	defer tls.Free(32)
 39676  
 39677  	var pBt uintptr
 39678  	var res int32
 39679  	var pFile uintptr
 39680  
 39681  	if argc != 2 {
 39682  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39683  			ts+24430, 0))
 39684  		return TCL_ERROR
 39685  	}
 39686  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39687  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39688  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39689  	pFile = sqlite3.Xsqlite3PagerFile(tls, sqlite3.Xsqlite3BtreePager(tls, pBt))
 39690  	res = libc.Bool32((*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods == uintptr(0))
 39691  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39692  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39693  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(res != 0)))
 39694  	return SQLITE_OK
 39695  }
 39696  
 39697  func btree_set_cache_size(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39698  	bp := tls.Alloc(36)
 39699  	defer tls.Free(36)
 39700  
 39701  	var pBt uintptr
 39702  
 39703  	if argc != 3 {
 39704  		tcl.XTcl_AppendResult(tls,
 39705  			interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)), ts+25476, 0))
 39706  		return TCL_ERROR
 39707  	}
 39708  	pBt = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39709  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+32) != 0 {
 39710  		return TCL_ERROR
 39711  	}
 39712  
 39713  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39714  	sqlite3.Xsqlite3BtreeEnter(tls, pBt)
 39715  	sqlite3.Xsqlite3BtreeSetCacheSize(tls, pBt, *(*int32)(unsafe.Pointer(bp + 32)))
 39716  	sqlite3.Xsqlite3BtreeLeave(tls, pBt)
 39717  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer(pBt)).Fdb)).Fmutex)
 39718  	return TCL_OK
 39719  }
 39720  
 39721  func btree_insert(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 39722  	bp := tls.Alloc(68)
 39723  	defer tls.Free(68)
 39724  
 39725  	var pCur uintptr
 39726  
 39727  	if objc != 4 && objc != 3 {
 39728  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+25488)
 39729  		return TCL_ERROR
 39730  	}
 39731  
 39732  	libc.Xmemset(tls, bp+16, 0, uint64(unsafe.Sizeof(BtreePayload{})))
 39733  	if objc == 4 {
 39734  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 39735  			return TCL_ERROR
 39736  		}
 39737  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 39738  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpData = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+16+36)
 39739  	} else {
 39740  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FpKey = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64)
 39741  		(*BtreePayload)(unsafe.Pointer(bp + 16)).FnKey = sqlite3_int64(*(*int32)(unsafe.Pointer(bp + 64)))
 39742  	}
 39743  	pCur = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 39744  
 39745  	sqlite3.Xsqlite3_mutex_enter(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 39746  	sqlite3.Xsqlite3BtreeEnter(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39747  	*(*int32)(unsafe.Pointer(bp + 64)) = sqlite3.Xsqlite3BtreeInsert(tls, pCur, bp+16, 0, 0)
 39748  	sqlite3.Xsqlite3BtreeLeave(tls, (*BtCursor)(unsafe.Pointer(pCur)).FpBtree)
 39749  	sqlite3.Xsqlite3_mutex_leave(tls, (*sqlite31)(unsafe.Pointer((*Btree)(unsafe.Pointer((*BtCursor)(unsafe.Pointer(pCur)).FpBtree)).Fdb)).Fmutex)
 39750  
 39751  	tcl.XTcl_ResetResult(tls, interp)
 39752  	if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 39753  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, *(*int32)(unsafe.Pointer(bp + 64))), 0))
 39754  		return TCL_ERROR
 39755  	}
 39756  	return TCL_OK
 39757  }
 39758  
 39759  func Sqlitetest3_Init(tls *libc.TLS, interp uintptr) int32 {
 39760  	var i int32
 39761  
 39762  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd3))/uint64(unsafe.Sizeof(struct {
 39763  		FzName uintptr
 39764  		FxProc uintptr
 39765  	}{})); i++ {
 39766  		tcl.XTcl_CreateCommand(tls, interp, aCmd3[i].FzName, aCmd3[i].FxProc, uintptr(0), uintptr(0))
 39767  	}
 39768  
 39769  	tcl.XTcl_CreateObjCommand(tls, interp, ts+25512, *(*uintptr)(unsafe.Pointer(&struct {
 39770  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 39771  	}{btree_insert})), uintptr(0), uintptr(0))
 39772  
 39773  	return TCL_OK
 39774  }
 39775  
 39776  var aCmd3 = [14]struct {
 39777  	FzName uintptr
 39778  	FxProc uintptr
 39779  }{
 39780  	{FzName: ts + 25525, FxProc: 0},
 39781  	{FzName: ts + 25536, FxProc: 0},
 39782  	{FzName: ts + 25548, FxProc: 0},
 39783  	{FzName: ts + 25572, FxProc: 0},
 39784  	{FzName: ts + 25590, FxProc: 0},
 39785  	{FzName: ts + 25603, FxProc: 0},
 39786  	{FzName: ts + 25622, FxProc: 0},
 39787  	{FzName: ts + 25633, FxProc: 0},
 39788  	{FzName: ts + 25643, FxProc: 0},
 39789  	{FzName: ts + 25662, FxProc: 0},
 39790  	{FzName: ts + 25674, FxProc: 0},
 39791  	{FzName: ts + 25692, FxProc: 0},
 39792  	{FzName: ts + 25706, FxProc: 0},
 39793  	{FzName: ts + 25720, FxProc: 0},
 39794  }
 39795  
 39796  type sched_param = struct{ Fsched_priority int32 }
 39797  
 39798  type pthread_once = struct {
 39799  	Fstate       int32
 39800  	F__ccgo_pad1 [4]byte
 39801  	Fmutex       pthread_mutex_t
 39802  }
 39803  
 39804  type pthread_t = uintptr
 39805  type pthread_attr_t = uintptr
 39806  type pthread_mutex_t = uintptr
 39807  type pthread_mutexattr_t = uintptr
 39808  type pthread_cond_t = uintptr
 39809  type pthread_condattr_t = uintptr
 39810  type pthread_key_t = int32
 39811  type pthread_once_t = pthread_once
 39812  type pthread_rwlock_t = uintptr
 39813  type pthread_rwlockattr_t = uintptr
 39814  type pthread_barrier_t = uintptr
 39815  type pthread_barrierattr_t = uintptr
 39816  type pthread_spinlock_t = uintptr
 39817  
 39818  type pthread_addr_t = uintptr
 39819  type pthread_startroutine_t = uintptr
 39820  
 39821  type Thread = struct {
 39822  	FzFilename   uintptr
 39823  	FxOp         uintptr
 39824  	FzArg        uintptr
 39825  	Fopnum       int32
 39826  	Fbusy        int32
 39827  	Fcompleted   int32
 39828  	F__ccgo_pad1 [4]byte
 39829  	Fdb          uintptr
 39830  	FpStmt       uintptr
 39831  	FzErr        uintptr
 39832  	FzStaticErr  uintptr
 39833  	Frc          int32
 39834  	Fargc        int32
 39835  	Fargv        [100]uintptr
 39836  	Fcolv        [100]uintptr
 39837  }
 39838  
 39839  var threadset [26]Thread
 39840  
 39841  func test_barrier(tls *libc.TLS) {
 39842  	var pMutex uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_APP1)
 39843  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 39844  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 39845  }
 39846  
 39847  func test_thread_main(tls *libc.TLS, pArg uintptr) uintptr {
 39848  	var p uintptr = pArg
 39849  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 39850  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39851  	}
 39852  	sqlite3.Xsqlite3_open(tls, (*Thread)(unsafe.Pointer(p)).FzFilename, p+40)
 39853  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread)(unsafe.Pointer(p)).Fdb) {
 39854  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread)(unsafe.Pointer(p)).Fdb))
 39855  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39856  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 39857  	}
 39858  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 39859  	test_barrier(tls)
 39860  	(*Thread)(unsafe.Pointer(p)).Fcompleted = 1
 39861  	for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39862  		libc.Xsched_yield(tls)
 39863  	}
 39864  	test_barrier(tls)
 39865  	for (*Thread)(unsafe.Pointer(p)).FxOp != 0 {
 39866  		if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 39867  			sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 39868  			(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 39869  		}
 39870  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 39871  		test_barrier(tls)
 39872  		(*Thread)(unsafe.Pointer(p)).Fcompleted++
 39873  		for (*Thread)(unsafe.Pointer(p)).Fopnum <= (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39874  			libc.Xsched_yield(tls)
 39875  		}
 39876  		test_barrier(tls)
 39877  	}
 39878  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 39879  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 39880  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 39881  	}
 39882  	if (*Thread)(unsafe.Pointer(p)).Fdb != 0 {
 39883  		sqlite3.Xsqlite3_close(tls, (*Thread)(unsafe.Pointer(p)).Fdb)
 39884  		(*Thread)(unsafe.Pointer(p)).Fdb = uintptr(0)
 39885  	}
 39886  	if (*Thread)(unsafe.Pointer(p)).FzErr != 0 && (*Thread)(unsafe.Pointer(p)).FzErr != (*Thread)(unsafe.Pointer(p)).FzStaticErr {
 39887  		sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzErr)
 39888  		(*Thread)(unsafe.Pointer(p)).FzErr = uintptr(0)
 39889  	}
 39890  	test_barrier(tls)
 39891  	(*Thread)(unsafe.Pointer(p)).Fcompleted++
 39892  	sqlite3.Xsqlite3_thread_cleanup(tls)
 39893  	return uintptr(0)
 39894  }
 39895  
 39896  func parse_thread_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 39897  	bp := tls.Alloc(16)
 39898  	defer tls.Free(16)
 39899  
 39900  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(libc.Xisupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 39901  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 39902  		return -1
 39903  	}
 39904  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 39905  }
 39906  
 39907  func tcl_thread_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39908  	bp := tls.Alloc(96)
 39909  	defer tls.Free(96)
 39910  
 39911  	var i int32
 39912  
 39913  	var rc int32
 39914  
 39915  	if argc != 3 {
 39916  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39917  			ts+25780, 0))
 39918  		return TCL_ERROR
 39919  	}
 39920  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39921  	if i < 0 {
 39922  		return TCL_ERROR
 39923  	}
 39924  	if threadset[i].Fbusy != 0 {
 39925  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 39926  		return TCL_ERROR
 39927  	}
 39928  	threadset[i].Fbusy = 1
 39929  	sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 39930  	threadset[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 39931  	threadset[i].Fopnum = 1
 39932  	threadset[i].Fcompleted = 0
 39933  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 39934  		f func(*libc.TLS, uintptr) uintptr
 39935  	}{test_thread_main})), uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39936  	if rc != 0 {
 39937  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 39938  		sqlite3.Xsqlite3_free(tls, threadset[i].FzFilename)
 39939  		threadset[i].Fbusy = 0
 39940  		return TCL_ERROR
 39941  	}
 39942  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 39943  	return TCL_OK
 39944  }
 39945  
 39946  func test_thread_wait(tls *libc.TLS, p uintptr) {
 39947  	test_barrier(tls)
 39948  	for (*Thread)(unsafe.Pointer(p)).Fopnum > (*Thread)(unsafe.Pointer(p)).Fcompleted {
 39949  		libc.Xsched_yield(tls)
 39950  	}
 39951  	test_barrier(tls)
 39952  }
 39953  
 39954  func tcl_thread_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39955  	bp := tls.Alloc(48)
 39956  	defer tls.Free(48)
 39957  
 39958  	var i int32
 39959  
 39960  	if argc != 2 {
 39961  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39962  			ts+25849, 0))
 39963  		return TCL_ERROR
 39964  	}
 39965  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 39966  	if i < 0 {
 39967  		return TCL_ERROR
 39968  	}
 39969  	if !(threadset[i].Fbusy != 0) {
 39970  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 39971  		return TCL_ERROR
 39972  	}
 39973  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 39974  	return TCL_OK
 39975  }
 39976  
 39977  func test_stop_thread(tls *libc.TLS, p uintptr) {
 39978  	test_thread_wait(tls, p)
 39979  	(*Thread)(unsafe.Pointer(p)).FxOp = uintptr(0)
 39980  	(*Thread)(unsafe.Pointer(p)).Fopnum++
 39981  	test_thread_wait(tls, p)
 39982  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzArg)
 39983  	(*Thread)(unsafe.Pointer(p)).FzArg = uintptr(0)
 39984  	sqlite3.Xsqlite3_free(tls, (*Thread)(unsafe.Pointer(p)).FzFilename)
 39985  	(*Thread)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 39986  	(*Thread)(unsafe.Pointer(p)).Fbusy = 0
 39987  }
 39988  
 39989  func tcl_thread_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 39990  	bp := tls.Alloc(48)
 39991  	defer tls.Free(48)
 39992  
 39993  	var i int32
 39994  
 39995  	if argc != 2 {
 39996  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 39997  			ts+25849, 0))
 39998  		return TCL_ERROR
 39999  	}
 40000  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 40001  		for i = 0; i < N_THREAD; i++ {
 40002  			if threadset[i].Fbusy != 0 {
 40003  				test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40004  			}
 40005  		}
 40006  	} else {
 40007  		i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40008  		if i < 0 {
 40009  			return TCL_ERROR
 40010  		}
 40011  		if !(threadset[i].Fbusy != 0) {
 40012  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40013  			return TCL_ERROR
 40014  		}
 40015  		test_stop_thread(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40016  	}
 40017  	return TCL_OK
 40018  }
 40019  
 40020  func tcl_thread_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40021  	bp := tls.Alloc(172)
 40022  	defer tls.Free(172)
 40023  
 40024  	var i int32
 40025  
 40026  	if argc != 2 {
 40027  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40028  			ts+25849, 0))
 40029  		return TCL_ERROR
 40030  	}
 40031  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40032  	if i < 0 {
 40033  		return TCL_ERROR
 40034  	}
 40035  	if !(threadset[i].Fbusy != 0) {
 40036  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40037  		return TCL_ERROR
 40038  	}
 40039  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40040  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset[i].Fargc))
 40041  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 40042  	return TCL_OK
 40043  }
 40044  
 40045  func tcl_thread_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40046  	bp := tls.Alloc(84)
 40047  	defer tls.Free(84)
 40048  
 40049  	var i int32
 40050  
 40051  	if argc != 3 {
 40052  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40053  			ts+25868, 0))
 40054  		return TCL_ERROR
 40055  	}
 40056  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40057  	if i < 0 {
 40058  		return TCL_ERROR
 40059  	}
 40060  	if !(threadset[i].Fbusy != 0) {
 40061  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40062  		return TCL_ERROR
 40063  	}
 40064  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40065  		return TCL_ERROR
 40066  	}
 40067  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40068  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40069  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40070  		return TCL_ERROR
 40071  	}
 40072  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset)) + uintptr(i)*1680 + 80 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*8)), 0))
 40073  	return TCL_OK
 40074  }
 40075  
 40076  func tcl_thread_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40077  	bp := tls.Alloc(84)
 40078  	defer tls.Free(84)
 40079  
 40080  	var i int32
 40081  
 40082  	if argc != 3 {
 40083  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40084  			ts+25868, 0))
 40085  		return TCL_ERROR
 40086  	}
 40087  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40088  	if i < 0 {
 40089  		return TCL_ERROR
 40090  	}
 40091  	if !(threadset[i].Fbusy != 0) {
 40092  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40093  		return TCL_ERROR
 40094  	}
 40095  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 40096  		return TCL_ERROR
 40097  	}
 40098  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40099  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset[i].Fargc {
 40100  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 40101  		return TCL_ERROR
 40102  	}
 40103  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset)) + uintptr(i)*1680 + 880 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*8)), 0))
 40104  	return TCL_OK
 40105  }
 40106  
 40107  func tcl_thread_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40108  	bp := tls.Alloc(64)
 40109  	defer tls.Free(64)
 40110  
 40111  	var i int32
 40112  	var zName uintptr
 40113  
 40114  	if argc != 2 {
 40115  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40116  			ts+25849, 0))
 40117  		return TCL_ERROR
 40118  	}
 40119  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40120  	if i < 0 {
 40121  		return TCL_ERROR
 40122  	}
 40123  	if !(threadset[i].Fbusy != 0) {
 40124  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40125  		return TCL_ERROR
 40126  	}
 40127  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40128  	zName = sqlite3.Xsqlite3ErrName(tls, threadset[i].Frc)
 40129  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 40130  	return TCL_OK
 40131  }
 40132  
 40133  func tcl_thread_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40134  	bp := tls.Alloc(64)
 40135  	defer tls.Free(64)
 40136  
 40137  	var i int32
 40138  
 40139  	if argc != 2 {
 40140  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40141  			ts+25849, 0))
 40142  		return TCL_ERROR
 40143  	}
 40144  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40145  	if i < 0 {
 40146  		return TCL_ERROR
 40147  	}
 40148  	if !(threadset[i].Fbusy != 0) {
 40149  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40150  		return TCL_ERROR
 40151  	}
 40152  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40153  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset[i].FzErr, 0))
 40154  	return TCL_OK
 40155  }
 40156  
 40157  func do_compile(tls *libc.TLS, p uintptr) {
 40158  	if (*Thread)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 40159  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 40160  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40161  		return
 40162  	}
 40163  	if (*Thread)(unsafe.Pointer(p)).FpStmt != 0 {
 40164  		sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40165  		(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40166  	}
 40167  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_prepare(tls, (*Thread)(unsafe.Pointer(p)).Fdb, (*Thread)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 40168  }
 40169  
 40170  func tcl_thread_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40171  	bp := tls.Alloc(56)
 40172  	defer tls.Free(56)
 40173  
 40174  	var i int32
 40175  	if argc != 3 {
 40176  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40177  			ts+25921, 0))
 40178  		return TCL_ERROR
 40179  	}
 40180  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40181  	if i < 0 {
 40182  		return TCL_ERROR
 40183  	}
 40184  	if !(threadset[i].Fbusy != 0) {
 40185  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40186  		return TCL_ERROR
 40187  	}
 40188  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40189  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile}))
 40190  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40191  	threadset[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 40192  	test_barrier(tls)
 40193  	threadset[i].Fopnum++
 40194  	return TCL_OK
 40195  }
 40196  
 40197  func do_step(tls *libc.TLS, p uintptr) {
 40198  	var i int32
 40199  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40200  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40201  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40202  		return
 40203  	}
 40204  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_step(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40205  	if (*Thread)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 40206  		(*Thread)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40207  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread)(unsafe.Pointer(p)).FpStmt); i++ {
 40208  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40209  		}
 40210  		for i = 0; i < (*Thread)(unsafe.Pointer(p)).Fargc; i++ {
 40211  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread)(unsafe.Pointer(p)).FpStmt, i)
 40212  		}
 40213  	}
 40214  }
 40215  
 40216  func tcl_thread_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40217  	bp := tls.Alloc(48)
 40218  	defer tls.Free(48)
 40219  
 40220  	var i int32
 40221  	if argc != 2 {
 40222  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40223  			ts+25958, 0))
 40224  		return TCL_ERROR
 40225  	}
 40226  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40227  	if i < 0 {
 40228  		return TCL_ERROR
 40229  	}
 40230  	if !(threadset[i].Fbusy != 0) {
 40231  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40232  		return TCL_ERROR
 40233  	}
 40234  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40235  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step}))
 40236  	test_barrier(tls)
 40237  	threadset[i].Fopnum++
 40238  	return TCL_OK
 40239  }
 40240  
 40241  func do_finalize(tls *libc.TLS, p uintptr) {
 40242  	if (*Thread)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 40243  		(*Thread)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 40244  		(*Thread)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 40245  		return
 40246  	}
 40247  	(*Thread)(unsafe.Pointer(p)).Frc = sqlite3.Xsqlite3_finalize(tls, (*Thread)(unsafe.Pointer(p)).FpStmt)
 40248  	(*Thread)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 40249  }
 40250  
 40251  func tcl_thread_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40252  	bp := tls.Alloc(48)
 40253  	defer tls.Free(48)
 40254  
 40255  	var i int32
 40256  	if argc != 2 {
 40257  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40258  			ts+25958, 0))
 40259  		return TCL_ERROR
 40260  	}
 40261  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40262  	if i < 0 {
 40263  		return TCL_ERROR
 40264  	}
 40265  	if !(threadset[i].Fbusy != 0) {
 40266  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40267  		return TCL_ERROR
 40268  	}
 40269  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40270  	threadset[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize}))
 40271  	sqlite3.Xsqlite3_free(tls, threadset[i].FzArg)
 40272  	threadset[i].FzArg = uintptr(0)
 40273  	test_barrier(tls)
 40274  	threadset[i].Fopnum++
 40275  	return TCL_OK
 40276  }
 40277  
 40278  func tcl_thread_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40279  	bp := tls.Alloc(64)
 40280  	defer tls.Free(64)
 40281  
 40282  	var i int32
 40283  	var j int32
 40284  	var temp uintptr
 40285  	if argc != 3 {
 40286  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40287  			ts+25963, 0))
 40288  		return TCL_ERROR
 40289  	}
 40290  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40291  	if i < 0 {
 40292  		return TCL_ERROR
 40293  	}
 40294  	if !(threadset[i].Fbusy != 0) {
 40295  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40296  		return TCL_ERROR
 40297  	}
 40298  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40299  	j = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40300  	if j < 0 {
 40301  		return TCL_ERROR
 40302  	}
 40303  	if !(threadset[j].Fbusy != 0) {
 40304  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 40305  		return TCL_ERROR
 40306  	}
 40307  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(j)*1680)
 40308  	temp = threadset[i].Fdb
 40309  	threadset[i].Fdb = threadset[j].Fdb
 40310  	threadset[j].Fdb = temp
 40311  	return TCL_OK
 40312  }
 40313  
 40314  func tcl_thread_db_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40315  	bp := tls.Alloc(164)
 40316  	defer tls.Free(164)
 40317  
 40318  	var i int32
 40319  
 40320  	if argc != 2 {
 40321  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40322  			ts+25849, 0))
 40323  		return TCL_ERROR
 40324  	}
 40325  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40326  	if i < 0 {
 40327  		return TCL_ERROR
 40328  	}
 40329  	if !(threadset[i].Fbusy != 0) {
 40330  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40331  		return TCL_ERROR
 40332  	}
 40333  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40334  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].Fdb)
 40335  	threadset[i].Fdb = uintptr(0)
 40336  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40337  	return TCL_OK
 40338  }
 40339  
 40340  func tcl_thread_db_put(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40341  	bp := tls.Alloc(48)
 40342  	defer tls.Free(48)
 40343  
 40344  	var i int32
 40345  	if argc != 3 {
 40346  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40347  			ts+25972, 0))
 40348  		return TCL_ERROR
 40349  	}
 40350  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40351  	if i < 0 {
 40352  		return TCL_ERROR
 40353  	}
 40354  	if !(threadset[i].Fbusy != 0) {
 40355  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40356  		return TCL_ERROR
 40357  	}
 40358  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40359  
 40360  	threadset[i].Fdb = sqlite3TestTextToPtr(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 40361  	return TCL_OK
 40362  }
 40363  
 40364  func tcl_thread_stmt_get(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 40365  	bp := tls.Alloc(164)
 40366  	defer tls.Free(164)
 40367  
 40368  	var i int32
 40369  
 40370  	if argc != 2 {
 40371  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 40372  			ts+25849, 0))
 40373  		return TCL_ERROR
 40374  	}
 40375  	i = parse_thread_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 40376  	if i < 0 {
 40377  		return TCL_ERROR
 40378  	}
 40379  	if !(threadset[i].Fbusy != 0) {
 40380  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 40381  		return TCL_ERROR
 40382  	}
 40383  	test_thread_wait(tls, uintptr(unsafe.Pointer(&threadset))+uintptr(i)*1680)
 40384  	sqlite3TestMakePointerStr(tls, interp, bp+64, threadset[i].FpStmt)
 40385  	threadset[i].FpStmt = uintptr(0)
 40386  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, bp+64, uintptr(0)))
 40387  	return TCL_OK
 40388  }
 40389  
 40390  func Sqlitetest4_Init(tls *libc.TLS, interp uintptr) int32 {
 40391  	var i int32
 40392  
 40393  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd4))/uint64(unsafe.Sizeof(struct {
 40394  		FzName uintptr
 40395  		FxProc uintptr
 40396  	}{})); i++ {
 40397  		tcl.XTcl_CreateCommand(tls, interp, aCmd4[i].FzName, aCmd4[i].FxProc, uintptr(0), uintptr(0))
 40398  	}
 40399  	return TCL_OK
 40400  }
 40401  
 40402  var aCmd4 = [15]struct {
 40403  	FzName uintptr
 40404  	FxProc uintptr
 40405  }{
 40406  	{FzName: ts + 25979, FxProc: 0},
 40407  	{FzName: ts + 25993, FxProc: 0},
 40408  	{FzName: ts + 26005, FxProc: 0},
 40409  	{FzName: ts + 26017, FxProc: 0},
 40410  	{FzName: ts + 26029, FxProc: 0},
 40411  	{FzName: ts + 26041, FxProc: 0},
 40412  	{FzName: ts + 26056, FxProc: 0},
 40413  	{FzName: ts + 26070, FxProc: 0},
 40414  	{FzName: ts + 26083, FxProc: 0},
 40415  	{FzName: ts + 26098, FxProc: 0},
 40416  	{FzName: ts + 26110, FxProc: 0},
 40417  	{FzName: ts + 26126, FxProc: 0},
 40418  	{FzName: ts + 26138, FxProc: 0},
 40419  	{FzName: ts + 26152, FxProc: 0},
 40420  	{FzName: ts + 26166, FxProc: 0},
 40421  }
 40422  
 40423  func binarize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40424  	bp := tls.Alloc(4)
 40425  	defer tls.Free(4)
 40426  
 40427  	var bytes uintptr
 40428  	var pRet uintptr
 40429  
 40430  	bytes = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 40431  	pRet = tcl.XTcl_NewByteArrayObj(tls, bytes, *(*int32)(unsafe.Pointer(bp))+1)
 40432  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 40433  	return TCL_OK
 40434  }
 40435  
 40436  func test_value_overhead(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40437  	bp := tls.Alloc(96)
 40438  	defer tls.Free(96)
 40439  
 40440  	var i int32
 40441  
 40442  	if objc != 3 {
 40443  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40444  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)), ts+26182, 0))
 40445  		return TCL_ERROR
 40446  	}
 40447  
 40448  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+32) != 0 {
 40449  		return TCL_ERROR
 40450  	}
 40451  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+36) != 0 {
 40452  		return TCL_ERROR
 40453  	}
 40454  
 40455  	(*Mem)(unsafe.Pointer(bp + 40)).Fflags = u16(MEM_Str | MEM_Term | MEM_Static)
 40456  	(*Mem)(unsafe.Pointer(bp + 40)).Fz = ts + 26209
 40457  	(*Mem)(unsafe.Pointer(bp + 40)).Fenc = u8(SQLITE_UTF8)
 40458  
 40459  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 32)); i++ {
 40460  		if *(*int32)(unsafe.Pointer(bp + 36)) != 0 {
 40461  			sqlite3.Xsqlite3_value_text(tls, bp+40)
 40462  		}
 40463  	}
 40464  
 40465  	return TCL_OK
 40466  }
 40467  
 40468  func name_to_enc(tls *libc.TLS, interp uintptr, pObj uintptr) u8 {
 40469  	bp := tls.Alloc(104)
 40470  	defer tls.Free(104)
 40471  
 40472  	*(*[5]EncName)(unsafe.Pointer(bp + 24)) = [5]EncName{
 40473  		{FzName: ts + 26221, Fenc: u8(SQLITE_UTF8)},
 40474  		{FzName: ts + 26226, Fenc: u8(SQLITE_UTF16LE)},
 40475  		{FzName: ts + 26234, Fenc: u8(SQLITE_UTF16BE)},
 40476  		{FzName: ts + 26242, Fenc: u8(SQLITE_UTF16)},
 40477  		{},
 40478  	}
 40479  	var pEnc uintptr
 40480  	var z uintptr = tcl.XTcl_GetString(tls, pObj)
 40481  	for pEnc = bp + 24; (*EncName)(unsafe.Pointer(pEnc)).FzName != 0; pEnc += 16 {
 40482  		if 0 == sqlite3.Xsqlite3StrICmp(tls, z, (*EncName)(unsafe.Pointer(pEnc)).FzName) {
 40483  			break
 40484  		}
 40485  	}
 40486  	if !(int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) != 0) {
 40487  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26248, z, 0))
 40488  	}
 40489  	if int32((*EncName)(unsafe.Pointer(pEnc)).Fenc) == SQLITE_UTF16 {
 40490  		return u8(SQLITE_UTF16LE)
 40491  	}
 40492  	return (*EncName)(unsafe.Pointer(pEnc)).Fenc
 40493  }
 40494  
 40495  type EncName = struct {
 40496  	FzName       uintptr
 40497  	Fenc         u8
 40498  	F__ccgo_pad1 [7]byte
 40499  }
 40500  
 40501  func test_translate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40502  	bp := tls.Alloc(44)
 40503  	defer tls.Free(44)
 40504  
 40505  	var enc_from u8
 40506  	var enc_to u8
 40507  	var pVal uintptr
 40508  	var z uintptr
 40509  
 40510  	var xDel uintptr = uintptr(0)
 40511  
 40512  	if objc != 4 && objc != 5 {
 40513  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 40514  			tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv)), uintptr(0)),
 40515  			ts+26267, 0))
 40516  		return TCL_ERROR
 40517  	}
 40518  	if objc == 5 {
 40519  		xDel = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free}))
 40520  	}
 40521  
 40522  	enc_from = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 40523  	if !(enc_from != 0) {
 40524  		return TCL_ERROR
 40525  	}
 40526  	enc_to = name_to_enc(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 40527  	if !(enc_to != 0) {
 40528  		return TCL_ERROR
 40529  	}
 40530  
 40531  	pVal = sqlite3.Xsqlite3ValueNew(tls, uintptr(0))
 40532  
 40533  	if int32(enc_from) == SQLITE_UTF8 {
 40534  		z = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 40535  		if objc == 5 {
 40536  			z = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+32, z))
 40537  		}
 40538  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 40539  	} else {
 40540  		z = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+40)
 40541  		if objc == 5 {
 40542  			var zTmp uintptr = z
 40543  			z = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 40)))
 40544  			libc.Xmemcpy(tls, z, zTmp, uint64(*(*int32)(unsafe.Pointer(bp + 40))))
 40545  		}
 40546  		sqlite3.Xsqlite3ValueSetStr(tls, pVal, -1, z, enc_from, xDel)
 40547  	}
 40548  
 40549  	z = sqlite3.Xsqlite3ValueText(tls, pVal, enc_to)
 40550  	*(*int32)(unsafe.Pointer(bp + 40)) = sqlite3.Xsqlite3ValueBytes(tls, pVal, enc_to) + func() int32 {
 40551  		if int32(enc_to) == SQLITE_UTF8 {
 40552  			return 1
 40553  		}
 40554  		return 2
 40555  	}()
 40556  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, z, *(*int32)(unsafe.Pointer(bp + 40))))
 40557  
 40558  	sqlite3.Xsqlite3ValueFree(tls, pVal)
 40559  
 40560  	return TCL_OK
 40561  }
 40562  
 40563  func test_translate_selftest(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 40564  	sqlite3.Xsqlite3UtfSelfTest(tls)
 40565  	return SQLITE_OK
 40566  }
 40567  
 40568  func Sqlitetest5_Init(tls *libc.TLS, interp uintptr) int32 {
 40569  	var i int32
 40570  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd5))/uint64(unsafe.Sizeof(struct {
 40571  		FzName uintptr
 40572  		FxProc uintptr
 40573  	}{})); i++ {
 40574  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd5[i].FzName, aCmd5[i].FxProc, uintptr(0), uintptr(0))
 40575  	}
 40576  	return SQLITE_OK
 40577  }
 40578  
 40579  var aCmd5 = [4]struct {
 40580  	FzName uintptr
 40581  	FxProc uintptr
 40582  }{
 40583  	{FzName: ts + 26302, FxProc: 0},
 40584  	{FzName: ts + 26311, FxProc: 0},
 40585  	{FzName: ts + 26331, FxProc: 0},
 40586  	{FzName: ts + 26346, FxProc: 0},
 40587  }
 40588  
 40589  type CrashFile1 = struct {
 40590  	FpMethod     uintptr
 40591  	FpRealFile   uintptr
 40592  	FzName       uintptr
 40593  	Fflags       int32
 40594  	F__ccgo_pad1 [4]byte
 40595  	FzData       uintptr
 40596  	FnData       int32
 40597  	F__ccgo_pad2 [4]byte
 40598  	FiSize       i64
 40599  }
 40600  
 40601  type CrashFile = CrashFile1
 40602  type CrashGlobal1 = struct {
 40603  	FpWriteList             uintptr
 40604  	FpWriteListEnd          uintptr
 40605  	FiSectorSize            int32
 40606  	FiDeviceCharacteristics int32
 40607  	FiCrash                 int32
 40608  	FzCrashFile             [500]int8
 40609  }
 40610  
 40611  type CrashGlobal = CrashGlobal1
 40612  type WriteBuffer1 = struct {
 40613  	FiOffset     i64
 40614  	FnBuf        int32
 40615  	F__ccgo_pad1 [4]byte
 40616  	FzBuf        uintptr
 40617  	FpFile       uintptr
 40618  	FpNext       uintptr
 40619  }
 40620  
 40621  type WriteBuffer = WriteBuffer1
 40622  
 40623  var g = CrashGlobal{FiSectorSize: SQLITE_DEFAULT_SECTOR_SIZE}
 40624  
 40625  var sqlite3CrashTestEnable int32 = 0
 40626  
 40627  func crash_malloc(tls *libc.TLS, nByte int32) uintptr {
 40628  	return tcl.XTcl_AttemptAlloc(tls, uint32(size_t(nByte)))
 40629  }
 40630  
 40631  func crash_free(tls *libc.TLS, p uintptr) {
 40632  	tcl.XTcl_Free(tls, p)
 40633  }
 40634  
 40635  func crash_realloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 40636  	return tcl.XTcl_AttemptRealloc(tls, p, uint32(size_t(n)))
 40637  }
 40638  
 40639  func writeDbFile(tls *libc.TLS, p uintptr, z uintptr, iAmt i64, iOff i64) int32 {
 40640  	var rc int32 = SQLITE_OK
 40641  	var iSkip int32 = 0
 40642  	if iAmt-i64(iSkip) > int64(0) {
 40643  		rc = sqlite3.Xsqlite3OsWrite(tls, (*CrashFile)(unsafe.Pointer(p)).FpRealFile, z+uintptr(iSkip), int32(iAmt-i64(iSkip)), iOff+i64(iSkip))
 40644  	}
 40645  	return rc
 40646  }
 40647  
 40648  func writeListSync(tls *libc.TLS, pFile uintptr, isCrash int32) int32 {
 40649  	bp := tls.Alloc(16)
 40650  	defer tls.Free(16)
 40651  
 40652  	var rc int32 = SQLITE_OK
 40653  	var iDc int32 = g.FiDeviceCharacteristics
 40654  	var pWrite uintptr
 40655  	var ppPtr uintptr
 40656  
 40657  	var pFinal uintptr = uintptr(0)
 40658  	if !(isCrash != 0) {
 40659  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40660  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile {
 40661  				pFinal = pWrite
 40662  			}
 40663  		}
 40664  	} else if iDc&(SQLITE_IOCAP_SEQUENTIAL|SQLITE_IOCAP_SAFE_APPEND) != 0 {
 40665  		var nWrite int32 = 0
 40666  
 40667  		for pWrite = g.FpWriteList; pWrite != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40668  			nWrite++
 40669  		}
 40670  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 40671  		*(*int32)(unsafe.Pointer(bp)) = func() int32 {
 40672  			if *(*int32)(unsafe.Pointer(bp)) < 0 {
 40673  				return -1 * *(*int32)(unsafe.Pointer(bp))
 40674  			}
 40675  			return *(*int32)(unsafe.Pointer(bp))
 40676  		}() % nWrite
 40677  		for pWrite = g.FpWriteList; *(*int32)(unsafe.Pointer(bp)) > 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40678  			*(*int32)(unsafe.Pointer(bp))--
 40679  		}
 40680  		pFinal = pWrite
 40681  	}
 40682  
 40683  	ppPtr = uintptr(unsafe.Pointer(&g))
 40684  	for pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)); rc == SQLITE_OK && pWrite != 0; pWrite = *(*uintptr)(unsafe.Pointer(ppPtr)) {
 40685  		var pRealFile uintptr = (*CrashFile)(unsafe.Pointer((*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile)).FpRealFile
 40686  
 40687  		var eAction int32 = 0
 40688  		if !(isCrash != 0) {
 40689  			eAction = 2
 40690  			if (*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile == pFile || iDc&SQLITE_IOCAP_SEQUENTIAL != 0 {
 40691  				eAction = 1
 40692  			}
 40693  		} else {
 40694  			sqlite3.Xsqlite3_randomness(tls, 1, bp+4)
 40695  
 40696  			if iDc&SQLITE_IOCAP_ATOMIC != 0 || (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf == uintptr(0) {
 40697  				*(*int8)(unsafe.Pointer(bp + 4)) &= int8(0x01)
 40698  			}
 40699  
 40700  			if iDc&SQLITE_IOCAP_SEQUENTIAL != 0 && pWrite != pFinal {
 40701  				*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 40702  			}
 40703  
 40704  			if iDc&SQLITE_IOCAP_SAFE_APPEND != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 40705  				sqlite3.Xsqlite3OsFileSize(tls, pRealFile, bp+8)
 40706  				if *(*i64)(unsafe.Pointer(bp + 8)) == (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset {
 40707  					*(*int8)(unsafe.Pointer(bp + 4)) = int8(0)
 40708  				}
 40709  			}
 40710  
 40711  			if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x06 == 0x06 {
 40712  				eAction = 3
 40713  			} else {
 40714  				eAction = func() int32 {
 40715  					if int32(*(*int8)(unsafe.Pointer(bp + 4)))&0x01 != 0 {
 40716  						return 2
 40717  					}
 40718  					return 1
 40719  				}()
 40720  			}
 40721  		}
 40722  
 40723  		switch eAction {
 40724  		case 1:
 40725  			{
 40726  				if (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf != 0 {
 40727  					rc = writeDbFile(tls,
 40728  						(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FzBuf, int64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf), (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 40729  				} else {
 40730  					rc = sqlite3.Xsqlite3OsTruncate(tls, pRealFile, (*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset)
 40731  				}
 40732  				*(*uintptr)(unsafe.Pointer(ppPtr)) = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext
 40733  				crash_free(tls, pWrite)
 40734  				break
 40735  
 40736  			}
 40737  		case 2:
 40738  			{
 40739  				ppPtr = pWrite + 32
 40740  				break
 40741  
 40742  			}
 40743  		case 3:
 40744  			{
 40745  				var zGarbage uintptr
 40746  				var iFirst int32 = int32((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset / i64(g.FiSectorSize))
 40747  				var iLast int32 = int32(((*WriteBuffer)(unsafe.Pointer(pWrite)).FiOffset + i64((*WriteBuffer)(unsafe.Pointer(pWrite)).FnBuf) - int64(1)) / i64(g.FiSectorSize))
 40748  
 40749  				zGarbage = crash_malloc(tls, g.FiSectorSize)
 40750  				if zGarbage != 0 {
 40751  					var i sqlite3_int64
 40752  					for i = sqlite3_int64(iFirst); rc == SQLITE_OK && i <= sqlite3_int64(iLast); i++ {
 40753  						sqlite3.Xsqlite3_randomness(tls, g.FiSectorSize, zGarbage)
 40754  						rc = writeDbFile(tls,
 40755  							(*WriteBuffer)(unsafe.Pointer(pWrite)).FpFile, zGarbage, int64(g.FiSectorSize), i*sqlite3_int64(g.FiSectorSize))
 40756  					}
 40757  					crash_free(tls, zGarbage)
 40758  				} else {
 40759  					rc = SQLITE_NOMEM
 40760  				}
 40761  
 40762  				ppPtr = pWrite + 32
 40763  				break
 40764  
 40765  			}
 40766  
 40767  		default:
 40768  		}
 40769  
 40770  		if pWrite == pFinal {
 40771  			break
 40772  		}
 40773  	}
 40774  
 40775  	if rc == SQLITE_OK && isCrash != 0 {
 40776  		libc.Xexit(tls, -1)
 40777  	}
 40778  
 40779  	for pWrite = g.FpWriteList; pWrite != 0 && (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext != 0; pWrite = (*WriteBuffer)(unsafe.Pointer(pWrite)).FpNext {
 40780  	}
 40781  	g.FpWriteListEnd = pWrite
 40782  
 40783  	return rc
 40784  }
 40785  
 40786  func writeListAppend(tls *libc.TLS, pFile uintptr, iOffset sqlite3_int64, zBuf uintptr, nBuf int32) int32 {
 40787  	var pNew uintptr
 40788  
 40789  	pNew = crash_malloc(tls, int32(uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf)))
 40790  	if pNew == uintptr(0) {
 40791  		libc.Xfprintf(tls, uintptr(unsafe.Pointer(&libc.X__sF))+2*152, ts+26365, 0)
 40792  	}
 40793  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(WriteBuffer{}))+uint64(nBuf))
 40794  	(*WriteBuffer)(unsafe.Pointer(pNew)).FiOffset = iOffset
 40795  	(*WriteBuffer)(unsafe.Pointer(pNew)).FnBuf = nBuf
 40796  	(*WriteBuffer)(unsafe.Pointer(pNew)).FpFile = pFile
 40797  	if zBuf != 0 {
 40798  		(*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf = pNew + 1*40
 40799  		libc.Xmemcpy(tls, (*WriteBuffer)(unsafe.Pointer(pNew)).FzBuf, zBuf, uint64(nBuf))
 40800  	}
 40801  
 40802  	if g.FpWriteList != 0 {
 40803  		(*WriteBuffer)(unsafe.Pointer(g.FpWriteListEnd)).FpNext = pNew
 40804  	} else {
 40805  		g.FpWriteList = pNew
 40806  	}
 40807  	g.FpWriteListEnd = pNew
 40808  
 40809  	return SQLITE_OK
 40810  }
 40811  
 40812  func cfClose(tls *libc.TLS, pFile uintptr) int32 {
 40813  	var pCrash uintptr = pFile
 40814  	writeListSync(tls, pCrash, 0)
 40815  	sqlite3.Xsqlite3OsClose(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FpRealFile)
 40816  	return SQLITE_OK
 40817  }
 40818  
 40819  func cfRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 40820  	var pCrash uintptr = pFile
 40821  	var nCopy int32 = func() int32 {
 40822  		if i64(iAmt) < (*CrashFile)(unsafe.Pointer(pCrash)).FiSize-iOfst {
 40823  			return int32(i64(iAmt))
 40824  		}
 40825  		return int32((*CrashFile)(unsafe.Pointer(pCrash)).FiSize - iOfst)
 40826  	}()
 40827  
 40828  	if nCopy > 0 {
 40829  		libc.Xmemcpy(tls, zBuf, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), uint64(nCopy))
 40830  	}
 40831  
 40832  	if nCopy < iAmt {
 40833  		return SQLITE_IOERR | int32(2)<<8
 40834  	}
 40835  
 40836  	return SQLITE_OK
 40837  }
 40838  
 40839  func cfWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 40840  	var pCrash uintptr = pFile
 40841  	if sqlite_int64(iAmt)+iOfst > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 40842  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(sqlite_int64(iAmt) + iOfst))
 40843  	}
 40844  	for (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > i64((*CrashFile)(unsafe.Pointer(pCrash)).FnData) {
 40845  		var zNew uintptr
 40846  		var nNew int32 = (*CrashFile)(unsafe.Pointer(pCrash)).FnData*2 + 4096
 40847  		zNew = crash_realloc(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData, nNew)
 40848  		if !(zNew != 0) {
 40849  			return SQLITE_NOMEM
 40850  		}
 40851  		libc.Xmemset(tls, zNew+uintptr((*CrashFile)(unsafe.Pointer(pCrash)).FnData), 0, uint64(nNew-(*CrashFile)(unsafe.Pointer(pCrash)).FnData))
 40852  		(*CrashFile)(unsafe.Pointer(pCrash)).FnData = nNew
 40853  		(*CrashFile)(unsafe.Pointer(pCrash)).FzData = zNew
 40854  	}
 40855  	libc.Xmemcpy(tls, (*CrashFile)(unsafe.Pointer(pCrash)).FzData+uintptr(iOfst), zBuf, uint64(iAmt))
 40856  	return writeListAppend(tls, pFile, iOfst, zBuf, iAmt)
 40857  }
 40858  
 40859  func cfTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 40860  	var pCrash uintptr = pFile
 40861  
 40862  	if (*CrashFile)(unsafe.Pointer(pCrash)).FiSize > size {
 40863  		(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(size))
 40864  	}
 40865  	return writeListAppend(tls, pFile, size, uintptr(0), 0)
 40866  }
 40867  
 40868  func cfSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 40869  	var pCrash uintptr = pFile
 40870  	var isCrash int32 = 0
 40871  
 40872  	var zName uintptr = (*CrashFile)(unsafe.Pointer(pCrash)).FzName
 40873  	var zCrashFile uintptr = uintptr(unsafe.Pointer(&g)) + 28
 40874  	var nName int32 = int32(libc.Xstrlen(tls, zName))
 40875  	var nCrashFile int32 = int32(libc.Xstrlen(tls, zCrashFile))
 40876  
 40877  	if nCrashFile > 0 && int32(*(*int8)(unsafe.Pointer(zCrashFile + uintptr(nCrashFile-1)))) == '*' {
 40878  		nCrashFile--
 40879  		if nName > nCrashFile {
 40880  			nName = nCrashFile
 40881  		}
 40882  	}
 40883  
 40884  	if nName == nCrashFile && 0 == libc.Xmemcmp(tls, zName, zCrashFile, uint64(nName)) {
 40885  		if libc.PreDecInt32(&g.FiCrash, 1) == 0 {
 40886  			isCrash = 1
 40887  		}
 40888  	}
 40889  
 40890  	return writeListSync(tls, pCrash, isCrash)
 40891  }
 40892  
 40893  func cfFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 40894  	var pCrash uintptr = pFile
 40895  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = (*CrashFile)(unsafe.Pointer(pCrash)).FiSize
 40896  	return SQLITE_OK
 40897  }
 40898  
 40899  func cfLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 40900  	return sqlite3.Xsqlite3OsLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 40901  }
 40902  
 40903  func cfUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 40904  	return sqlite3.Xsqlite3OsUnlock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, eLock)
 40905  }
 40906  
 40907  func cfCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 40908  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, pResOut)
 40909  }
 40910  
 40911  func cfFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 40912  	if op == SQLITE_FCNTL_SIZE_HINT {
 40913  		var pCrash uintptr = pFile
 40914  		var nByte i64 = *(*i64)(unsafe.Pointer(pArg))
 40915  		if nByte > (*CrashFile)(unsafe.Pointer(pCrash)).FiSize {
 40916  			if SQLITE_OK == writeListAppend(tls, pFile, nByte, uintptr(0), 0) {
 40917  				(*CrashFile)(unsafe.Pointer(pCrash)).FiSize = i64(int32(nByte))
 40918  			}
 40919  		}
 40920  		return SQLITE_OK
 40921  	}
 40922  	return sqlite3.Xsqlite3OsFileControl(tls, (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile, op, pArg)
 40923  }
 40924  
 40925  func cfSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 40926  	return g.FiSectorSize
 40927  }
 40928  
 40929  func cfDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 40930  	return g.FiDeviceCharacteristics
 40931  }
 40932  
 40933  func cfShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 40934  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40935  	return (*struct {
 40936  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 40937  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 40938  }
 40939  
 40940  func cfShmBarrier(tls *libc.TLS, pFile uintptr) {
 40941  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40942  	(*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)
 40943  }
 40944  
 40945  func cfShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 40946  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40947  	return (*struct {
 40948  		f func(*libc.TLS, uintptr, int32) int32
 40949  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, delFlag)
 40950  }
 40951  
 40952  func cfShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, sz int32, w int32, pp uintptr) int32 {
 40953  	var pReal uintptr = (*CrashFile)(unsafe.Pointer(pFile)).FpRealFile
 40954  	return (*struct {
 40955  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 40956  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iRegion, sz, w, pp)
 40957  }
 40958  
 40959  var CrashFileVtab = sqlite3_io_methods{
 40960  	FiVersion:               2,
 40961  	FxClose:                 0,
 40962  	FxRead:                  0,
 40963  	FxWrite:                 0,
 40964  	FxTruncate:              0,
 40965  	FxSync:                  0,
 40966  	FxFileSize:              0,
 40967  	FxLock:                  0,
 40968  	FxUnlock:                0,
 40969  	FxCheckReservedLock:     0,
 40970  	FxFileControl:           0,
 40971  	FxSectorSize:            0,
 40972  	FxDeviceCharacteristics: 0,
 40973  	FxShmMap:                0,
 40974  	FxShmLock:               0,
 40975  	FxShmBarrier:            0,
 40976  	FxShmUnmap:              0,
 40977  }
 40978  
 40979  type crashAppData = struct{ FpOrig uintptr }
 40980  
 40981  func cfOpen(tls *libc.TLS, pCfVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 40982  	bp := tls.Alloc(8)
 40983  	defer tls.Free(8)
 40984  
 40985  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 40986  	var rc int32
 40987  	var pWrapper uintptr = pFile
 40988  	var pReal uintptr = pWrapper + 1*56
 40989  
 40990  	libc.Xmemset(tls, pWrapper, 0, uint64(unsafe.Sizeof(CrashFile{})))
 40991  	rc = sqlite3.Xsqlite3OsOpen(tls, pVfs, zName, pReal, flags, pOutFlags)
 40992  
 40993  	if rc == SQLITE_OK {
 40994  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod = uintptr(unsafe.Pointer(&CrashFileVtab))
 40995  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzName = zName
 40996  		(*CrashFile)(unsafe.Pointer(pWrapper)).FpRealFile = pReal
 40997  		rc = sqlite3.Xsqlite3OsFileSize(tls, pReal, bp)
 40998  		(*CrashFile)(unsafe.Pointer(pWrapper)).FiSize = i64(int32(*(*i64)(unsafe.Pointer(bp))))
 40999  		(*CrashFile)(unsafe.Pointer(pWrapper)).Fflags = flags
 41000  	}
 41001  	if rc == SQLITE_OK {
 41002  		(*CrashFile)(unsafe.Pointer(pWrapper)).FnData = int32(int64(4096) + (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize)
 41003  		(*CrashFile)(unsafe.Pointer(pWrapper)).FzData = crash_malloc(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FnData)
 41004  		if (*CrashFile)(unsafe.Pointer(pWrapper)).FzData != 0 {
 41005  			var iOff i64
 41006  
 41007  			libc.Xmemset(tls, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData, 0, uint64((*CrashFile)(unsafe.Pointer(pWrapper)).FnData))
 41008  			for iOff = int64(0); iOff < (*CrashFile)(unsafe.Pointer(pWrapper)).FiSize; iOff = iOff + int64(512) {
 41009  				var nRead int32 = int32((*CrashFile)(unsafe.Pointer(pWrapper)).FiSize - iOff)
 41010  				if nRead > 512 {
 41011  					nRead = 512
 41012  				}
 41013  				rc = sqlite3.Xsqlite3OsRead(tls, pReal, (*CrashFile)(unsafe.Pointer(pWrapper)).FzData+uintptr(iOff), nRead, iOff)
 41014  			}
 41015  		} else {
 41016  			rc = SQLITE_NOMEM
 41017  		}
 41018  	}
 41019  	if rc != SQLITE_OK && (*CrashFile)(unsafe.Pointer(pWrapper)).FpMethod != 0 {
 41020  		sqlite3.Xsqlite3OsClose(tls, pFile)
 41021  	}
 41022  	return rc
 41023  }
 41024  
 41025  func cfDelete(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, dirSync int32) int32 {
 41026  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41027  	return (*struct {
 41028  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 41029  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDelete})).f(tls, pVfs, zPath, dirSync)
 41030  }
 41031  
 41032  func cfAccess(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 41033  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41034  	return (*struct {
 41035  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41036  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxAccess})).f(tls, pVfs, zPath, flags, pResOut)
 41037  }
 41038  
 41039  func cfFullPathname(tls *libc.TLS, pCfVfs uintptr, zPath uintptr, nPathOut int32, zPathOut uintptr) int32 {
 41040  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41041  	return (*struct {
 41042  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41043  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxFullPathname})).f(tls, pVfs, zPath, nPathOut, zPathOut)
 41044  }
 41045  
 41046  func cfDlOpen(tls *libc.TLS, pCfVfs uintptr, zPath uintptr) uintptr {
 41047  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41048  	return (*struct {
 41049  		f func(*libc.TLS, uintptr, uintptr) uintptr
 41050  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlOpen})).f(tls, pVfs, zPath)
 41051  }
 41052  
 41053  func cfDlError(tls *libc.TLS, pCfVfs uintptr, nByte int32, zErrMsg uintptr) {
 41054  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41055  	(*struct {
 41056  		f func(*libc.TLS, uintptr, int32, uintptr)
 41057  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlError})).f(tls, pVfs, nByte, zErrMsg)
 41058  }
 41059  
 41060  func cfDlSym(tls *libc.TLS, pCfVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 41061  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41062  	return (*struct {
 41063  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 41064  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlSym})).f(tls, pVfs, pH, zSym)
 41065  }
 41066  
 41067  func cfDlClose(tls *libc.TLS, pCfVfs uintptr, pHandle uintptr) {
 41068  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41069  	(*struct {
 41070  		f func(*libc.TLS, uintptr, uintptr)
 41071  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxDlClose})).f(tls, pVfs, pHandle)
 41072  }
 41073  
 41074  func cfRandomness(tls *libc.TLS, pCfVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 41075  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41076  	return (*struct {
 41077  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41078  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxRandomness})).f(tls, pVfs, nByte, zBufOut)
 41079  }
 41080  
 41081  func cfSleep(tls *libc.TLS, pCfVfs uintptr, nMicro int32) int32 {
 41082  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41083  	return (*struct {
 41084  		f func(*libc.TLS, uintptr, int32) int32
 41085  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSleep})).f(tls, pVfs, nMicro)
 41086  }
 41087  
 41088  func cfCurrentTime(tls *libc.TLS, pCfVfs uintptr, pTimeOut uintptr) int32 {
 41089  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41090  	return (*struct {
 41091  		f func(*libc.TLS, uintptr, uintptr) int32
 41092  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxCurrentTime})).f(tls, pVfs, pTimeOut)
 41093  }
 41094  
 41095  func cfGetLastError(tls *libc.TLS, pCfVfs uintptr, n int32, z uintptr) int32 {
 41096  	var pVfs uintptr = (*sqlite3_vfs)(unsafe.Pointer(pCfVfs)).FpAppData
 41097  	return (*struct {
 41098  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 41099  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetLastError})).f(tls, pVfs, n, z)
 41100  }
 41101  
 41102  func processDevSymArgs(tls *libc.TLS, interp uintptr, objc int32, objv uintptr, piDeviceChar uintptr, piSectorSize uintptr) int32 {
 41103  	bp := tls.Alloc(316)
 41104  	defer tls.Free(316)
 41105  
 41106  	*(*[14]DeviceFlag)(unsafe.Pointer(bp + 88)) = [14]DeviceFlag{
 41107  		{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 41108  		{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 41109  		{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 41110  		{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 41111  		{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 41112  		{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 41113  		{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 41114  		{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 41115  		{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 41116  		{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 41117  		{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 41118  		{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 41119  		{FzName: ts + 26529, FiValue: SQLITE_IOCAP_BATCH_ATOMIC},
 41120  		{},
 41121  	}
 41122  	var i int32
 41123  	var iDc int32 = 0
 41124  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 41125  	var setSectorsize int32 = 0
 41126  	var setDeviceChar int32 = 0
 41127  
 41128  	for i = 0; i < objc; i = i + 2 {
 41129  		var zOpt uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp+64)
 41130  
 41131  		if (*(*int32)(unsafe.Pointer(bp + 64)) > 11 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26542, zOpt, uint64(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) &&
 41132  			(*(*int32)(unsafe.Pointer(bp + 64)) > 16 || *(*int32)(unsafe.Pointer(bp + 64)) < 2 || libc.Xstrncmp(tls, ts+26554, zOpt, uint64(*(*int32)(unsafe.Pointer(bp + 64)))) != 0) {
 41133  			tcl.XTcl_AppendResult(tls, interp,
 41134  				libc.VaList(bp, ts+26571, zOpt,
 41135  					ts+26585, 0))
 41136  			return TCL_ERROR
 41137  		}
 41138  		if i == objc-1 {
 41139  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26633, zOpt, ts+11945, 0))
 41140  			return TCL_ERROR
 41141  		}
 41142  
 41143  		if int32(*(*int8)(unsafe.Pointer(zOpt + 1))) == 's' {
 41144  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+68) != 0 {
 41145  				return TCL_ERROR
 41146  			}
 41147  			setSectorsize = 1
 41148  		} else {
 41149  			var j int32
 41150  
 41151  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+72, bp+80) != 0 {
 41152  				return TCL_ERROR
 41153  			}
 41154  			for j = 0; j < *(*int32)(unsafe.Pointer(bp + 72)); j++ {
 41155  				var rc int32
 41156  
 41157  				var pFlag uintptr = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)) + uintptr(j)*8)))
 41158  				(*Tcl_Obj)(unsafe.Pointer(pFlag)).FrefCount++
 41159  				tcl.XTcl_UtfToLower(tls, tcl.XTcl_GetString(tls, pFlag))
 41160  
 41161  				rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 41162  					interp, pFlag, bp+88, int32(unsafe.Sizeof(DeviceFlag{})), ts+26664, 0, bp+312)
 41163  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 41164  					var _objPtr uintptr = pFlag
 41165  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 41166  						tcl.XTclFreeObj(tls, _objPtr)
 41167  					}
 41168  				}
 41169  				if rc != 0 {
 41170  					return TCL_ERROR
 41171  				}
 41172  
 41173  				iDc = iDc | (*DeviceFlag)(unsafe.Pointer(bp+88+uintptr(*(*int32)(unsafe.Pointer(bp + 312)))*16)).FiValue
 41174  			}
 41175  			setDeviceChar = 1
 41176  		}
 41177  	}
 41178  
 41179  	if setDeviceChar != 0 {
 41180  		*(*int32)(unsafe.Pointer(piDeviceChar)) = iDc
 41181  	}
 41182  	if setSectorsize != 0 {
 41183  		*(*int32)(unsafe.Pointer(piSectorSize)) = *(*int32)(unsafe.Pointer(bp + 68))
 41184  	}
 41185  
 41186  	return TCL_OK
 41187  }
 41188  
 41189  type DeviceFlag = struct {
 41190  	FzName       uintptr
 41191  	FiValue      int32
 41192  	F__ccgo_pad1 [4]byte
 41193  }
 41194  
 41195  func crashNowCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41196  	if objc != 1 {
 41197  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41198  		return TCL_ERROR
 41199  	}
 41200  	writeListSync(tls, uintptr(0), 1)
 41201  
 41202  	return TCL_OK
 41203  }
 41204  
 41205  func crashEnableCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41206  	bp := tls.Alloc(8)
 41207  	defer tls.Free(8)
 41208  
 41209  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 41210  
 41211  	if objc != 2 && objc != 3 {
 41212  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26677)
 41213  		return TCL_ERROR
 41214  	}
 41215  
 41216  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41217  		return TCL_ERROR
 41218  	}
 41219  	if objc == 3 && tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 41220  		return TCL_ERROR
 41221  	}
 41222  
 41223  	if *(*int32)(unsafe.Pointer(bp)) != 0 && crashVfs.FpAppData != 0 || !(*(*int32)(unsafe.Pointer(bp)) != 0) && !(int32(crashVfs.FpAppData) != 0) {
 41224  		return TCL_OK
 41225  	}
 41226  
 41227  	if crashVfs.FpAppData == uintptr(0) {
 41228  		var pOriginalVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 41229  		crashVfs.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FmxPathname
 41230  		crashVfs.FpAppData = pOriginalVfs
 41231  		crashVfs.FszOsFile = int32(uint64(unsafe.Sizeof(CrashFile{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pOriginalVfs)).FszOsFile))
 41232  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&crashVfs)), *(*int32)(unsafe.Pointer(bp + 4)))
 41233  	} else {
 41234  		crashVfs.FpAppData = uintptr(0)
 41235  		sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&crashVfs)))
 41236  	}
 41237  
 41238  	return TCL_OK
 41239  }
 41240  
 41241  var crashVfs = sqlite3_vfs{
 41242  	FiVersion:      2,
 41243  	FzName:         ts + 26694,
 41244  	FxOpen:         0,
 41245  	FxDelete:       0,
 41246  	FxAccess:       0,
 41247  	FxFullPathname: 0,
 41248  	FxDlOpen:       0,
 41249  	FxDlError:      0,
 41250  	FxDlSym:        0,
 41251  	FxDlClose:      0,
 41252  	FxRandomness:   0,
 41253  	FxSleep:        0,
 41254  	FxCurrentTime:  0,
 41255  	FxGetLastError: 0,
 41256  }
 41257  
 41258  func crashParamsObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41259  	bp := tls.Alloc(48)
 41260  	defer tls.Free(48)
 41261  
 41262  	var zCrashFile uintptr
 41263  
 41264  	*(*int32)(unsafe.Pointer(bp + 40)) = -1
 41265  	*(*int32)(unsafe.Pointer(bp + 44)) = -1
 41266  
 41267  	if !(objc < 3) {
 41268  		goto __1
 41269  	}
 41270  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26700)
 41271  	goto error
 41272  __1:
 41273  	;
 41274  	zCrashFile = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-1)*8)), bp+32)
 41275  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 32))) >= uint64(unsafe.Sizeof([500]int8{}))) {
 41276  		goto __2
 41277  	}
 41278  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+26726, zCrashFile, ts+11945, 0))
 41279  	goto error
 41280  __2:
 41281  	;
 41282  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(objc-2)*8)), bp+36) != 0) {
 41283  		goto __3
 41284  	}
 41285  	goto error
 41286  __3:
 41287  	;
 41288  	if !(processDevSymArgs(tls, interp, objc-3, objv+1*8, bp+40, bp+44) != 0) {
 41289  		goto __4
 41290  	}
 41291  	return TCL_ERROR
 41292  __4:
 41293  	;
 41294  	if !(*(*int32)(unsafe.Pointer(bp + 40)) >= 0) {
 41295  		goto __5
 41296  	}
 41297  	g.FiDeviceCharacteristics = *(*int32)(unsafe.Pointer(bp + 40))
 41298  __5:
 41299  	;
 41300  	if !(*(*int32)(unsafe.Pointer(bp + 44)) >= 0) {
 41301  		goto __6
 41302  	}
 41303  	g.FiSectorSize = *(*int32)(unsafe.Pointer(bp + 44))
 41304  __6:
 41305  	;
 41306  	g.FiCrash = *(*int32)(unsafe.Pointer(bp + 36))
 41307  	libc.Xmemcpy(tls, uintptr(unsafe.Pointer(&g))+28, zCrashFile, uint64(*(*int32)(unsafe.Pointer(bp + 32))+1))
 41308  	sqlite3CrashTestEnable = 1
 41309  	return TCL_OK
 41310  
 41311  error:
 41312  	return TCL_ERROR
 41313  }
 41314  
 41315  func devSymObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41316  	bp := tls.Alloc(8)
 41317  	defer tls.Free(8)
 41318  
 41319  	*(*int32)(unsafe.Pointer(bp)) = -1
 41320  	*(*int32)(unsafe.Pointer(bp + 4)) = -1
 41321  
 41322  	if processDevSymArgs(tls, interp, objc-1, objv+1*8, bp, bp+4) != 0 {
 41323  		return TCL_ERROR
 41324  	}
 41325  	devsym_register(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 41326  
 41327  	return TCL_OK
 41328  }
 41329  
 41330  func writeCrashObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41331  	bp := tls.Alloc(4)
 41332  	defer tls.Free(4)
 41333  
 41334  	*(*int32)(unsafe.Pointer(bp)) = 0
 41335  
 41336  	if objc != 2 {
 41337  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26750)
 41338  		return TCL_ERROR
 41339  	}
 41340  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 41341  		return TCL_ERROR
 41342  	}
 41343  
 41344  	devsym_crash_on_write(tls, *(*int32)(unsafe.Pointer(bp)))
 41345  	return TCL_OK
 41346  }
 41347  
 41348  func dsUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41349  	if objc != 1 {
 41350  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41351  		return TCL_ERROR
 41352  	}
 41353  
 41354  	devsym_unregister(tls)
 41355  	return TCL_OK
 41356  }
 41357  
 41358  func jtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41359  	bp := tls.Alloc(48)
 41360  	defer tls.Free(48)
 41361  
 41362  	var zParent uintptr = uintptr(0)
 41363  
 41364  	if objc != 2 && objc != 3 {
 41365  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+26757)
 41366  		return TCL_ERROR
 41367  	}
 41368  	zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 41369  	if objc == 3 {
 41370  		if libc.Xstrcmp(tls, zParent, ts+26779) != 0 {
 41371  			tcl.XTcl_AppendResult(tls, interp,
 41372  				libc.VaList(bp, ts+11851, zParent, ts+26788, 0))
 41373  			return TCL_ERROR
 41374  		}
 41375  		zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 41376  	}
 41377  
 41378  	if !(int32(*(*int8)(unsafe.Pointer(zParent))) != 0) {
 41379  		zParent = uintptr(0)
 41380  	}
 41381  	if jt_register(tls, zParent, libc.Bool32(objc == 3)) != 0 {
 41382  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+26808, 0))
 41383  		return TCL_ERROR
 41384  	}
 41385  
 41386  	return TCL_OK
 41387  }
 41388  
 41389  func jtUnregisterObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 41390  	if objc != 1 {
 41391  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 41392  		return TCL_ERROR
 41393  	}
 41394  
 41395  	jt_unregister(tls)
 41396  	return TCL_OK
 41397  }
 41398  
 41399  func Sqlitetest6_Init(tls *libc.TLS, interp uintptr) int32 {
 41400  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26829, *(*uintptr)(unsafe.Pointer(&struct {
 41401  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41402  	}{crashEnableCmd})), uintptr(0), uintptr(0))
 41403  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26850, *(*uintptr)(unsafe.Pointer(&struct {
 41404  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41405  	}{crashParamsObjCmd})), uintptr(0), uintptr(0))
 41406  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26870, *(*uintptr)(unsafe.Pointer(&struct {
 41407  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41408  	}{crashNowCmd})), uintptr(0), uintptr(0))
 41409  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26888, *(*uintptr)(unsafe.Pointer(&struct {
 41410  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41411  	}{devSymObjCmd})), uintptr(0), uintptr(0))
 41412  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26912, *(*uintptr)(unsafe.Pointer(&struct {
 41413  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41414  	}{writeCrashObjCmd})), uintptr(0), uintptr(0))
 41415  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26935, *(*uintptr)(unsafe.Pointer(&struct {
 41416  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41417  	}{dsUnregisterObjCmd})), uintptr(0), uintptr(0))
 41418  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26953, *(*uintptr)(unsafe.Pointer(&struct {
 41419  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41420  	}{jtObjCmd})), uintptr(0), uintptr(0))
 41421  	tcl.XTcl_CreateObjCommand(tls, interp, ts+26969, *(*uintptr)(unsafe.Pointer(&struct {
 41422  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 41423  	}{jtUnregisterObjCmd})), uintptr(0), uintptr(0))
 41424  	return TCL_OK
 41425  }
 41426  
 41427  type Thread1 = struct {
 41428  	FzFilename   uintptr
 41429  	FxOp         uintptr
 41430  	FzArg        uintptr
 41431  	Fopnum       int32
 41432  	Fbusy        int32
 41433  	Fcompleted   int32
 41434  	F__ccgo_pad1 [4]byte
 41435  	Fdb          uintptr
 41436  	FpStmt       uintptr
 41437  	FzErr        uintptr
 41438  	FzStaticErr  uintptr
 41439  	Frc          int32
 41440  	Fargc        int32
 41441  	Fargv        [100]uintptr
 41442  	Fcolv        [100]uintptr
 41443  	FnServer     int32
 41444  	F__ccgo_pad2 [4]byte
 41445  }
 41446  
 41447  var threadset1 [26]Thread1
 41448  
 41449  func client_main(tls *libc.TLS, pArg uintptr) uintptr {
 41450  	var p uintptr = pArg
 41451  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 41452  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41453  	}
 41454  	sqlite3_client_open(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename, p+40)
 41455  	if SQLITE_OK != sqlite3.Xsqlite3_errcode(tls, (*Thread1)(unsafe.Pointer(p)).Fdb) {
 41456  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.Xstrdup(tls, sqlite3.Xsqlite3_errmsg(tls, (*Thread1)(unsafe.Pointer(p)).Fdb))
 41457  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41458  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 41459  	}
 41460  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41461  	(*Thread1)(unsafe.Pointer(p)).Fcompleted = 1
 41462  	for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41463  		libc.Xsched_yield(tls)
 41464  	}
 41465  	for (*Thread1)(unsafe.Pointer(p)).FxOp != 0 {
 41466  		if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 41467  			sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 41468  			(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41469  		}
 41470  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*Thread1)(unsafe.Pointer(p)).FxOp})).f(tls, p)
 41471  		(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 41472  		for (*Thread1)(unsafe.Pointer(p)).Fopnum <= (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41473  			libc.Xsched_yield(tls)
 41474  		}
 41475  	}
 41476  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 41477  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41478  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41479  	}
 41480  	if (*Thread1)(unsafe.Pointer(p)).Fdb != 0 {
 41481  		sqlite3_client_close(tls, (*Thread1)(unsafe.Pointer(p)).Fdb)
 41482  		(*Thread1)(unsafe.Pointer(p)).Fdb = uintptr(0)
 41483  	}
 41484  	if (*Thread1)(unsafe.Pointer(p)).FzErr != 0 && (*Thread1)(unsafe.Pointer(p)).FzErr != (*Thread1)(unsafe.Pointer(p)).FzStaticErr {
 41485  		sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzErr)
 41486  		(*Thread1)(unsafe.Pointer(p)).FzErr = uintptr(0)
 41487  	}
 41488  	(*Thread1)(unsafe.Pointer(p)).Fcompleted++
 41489  	sqlite3.Xsqlite3_thread_cleanup(tls)
 41490  	return uintptr(0)
 41491  }
 41492  
 41493  func parse_client_id(tls *libc.TLS, interp uintptr, zArg uintptr) int32 {
 41494  	bp := tls.Alloc(16)
 41495  	defer tls.Free(16)
 41496  
 41497  	if zArg == uintptr(0) || int32(*(*int8)(unsafe.Pointer(zArg))) == 0 || int32(*(*int8)(unsafe.Pointer(zArg + 1))) != 0 || !(libc.Xisupper(tls, int32(uint8(*(*int8)(unsafe.Pointer(zArg))))) != 0) {
 41498  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+25741, 0))
 41499  		return -1
 41500  	}
 41501  	return int32(*(*int8)(unsafe.Pointer(zArg))) - 'A'
 41502  }
 41503  
 41504  func tcl_client_create(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41505  	bp := tls.Alloc(96)
 41506  	defer tls.Free(96)
 41507  
 41508  	var i int32
 41509  
 41510  	var rc int32
 41511  
 41512  	if argc != 3 {
 41513  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41514  			ts+25780, 0))
 41515  		return TCL_ERROR
 41516  	}
 41517  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41518  	if i < 0 {
 41519  		return TCL_ERROR
 41520  	}
 41521  	if threadset1[i].Fbusy != 0 {
 41522  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25793, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+25801, 0))
 41523  		return TCL_ERROR
 41524  	}
 41525  	threadset1[i].Fbusy = 1
 41526  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 41527  	threadset1[i].FzFilename = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41528  	threadset1[i].Fopnum = 1
 41529  	threadset1[i].Fcompleted = 0
 41530  	rc = libc.Xpthread_create(tls, bp+88, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 41531  		f func(*libc.TLS, uintptr) uintptr
 41532  	}{client_main})), uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41533  	if rc != 0 {
 41534  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+25821, 0))
 41535  		sqlite3.Xsqlite3_free(tls, threadset1[i].FzFilename)
 41536  		threadset1[i].Fbusy = 0
 41537  		return TCL_ERROR
 41538  	}
 41539  	libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp + 88)))
 41540  	if threadset1[i].FnServer == 0 {
 41541  		threadset1[i].FnServer = 1
 41542  		sqlite3_server_start2(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688+1680)
 41543  	}
 41544  	return TCL_OK
 41545  }
 41546  
 41547  func client_wait(tls *libc.TLS, p uintptr) {
 41548  	for (*Thread1)(unsafe.Pointer(p)).Fopnum > (*Thread1)(unsafe.Pointer(p)).Fcompleted {
 41549  		libc.Xsched_yield(tls)
 41550  	}
 41551  }
 41552  
 41553  func tcl_client_wait(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41554  	bp := tls.Alloc(48)
 41555  	defer tls.Free(48)
 41556  
 41557  	var i int32
 41558  
 41559  	if argc != 2 {
 41560  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41561  			ts+25849, 0))
 41562  		return TCL_ERROR
 41563  	}
 41564  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41565  	if i < 0 {
 41566  		return TCL_ERROR
 41567  	}
 41568  	if !(threadset1[i].Fbusy != 0) {
 41569  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41570  		return TCL_ERROR
 41571  	}
 41572  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41573  	return TCL_OK
 41574  }
 41575  
 41576  func stop_thread(tls *libc.TLS, p uintptr) {
 41577  	client_wait(tls, p)
 41578  	(*Thread1)(unsafe.Pointer(p)).FxOp = uintptr(0)
 41579  	(*Thread1)(unsafe.Pointer(p)).Fopnum++
 41580  	client_wait(tls, p)
 41581  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzArg)
 41582  	(*Thread1)(unsafe.Pointer(p)).FzArg = uintptr(0)
 41583  	sqlite3.Xsqlite3_free(tls, (*Thread1)(unsafe.Pointer(p)).FzFilename)
 41584  	(*Thread1)(unsafe.Pointer(p)).FzFilename = uintptr(0)
 41585  	(*Thread1)(unsafe.Pointer(p)).Fbusy = 0
 41586  }
 41587  
 41588  func tcl_client_halt(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41589  	bp := tls.Alloc(48)
 41590  	defer tls.Free(48)
 41591  
 41592  	var i int32
 41593  
 41594  	if argc != 2 {
 41595  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41596  			ts+25849, 0))
 41597  		return TCL_ERROR
 41598  	}
 41599  	if int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8))))) == '*' && int32(*(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(argv + 1*8)) + 1))) == 0 {
 41600  		for i = 0; i < N_THREAD; i++ {
 41601  			if threadset1[i].Fbusy != 0 {
 41602  				stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41603  			}
 41604  		}
 41605  	} else {
 41606  		i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41607  		if i < 0 {
 41608  			return TCL_ERROR
 41609  		}
 41610  		if !(threadset1[i].Fbusy != 0) {
 41611  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41612  			return TCL_ERROR
 41613  		}
 41614  		stop_thread(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41615  	}
 41616  
 41617  	for i = 0; i < N_THREAD && threadset1[i].Fbusy == 0; i++ {
 41618  	}
 41619  	if i >= N_THREAD {
 41620  		sqlite3_server_stop(tls)
 41621  		for 1 != 0 {
 41622  			for i = 0; i < N_THREAD && threadset1[i].FnServer == 0; i++ {
 41623  			}
 41624  			if i == N_THREAD {
 41625  				break
 41626  			}
 41627  			libc.Xsched_yield(tls)
 41628  		}
 41629  	}
 41630  	return TCL_OK
 41631  }
 41632  
 41633  func tcl_client_argc(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41634  	bp := tls.Alloc(172)
 41635  	defer tls.Free(172)
 41636  
 41637  	var i int32
 41638  
 41639  	if argc != 2 {
 41640  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41641  			ts+25849, 0))
 41642  		return TCL_ERROR
 41643  	}
 41644  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41645  	if i < 0 {
 41646  		return TCL_ERROR
 41647  	}
 41648  	if !(threadset1[i].Fbusy != 0) {
 41649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41650  		return TCL_ERROR
 41651  	}
 41652  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41653  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+72, ts+1333, libc.VaList(bp+48, threadset1[i].Fargc))
 41654  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+56, bp+72, 0))
 41655  	return TCL_OK
 41656  }
 41657  
 41658  func tcl_client_argv(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41659  	bp := tls.Alloc(84)
 41660  	defer tls.Free(84)
 41661  
 41662  	var i int32
 41663  
 41664  	if argc != 3 {
 41665  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41666  			ts+25868, 0))
 41667  		return TCL_ERROR
 41668  	}
 41669  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41670  	if i < 0 {
 41671  		return TCL_ERROR
 41672  	}
 41673  	if !(threadset1[i].Fbusy != 0) {
 41674  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41675  		return TCL_ERROR
 41676  	}
 41677  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41678  		return TCL_ERROR
 41679  	}
 41680  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41681  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 41682  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41683  		return TCL_ERROR
 41684  	}
 41685  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset1)) + uintptr(i)*1688 + 80 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*8)), 0))
 41686  	return TCL_OK
 41687  }
 41688  
 41689  func tcl_client_colname(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41690  	bp := tls.Alloc(84)
 41691  	defer tls.Free(84)
 41692  
 41693  	var i int32
 41694  
 41695  	if argc != 3 {
 41696  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41697  			ts+25868, 0))
 41698  		return TCL_ERROR
 41699  	}
 41700  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41701  	if i < 0 {
 41702  		return TCL_ERROR
 41703  	}
 41704  	if !(threadset1[i].Fbusy != 0) {
 41705  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41706  		return TCL_ERROR
 41707  	}
 41708  	if tcl.XTcl_GetInt(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)), bp+80) != 0 {
 41709  		return TCL_ERROR
 41710  	}
 41711  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41712  	if *(*int32)(unsafe.Pointer(bp + 80)) < 0 || *(*int32)(unsafe.Pointer(bp + 80)) >= threadset1[i].Fargc {
 41713  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25874, 0))
 41714  		return TCL_ERROR
 41715  	}
 41716  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&threadset1)) + uintptr(i)*1688 + 880 + uintptr(*(*int32)(unsafe.Pointer(bp + 80)))*8)), 0))
 41717  	return TCL_OK
 41718  }
 41719  
 41720  func tcl_client_result(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41721  	bp := tls.Alloc(64)
 41722  	defer tls.Free(64)
 41723  
 41724  	var i int32
 41725  	var zName uintptr
 41726  
 41727  	if argc != 2 {
 41728  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41729  			ts+25849, 0))
 41730  		return TCL_ERROR
 41731  	}
 41732  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41733  	if i < 0 {
 41734  		return TCL_ERROR
 41735  	}
 41736  	if !(threadset1[i].Fbusy != 0) {
 41737  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41738  		return TCL_ERROR
 41739  	}
 41740  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41741  	zName = sqlite3.Xsqlite3ErrName(tls, threadset1[i].Frc)
 41742  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, zName, 0))
 41743  	return TCL_OK
 41744  }
 41745  
 41746  func tcl_client_error(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41747  	bp := tls.Alloc(64)
 41748  	defer tls.Free(64)
 41749  
 41750  	var i int32
 41751  
 41752  	if argc != 2 {
 41753  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41754  			ts+25849, 0))
 41755  		return TCL_ERROR
 41756  	}
 41757  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41758  	if i < 0 {
 41759  		return TCL_ERROR
 41760  	}
 41761  	if !(threadset1[i].Fbusy != 0) {
 41762  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41763  		return TCL_ERROR
 41764  	}
 41765  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41766  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, threadset1[i].FzErr, 0))
 41767  	return TCL_OK
 41768  }
 41769  
 41770  func do_compile1(tls *libc.TLS, p uintptr) {
 41771  	if (*Thread1)(unsafe.Pointer(p)).Fdb == uintptr(0) {
 41772  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25901)
 41773  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41774  		return
 41775  	}
 41776  	if (*Thread1)(unsafe.Pointer(p)).FpStmt != 0 {
 41777  		sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41778  		(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41779  	}
 41780  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_prepare(tls, (*Thread1)(unsafe.Pointer(p)).Fdb, (*Thread1)(unsafe.Pointer(p)).FzArg, -1, p+48, uintptr(0))
 41781  }
 41782  
 41783  func tcl_client_compile(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41784  	bp := tls.Alloc(56)
 41785  	defer tls.Free(56)
 41786  
 41787  	var i int32
 41788  	if argc != 3 {
 41789  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41790  			ts+25921, 0))
 41791  		return TCL_ERROR
 41792  	}
 41793  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41794  	if i < 0 {
 41795  		return TCL_ERROR
 41796  	}
 41797  	if !(threadset1[i].Fbusy != 0) {
 41798  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41799  		return TCL_ERROR
 41800  	}
 41801  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41802  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_compile1}))
 41803  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41804  	threadset1[i].FzArg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 41805  	threadset1[i].Fopnum++
 41806  	return TCL_OK
 41807  }
 41808  
 41809  func do_step1(tls *libc.TLS, p uintptr) {
 41810  	var i int32
 41811  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41812  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41813  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41814  		return
 41815  	}
 41816  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_step(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41817  	if (*Thread1)(unsafe.Pointer(p)).Frc == SQLITE_ROW {
 41818  		(*Thread1)(unsafe.Pointer(p)).Fargc = sqlite3.Xsqlite3_column_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41819  		for i = 0; i < sqlite3.Xsqlite3_data_count(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt); i++ {
 41820  			*(*uintptr)(unsafe.Pointer(p + 80 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_text(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 41821  		}
 41822  		for i = 0; i < (*Thread1)(unsafe.Pointer(p)).Fargc; i++ {
 41823  			*(*uintptr)(unsafe.Pointer(p + 880 + uintptr(i)*8)) = sqlite3.Xsqlite3_column_name(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt, i)
 41824  		}
 41825  	}
 41826  }
 41827  
 41828  func tcl_client_step(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41829  	bp := tls.Alloc(48)
 41830  	defer tls.Free(48)
 41831  
 41832  	var i int32
 41833  	if argc != 2 {
 41834  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41835  			ts+25958, 0))
 41836  		return TCL_ERROR
 41837  	}
 41838  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41839  	if i < 0 {
 41840  		return TCL_ERROR
 41841  	}
 41842  	if !(threadset1[i].Fbusy != 0) {
 41843  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41844  		return TCL_ERROR
 41845  	}
 41846  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41847  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_step1}))
 41848  	threadset1[i].Fopnum++
 41849  	return TCL_OK
 41850  }
 41851  
 41852  func do_finalize1(tls *libc.TLS, p uintptr) {
 41853  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41854  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41855  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41856  		return
 41857  	}
 41858  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_finalize(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41859  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41860  }
 41861  
 41862  func tcl_client_finalize(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41863  	bp := tls.Alloc(48)
 41864  	defer tls.Free(48)
 41865  
 41866  	var i int32
 41867  	if argc != 2 {
 41868  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41869  			ts+25958, 0))
 41870  		return TCL_ERROR
 41871  	}
 41872  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41873  	if i < 0 {
 41874  		return TCL_ERROR
 41875  	}
 41876  	if !(threadset1[i].Fbusy != 0) {
 41877  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41878  		return TCL_ERROR
 41879  	}
 41880  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41881  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_finalize1}))
 41882  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41883  	threadset1[i].FzArg = uintptr(0)
 41884  	threadset1[i].Fopnum++
 41885  	return TCL_OK
 41886  }
 41887  
 41888  func do_reset(tls *libc.TLS, p uintptr) {
 41889  	if (*Thread1)(unsafe.Pointer(p)).FpStmt == uintptr(0) {
 41890  		(*Thread1)(unsafe.Pointer(p)).FzErr = libc.AssignPtrUintptr(p+64, ts+25929)
 41891  		(*Thread1)(unsafe.Pointer(p)).Frc = SQLITE_ERROR
 41892  		return
 41893  	}
 41894  	(*Thread1)(unsafe.Pointer(p)).Frc = sqlite3_client_reset(tls, (*Thread1)(unsafe.Pointer(p)).FpStmt)
 41895  	(*Thread1)(unsafe.Pointer(p)).FpStmt = uintptr(0)
 41896  }
 41897  
 41898  func tcl_client_reset(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41899  	bp := tls.Alloc(48)
 41900  	defer tls.Free(48)
 41901  
 41902  	var i int32
 41903  	if argc != 2 {
 41904  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41905  			ts+25958, 0))
 41906  		return TCL_ERROR
 41907  	}
 41908  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41909  	if i < 0 {
 41910  		return TCL_ERROR
 41911  	}
 41912  	if !(threadset1[i].Fbusy != 0) {
 41913  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41914  		return TCL_ERROR
 41915  	}
 41916  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41917  	threadset1[i].FxOp = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{do_reset}))
 41918  	sqlite3.Xsqlite3_free(tls, threadset1[i].FzArg)
 41919  	threadset1[i].FzArg = uintptr(0)
 41920  	threadset1[i].Fopnum++
 41921  	return TCL_OK
 41922  }
 41923  
 41924  func tcl_client_swap(tls *libc.TLS, NotUsed uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 41925  	bp := tls.Alloc(64)
 41926  	defer tls.Free(64)
 41927  
 41928  	var i int32
 41929  	var j int32
 41930  	var temp uintptr
 41931  	if argc != 3 {
 41932  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 41933  			ts+25963, 0))
 41934  		return TCL_ERROR
 41935  	}
 41936  	i = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 41937  	if i < 0 {
 41938  		return TCL_ERROR
 41939  	}
 41940  	if !(threadset1[i].Fbusy != 0) {
 41941  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+25853, 0))
 41942  		return TCL_ERROR
 41943  	}
 41944  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(i)*1688)
 41945  	j = parse_client_id(tls, interp, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 41946  	if j < 0 {
 41947  		return TCL_ERROR
 41948  	}
 41949  	if !(threadset1[j].Fbusy != 0) {
 41950  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+25853, 0))
 41951  		return TCL_ERROR
 41952  	}
 41953  	client_wait(tls, uintptr(unsafe.Pointer(&threadset1))+uintptr(j)*1688)
 41954  	temp = threadset1[i].Fdb
 41955  	threadset1[i].Fdb = threadset1[j].Fdb
 41956  	threadset1[j].Fdb = temp
 41957  	return TCL_OK
 41958  }
 41959  
 41960  func Sqlitetest7_Init(tls *libc.TLS, interp uintptr) int32 {
 41961  	var i int32
 41962  
 41963  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd6))/uint64(unsafe.Sizeof(struct {
 41964  		FzName uintptr
 41965  		FxProc uintptr
 41966  	}{})); i++ {
 41967  		tcl.XTcl_CreateCommand(tls, interp, aCmd6[i].FzName, aCmd6[i].FxProc, uintptr(0), uintptr(0))
 41968  	}
 41969  	return TCL_OK
 41970  }
 41971  
 41972  var aCmd6 = [13]struct {
 41973  	FzName uintptr
 41974  	FxProc uintptr
 41975  }{
 41976  	{FzName: ts + 26987, FxProc: 0},
 41977  	{FzName: ts + 27001, FxProc: 0},
 41978  	{FzName: ts + 27013, FxProc: 0},
 41979  	{FzName: ts + 27025, FxProc: 0},
 41980  	{FzName: ts + 27037, FxProc: 0},
 41981  	{FzName: ts + 27049, FxProc: 0},
 41982  	{FzName: ts + 27064, FxProc: 0},
 41983  	{FzName: ts + 27078, FxProc: 0},
 41984  	{FzName: ts + 27091, FxProc: 0},
 41985  	{FzName: ts + 27106, FxProc: 0},
 41986  	{FzName: ts + 27118, FxProc: 0},
 41987  	{FzName: ts + 27131, FxProc: 0},
 41988  	{FzName: ts + 27147, FxProc: 0},
 41989  }
 41990  
 41991  type echo_vtab1 = struct {
 41992  	Fbase          sqlite3_vtab
 41993  	Finterp        uintptr
 41994  	Fdb            uintptr
 41995  	FisPattern     int32
 41996  	FinTransaction int32
 41997  	FzThis         uintptr
 41998  	FzTableName    uintptr
 41999  	FzLogName      uintptr
 42000  	FnCol          int32
 42001  	F__ccgo_pad1   [4]byte
 42002  	FaIndex        uintptr
 42003  	FaCol          uintptr
 42004  }
 42005  
 42006  type echo_vtab = echo_vtab1
 42007  type echo_cursor1 = struct {
 42008  	Fbase  sqlite3_vtab_cursor
 42009  	FpStmt uintptr
 42010  }
 42011  
 42012  type echo_cursor = echo_cursor1
 42013  
 42014  func simulateVtabError(tls *libc.TLS, p uintptr, zMethod uintptr) int32 {
 42015  	bp := tls.Alloc(152)
 42016  	defer tls.Free(152)
 42017  
 42018  	var zErr uintptr
 42019  
 42020  	*(*int8)(unsafe.Pointer(bp + 24 + 127)) = int8(0)
 42021  	sqlite3.Xsqlite3_snprintf(tls, 127, bp+24, ts+27159, libc.VaList(bp, zMethod, (*echo_vtab)(unsafe.Pointer(p)).FzTableName))
 42022  	zErr = tcl.XTcl_GetVar2(tls, (*echo_vtab)(unsafe.Pointer(p)).Finterp, bp+24, uintptr(0), TCL_GLOBAL_ONLY)
 42023  	if zErr != 0 {
 42024  		(*echo_vtab)(unsafe.Pointer(p)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+16, zErr))
 42025  	}
 42026  	return libc.Bool32(zErr != uintptr(0))
 42027  }
 42028  
 42029  func dequoteString(tls *libc.TLS, z uintptr) {
 42030  	var quote int32
 42031  	var i int32
 42032  	var j int32
 42033  	if z == uintptr(0) {
 42034  		return
 42035  	}
 42036  	quote = int32(*(*int8)(unsafe.Pointer(z)))
 42037  	switch quote {
 42038  	case '\'':
 42039  		break
 42040  	case '"':
 42041  		break
 42042  	case '`':
 42043  		break
 42044  	case '[':
 42045  		quote = ']'
 42046  		break
 42047  	default:
 42048  		return
 42049  	}
 42050  	i = 1
 42051  	j = 0
 42052  	for ; *(*int8)(unsafe.Pointer(z + uintptr(i))) != 0; i++ {
 42053  		if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == quote {
 42054  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(i+1)))) == quote {
 42055  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(quote)
 42056  				i++
 42057  			} else {
 42058  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = int8(0)
 42059  				break
 42060  			}
 42061  		} else {
 42062  			*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&j, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(i)))
 42063  		}
 42064  	}
 42065  }
 42066  
 42067  func getColumnNames(tls *libc.TLS, db uintptr, zTab uintptr, paCol uintptr, pnCol uintptr) int32 {
 42068  	bp := tls.Alloc(24)
 42069  	defer tls.Free(24)
 42070  
 42071  	var aCol uintptr
 42072  	var zSql uintptr
 42073  
 42074  	var rc int32
 42075  	var nCol int32
 42076  	var zName uintptr
 42077  	var ii int32
 42078  	var nBytes int32
 42079  	var zSpace uintptr
 42080  	aCol = uintptr(0)
 42081  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42082  	rc = SQLITE_OK
 42083  	nCol = 0
 42084  
 42085  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27203, libc.VaList(bp, zTab))
 42086  	if !!(zSql != 0) {
 42087  		goto __1
 42088  	}
 42089  	rc = SQLITE_NOMEM
 42090  	goto out
 42091  __1:
 42092  	;
 42093  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42094  	sqlite3.Xsqlite3_free(tls, zSql)
 42095  
 42096  	if !(rc == SQLITE_OK) {
 42097  		goto __2
 42098  	}
 42099  	nCol = sqlite3.Xsqlite3_column_count(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42100  
 42101  	nBytes = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(nCol))
 42102  	ii = 0
 42103  __3:
 42104  	if !(ii < nCol) {
 42105  		goto __5
 42106  	}
 42107  	zName = sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)
 42108  	if !!(zName != 0) {
 42109  		goto __6
 42110  	}
 42111  	rc = SQLITE_NOMEM
 42112  	goto out
 42113  __6:
 42114  	;
 42115  	nBytes = nBytes + (int32(libc.Xstrlen(tls, zName)) + 1)
 42116  	goto __4
 42117  __4:
 42118  	ii++
 42119  	goto __3
 42120  	goto __5
 42121  __5:
 42122  	;
 42123  	aCol = sqlite3.Xsqlite3MallocZero(tls, uint64(nBytes))
 42124  	if !!(aCol != 0) {
 42125  		goto __7
 42126  	}
 42127  	rc = SQLITE_NOMEM
 42128  	goto out
 42129  __7:
 42130  	;
 42131  	zSpace = aCol + uintptr(nCol)*8
 42132  	ii = 0
 42133  __8:
 42134  	if !(ii < nCol) {
 42135  		goto __10
 42136  	}
 42137  	*(*uintptr)(unsafe.Pointer(aCol + uintptr(ii)*8)) = zSpace
 42138  	sqlite3.Xsqlite3_snprintf(tls, nBytes, zSpace, ts, libc.VaList(bp+8, sqlite3.Xsqlite3_column_name(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ii)))
 42139  	zSpace += uintptr(int32(libc.Xstrlen(tls, zSpace)) + 1)
 42140  	goto __9
 42141  __9:
 42142  	ii++
 42143  	goto __8
 42144  	goto __10
 42145  __10:
 42146  	;
 42147  __2:
 42148  	;
 42149  	*(*uintptr)(unsafe.Pointer(paCol)) = aCol
 42150  	*(*int32)(unsafe.Pointer(pnCol)) = nCol
 42151  
 42152  out:
 42153  	sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42154  	return rc
 42155  }
 42156  
 42157  func getIndexArray(tls *libc.TLS, db uintptr, zTab uintptr, nCol int32, paIndex uintptr) int32 {
 42158  	bp := tls.Alloc(32)
 42159  	defer tls.Free(32)
 42160  
 42161  	var aIndex uintptr
 42162  	var rc int32
 42163  	var zSql uintptr
 42164  	var cid int32
 42165  	var zIdx uintptr
 42166  
 42167  	var rc2 int32
 42168  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 42169  	aIndex = uintptr(0)
 42170  
 42171  	aIndex = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(int32(0)))*uint64(nCol))
 42172  	if !!(aIndex != 0) {
 42173  		goto __1
 42174  	}
 42175  	rc = SQLITE_NOMEM
 42176  	goto get_index_array_out
 42177  __1:
 42178  	;
 42179  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27220, libc.VaList(bp, zTab))
 42180  	if !!(zSql != 0) {
 42181  		goto __2
 42182  	}
 42183  	rc = SQLITE_NOMEM
 42184  	goto get_index_array_out
 42185  __2:
 42186  	;
 42187  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+16, uintptr(0))
 42188  	sqlite3.Xsqlite3_free(tls, zSql)
 42189  
 42190  __3:
 42191  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 16))) == SQLITE_ROW) {
 42192  		goto __4
 42193  	}
 42194  	zIdx = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), 1)
 42195  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 42196  	if !(zIdx == uintptr(0)) {
 42197  		goto __5
 42198  	}
 42199  	goto __3
 42200  __5:
 42201  	;
 42202  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27242, libc.VaList(bp+8, zIdx))
 42203  	if !!(zSql != 0) {
 42204  		goto __6
 42205  	}
 42206  	rc = SQLITE_NOMEM
 42207  	goto get_index_array_out
 42208  __6:
 42209  	;
 42210  	rc = sqlite3.Xsqlite3_prepare(tls, db, zSql, -1, bp+24, uintptr(0))
 42211  	sqlite3.Xsqlite3_free(tls, zSql)
 42212  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0 && sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 24))) == SQLITE_ROW) {
 42213  		goto __7
 42214  	}
 42215  	cid = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), 1)
 42216  
 42217  	*(*int32)(unsafe.Pointer(aIndex + uintptr(cid)*4)) = 1
 42218  __7:
 42219  	;
 42220  	if !(*(*uintptr)(unsafe.Pointer(bp + 24)) != 0) {
 42221  		goto __8
 42222  	}
 42223  	rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 42224  __8:
 42225  	;
 42226  	if !(rc != SQLITE_OK) {
 42227  		goto __9
 42228  	}
 42229  	goto get_index_array_out
 42230  __9:
 42231  	;
 42232  	goto __3
 42233  __4:
 42234  	;
 42235  get_index_array_out:
 42236  	if !(*(*uintptr)(unsafe.Pointer(bp + 16)) != 0) {
 42237  		goto __10
 42238  	}
 42239  	rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 42240  	if !(rc == SQLITE_OK) {
 42241  		goto __11
 42242  	}
 42243  	rc = rc2
 42244  __11:
 42245  	;
 42246  __10:
 42247  	;
 42248  	if !(rc != SQLITE_OK) {
 42249  		goto __12
 42250  	}
 42251  	sqlite3.Xsqlite3_free(tls, aIndex)
 42252  	aIndex = uintptr(0)
 42253  __12:
 42254  	;
 42255  	*(*uintptr)(unsafe.Pointer(paIndex)) = aIndex
 42256  	return rc
 42257  }
 42258  
 42259  func appendToEchoModule(tls *libc.TLS, interp uintptr, zArg uintptr) {
 42260  	var flags int32 = TCL_APPEND_VALUE | TCL_LIST_ELEMENT | TCL_GLOBAL_ONLY
 42261  	tcl.XTcl_SetVar2(tls, interp, ts+27264, uintptr(0), func() uintptr {
 42262  		if zArg != 0 {
 42263  			return zArg
 42264  		}
 42265  		return ts + 584
 42266  	}(), flags)
 42267  }
 42268  
 42269  func echoDeclareVtab(tls *libc.TLS, pVtab uintptr, db uintptr) int32 {
 42270  	bp := tls.Alloc(8)
 42271  	defer tls.Free(8)
 42272  
 42273  	var rc int32 = SQLITE_OK
 42274  
 42275  	if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 {
 42276  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 42277  		rc = sqlite3.Xsqlite3_prepare(tls, db,
 42278  			ts+27276,
 42279  			-1, bp, uintptr(0))
 42280  		if rc == SQLITE_OK {
 42281  			sqlite3.Xsqlite3_bind_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 1, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, -1, uintptr(0))
 42282  			if sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) == SQLITE_ROW {
 42283  				var rc2 int32
 42284  				var zCreateTable uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 42285  				rc = sqlite3.Xsqlite3_declare_vtab(tls, db, zCreateTable)
 42286  				rc2 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42287  				if rc == SQLITE_OK {
 42288  					rc = rc2
 42289  				}
 42290  			} else {
 42291  				rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 42292  				if rc == SQLITE_OK {
 42293  					rc = SQLITE_ERROR
 42294  				}
 42295  			}
 42296  			if rc == SQLITE_OK {
 42297  				rc = getColumnNames(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, pVtab+88, pVtab+72)
 42298  			}
 42299  			if rc == SQLITE_OK {
 42300  				rc = getIndexArray(tls, db, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName, (*echo_vtab)(unsafe.Pointer(pVtab)).FnCol, pVtab+80)
 42301  			}
 42302  		}
 42303  	}
 42304  
 42305  	return rc
 42306  }
 42307  
 42308  func echoDestructor(tls *libc.TLS, pVtab uintptr) int32 {
 42309  	var p uintptr = pVtab
 42310  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaIndex)
 42311  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FaCol)
 42312  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis)
 42313  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzTableName)
 42314  	sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(p)).FzLogName)
 42315  	sqlite3.Xsqlite3_free(tls, p)
 42316  	return 0
 42317  }
 42318  
 42319  type EchoModule1 = struct {
 42320  	Finterp uintptr
 42321  	Fdb     uintptr
 42322  }
 42323  
 42324  type EchoModule = EchoModule1
 42325  
 42326  func echoConstructor(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42327  	bp := tls.Alloc(32)
 42328  	defer tls.Free(32)
 42329  
 42330  	var rc int32
 42331  	var i int32
 42332  	var pVtab uintptr
 42333  
 42334  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_vtab{})))
 42335  	if !(pVtab != 0) {
 42336  		return SQLITE_NOMEM
 42337  	}
 42338  	(*echo_vtab)(unsafe.Pointer(pVtab)).Finterp = (*EchoModule)(unsafe.Pointer(pAux)).Finterp
 42339  	(*echo_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 42340  
 42341  	(*echo_vtab)(unsafe.Pointer(pVtab)).FzThis = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 2*8))))
 42342  	if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzThis) != 0) {
 42343  		echoDestructor(tls, pVtab)
 42344  		return SQLITE_NOMEM
 42345  	}
 42346  
 42347  	if argc > 3 {
 42348  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 42349  		dequoteString(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42350  		if (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName != 0 && int32(*(*int8)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))) == '*' {
 42351  			var z uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(argv + 2*8)), (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName+1))
 42352  			sqlite3.Xsqlite3_free(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName)
 42353  			(*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName = z
 42354  			(*echo_vtab)(unsafe.Pointer(pVtab)).FisPattern = 1
 42355  		}
 42356  		if !(int32((*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) != 0) {
 42357  			echoDestructor(tls, pVtab)
 42358  			return SQLITE_NOMEM
 42359  		}
 42360  	}
 42361  
 42362  	for i = 0; i < argc; i++ {
 42363  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 42364  	}
 42365  
 42366  	rc = echoDeclareVtab(tls, pVtab, db)
 42367  	if rc != SQLITE_OK {
 42368  		echoDestructor(tls, pVtab)
 42369  		return rc
 42370  	}
 42371  
 42372  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 42373  	return SQLITE_OK
 42374  }
 42375  
 42376  func echoCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42377  	bp := tls.Alloc(24)
 42378  	defer tls.Free(24)
 42379  
 42380  	var rc int32 = SQLITE_OK
 42381  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27345)
 42382  	rc = echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42383  
 42384  	if rc == SQLITE_OK && argc == 5 {
 42385  		var zSql uintptr
 42386  		var pVtab uintptr = *(*uintptr)(unsafe.Pointer(ppVtab))
 42387  		(*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 4*8))))
 42388  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27353, libc.VaList(bp+8, (*echo_vtab)(unsafe.Pointer(pVtab)).FzLogName))
 42389  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 42390  		sqlite3.Xsqlite3_free(tls, zSql)
 42391  		if rc != SQLITE_OK {
 42392  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, sqlite3.Xsqlite3_errmsg(tls, db)))
 42393  		}
 42394  	}
 42395  
 42396  	if *(*uintptr)(unsafe.Pointer(ppVtab)) != 0 && rc != SQLITE_OK {
 42397  		echoDestructor(tls, *(*uintptr)(unsafe.Pointer(ppVtab)))
 42398  		*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 42399  	}
 42400  
 42401  	if rc == SQLITE_OK {
 42402  		(*echo_vtab)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(ppVtab)))).FinTransaction = 1
 42403  	}
 42404  
 42405  	return rc
 42406  }
 42407  
 42408  func echoConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 42409  	appendToEchoModule(tls, (*EchoModule)(unsafe.Pointer(pAux)).Finterp, ts+27377)
 42410  	return echoConstructor(tls, db, pAux, argc, argv, ppVtab, pzErr)
 42411  }
 42412  
 42413  func echoDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 42414  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27386)
 42415  	return echoDestructor(tls, pVtab)
 42416  }
 42417  
 42418  func echoDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 42419  	bp := tls.Alloc(8)
 42420  	defer tls.Free(8)
 42421  
 42422  	var rc int32 = SQLITE_OK
 42423  	var p uintptr = pVtab
 42424  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27398)
 42425  
 42426  	if p != 0 && (*echo_vtab)(unsafe.Pointer(p)).FzLogName != 0 {
 42427  		var zSql uintptr
 42428  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+27407, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzLogName))
 42429  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 42430  		sqlite3.Xsqlite3_free(tls, zSql)
 42431  	}
 42432  
 42433  	if rc == SQLITE_OK {
 42434  		rc = echoDestructor(tls, pVtab)
 42435  	}
 42436  	return rc
 42437  }
 42438  
 42439  func echoOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 42440  	var pCur uintptr
 42441  	if simulateVtabError(tls, pVTab, ts+27421) != 0 {
 42442  		return SQLITE_ERROR
 42443  	}
 42444  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(echo_cursor{})))
 42445  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 42446  	return func() int32 {
 42447  		if pCur != 0 {
 42448  			return SQLITE_OK
 42449  		}
 42450  		return SQLITE_NOMEM
 42451  	}()
 42452  }
 42453  
 42454  func echoClose(tls *libc.TLS, cur uintptr) int32 {
 42455  	var rc int32
 42456  	var pCur uintptr = cur
 42457  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt
 42458  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42459  	sqlite3.Xsqlite3_free(tls, pCur)
 42460  	rc = sqlite3.Xsqlite3_finalize(tls, pStmt)
 42461  	return rc
 42462  }
 42463  
 42464  func echoEof(tls *libc.TLS, cur uintptr) int32 {
 42465  	return func() int32 {
 42466  		if (*echo_cursor)(unsafe.Pointer(cur)).FpStmt != 0 {
 42467  			return 0
 42468  		}
 42469  		return 1
 42470  	}()
 42471  }
 42472  
 42473  func echoNext(tls *libc.TLS, cur uintptr) int32 {
 42474  	var rc int32 = SQLITE_OK
 42475  	var pCur uintptr = cur
 42476  
 42477  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27427) != 0 {
 42478  		return SQLITE_ERROR
 42479  	}
 42480  
 42481  	if (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt != 0 {
 42482  		rc = sqlite3.Xsqlite3_step(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42483  		if rc == SQLITE_ROW {
 42484  			rc = SQLITE_OK
 42485  		} else {
 42486  			rc = sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42487  			(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42488  		}
 42489  	}
 42490  
 42491  	return rc
 42492  }
 42493  
 42494  func echoColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 42495  	var iCol int32 = i + 1
 42496  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 42497  
 42498  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+27433) != 0 {
 42499  		return SQLITE_ERROR
 42500  	}
 42501  
 42502  	if !(pStmt != 0) {
 42503  		sqlite3.Xsqlite3_result_null(tls, ctx)
 42504  	} else {
 42505  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, pStmt, iCol))
 42506  	}
 42507  	return SQLITE_OK
 42508  }
 42509  
 42510  func echoRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 42511  	var pStmt uintptr = (*echo_cursor)(unsafe.Pointer(cur)).FpStmt
 42512  
 42513  	if simulateVtabError(tls, (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab, ts+2304) != 0 {
 42514  		return SQLITE_ERROR
 42515  	}
 42516  
 42517  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, pStmt, 0)
 42518  	return SQLITE_OK
 42519  }
 42520  
 42521  func hashString(tls *libc.TLS, zString uintptr) int32 {
 42522  	var val u32 = u32(0)
 42523  	var ii int32
 42524  	for ii = 0; *(*int8)(unsafe.Pointer(zString + uintptr(ii))) != 0; ii++ {
 42525  		val = val<<3 + u32(int32(*(*int8)(unsafe.Pointer(zString + uintptr(ii)))))
 42526  	}
 42527  	return int32(val & u32(0x7fffffff))
 42528  }
 42529  
 42530  func echoFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 42531  	var rc int32
 42532  	var i int32
 42533  
 42534  	var pCur uintptr = pVtabCursor
 42535  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 42536  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 42537  
 42538  	if simulateVtabError(tls, pVtab, ts+27441) != 0 {
 42539  		return SQLITE_ERROR
 42540  	}
 42541  
 42542  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27441)
 42543  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, idxStr)
 42544  	for i = 0; i < argc; i++ {
 42545  		appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))))
 42546  	}
 42547  
 42548  	sqlite3.Xsqlite3_finalize(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt)
 42549  	(*echo_cursor)(unsafe.Pointer(pCur)).FpStmt = uintptr(0)
 42550  
 42551  	rc = sqlite3.Xsqlite3_prepare(tls, db, idxStr, -1, pCur+8, uintptr(0))
 42552  
 42553  	for i = 0; rc == SQLITE_OK && i < argc; i++ {
 42554  		rc = sqlite3.Xsqlite3_bind_value(tls, (*echo_cursor)(unsafe.Pointer(pCur)).FpStmt, i+1, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 42555  	}
 42556  
 42557  	if rc == SQLITE_OK {
 42558  		rc = echoNext(tls, pVtabCursor)
 42559  	}
 42560  
 42561  	return rc
 42562  }
 42563  
 42564  func string_concat(tls *libc.TLS, pzStr uintptr, zAppend uintptr, doFree int32, pRc uintptr) {
 42565  	bp := tls.Alloc(24)
 42566  	defer tls.Free(24)
 42567  
 42568  	var zIn uintptr = *(*uintptr)(unsafe.Pointer(pzStr))
 42569  	if !(zAppend != 0) && doFree != 0 && *(*int32)(unsafe.Pointer(pRc)) == SQLITE_OK {
 42570  		*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 42571  	}
 42572  	if *(*int32)(unsafe.Pointer(pRc)) != SQLITE_OK {
 42573  		sqlite3.Xsqlite3_free(tls, zIn)
 42574  		zIn = uintptr(0)
 42575  	} else {
 42576  		if zIn != 0 {
 42577  			var zTemp uintptr = zIn
 42578  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts+27340, libc.VaList(bp, zIn, zAppend))
 42579  			sqlite3.Xsqlite3_free(tls, zTemp)
 42580  		} else {
 42581  			zIn = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zAppend))
 42582  		}
 42583  		if !(zIn != 0) {
 42584  			*(*int32)(unsafe.Pointer(pRc)) = SQLITE_NOMEM
 42585  		}
 42586  	}
 42587  	*(*uintptr)(unsafe.Pointer(pzStr)) = zIn
 42588  	if doFree != 0 {
 42589  		sqlite3.Xsqlite3_free(tls, zAppend)
 42590  	}
 42591  }
 42592  
 42593  func echoSelectList(tls *libc.TLS, pTab uintptr, pIdxInfo uintptr) uintptr {
 42594  	bp := tls.Alloc(24)
 42595  	defer tls.Free(24)
 42596  
 42597  	var zRet uintptr = uintptr(0)
 42598  	if sqlite3.Xsqlite3_libversion_number(tls) < 3010000 {
 42599  		zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27449, 0)
 42600  	} else {
 42601  		var i int32
 42602  		for i = 0; i < (*echo_vtab)(unsafe.Pointer(pTab)).FnCol; i++ {
 42603  			if (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed&(uint64(1)<<func() int32 {
 42604  				if i >= 63 {
 42605  					return 63
 42606  				}
 42607  				return i
 42608  			}()) != 0 {
 42609  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27453, libc.VaList(bp, zRet, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pTab)).FaCol + uintptr(i)*8))))
 42610  			} else {
 42611  				zRet = sqlite3.Xsqlite3_mprintf(tls, ts+27460, libc.VaList(bp+16, zRet))
 42612  			}
 42613  			if !(zRet != 0) {
 42614  				break
 42615  			}
 42616  		}
 42617  	}
 42618  	return zRet
 42619  }
 42620  
 42621  func echoBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 42622  	bp := tls.Alloc(100)
 42623  	defer tls.Free(100)
 42624  
 42625  	var ii int32
 42626  	*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 42627  	var zCol uintptr = uintptr(0)
 42628  	var zNew uintptr
 42629  	var nArg int32 = 0
 42630  	var zSep uintptr = ts + 9392
 42631  	var pVtab uintptr = tab
 42632  	*(*uintptr)(unsafe.Pointer(bp + 80)) = uintptr(0)
 42633  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42634  
 42635  	var nRow int32 = 0
 42636  	var useIdx int32 = 0
 42637  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 42638  	var useCost int32 = 0
 42639  	var cost float64 = float64(0)
 42640  	var isIgnoreUsable int32 = 0
 42641  	if tcl.XTcl_GetVar2(tls, interp, ts+27469, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 42642  		isIgnoreUsable = 1
 42643  	}
 42644  
 42645  	if simulateVtabError(tls, pVtab, ts+27495) != 0 {
 42646  		return SQLITE_ERROR
 42647  	}
 42648  
 42649  	if tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY) != 0 {
 42650  		cost = libc.Xatof(tls, tcl.XTcl_GetVar2(tls, interp, ts+27506, uintptr(0), TCL_GLOBAL_ONLY))
 42651  		useCost = 1
 42652  	} else {
 42653  		*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27523, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42654  		if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42655  			return SQLITE_NOMEM
 42656  		}
 42657  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_prepare(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb, *(*uintptr)(unsafe.Pointer(bp + 88)), -1, bp+80, uintptr(0))
 42658  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42659  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 42660  			return *(*int32)(unsafe.Pointer(bp + 96))
 42661  		}
 42662  		sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 42663  		nRow = sqlite3.Xsqlite3_column_int(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), 0)
 42664  		*(*int32)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 80)))
 42665  		if *(*int32)(unsafe.Pointer(bp + 96)) != SQLITE_OK {
 42666  			return *(*int32)(unsafe.Pointer(bp + 96))
 42667  		}
 42668  	}
 42669  
 42670  	zCol = echoSelectList(tls, pVtab, pIdxInfo)
 42671  	if !(zCol != 0) {
 42672  		return SQLITE_NOMEM
 42673  	}
 42674  	*(*uintptr)(unsafe.Pointer(bp + 88)) = sqlite3.Xsqlite3_mprintf(tls, ts+27547, libc.VaList(bp+8, zCol, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42675  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42676  		return SQLITE_NOMEM
 42677  	}
 42678  
 42679  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 42680  		var pConstraint uintptr
 42681  		var pUsage uintptr
 42682  		var iCol int32
 42683  
 42684  		pConstraint = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 42685  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 42686  
 42687  		if !(isIgnoreUsable != 0) && !(int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fusable) != 0) {
 42688  			continue
 42689  		}
 42690  
 42691  		iCol = (*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).FiColumn
 42692  		if iCol < 0 || *(*int32)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaIndex + uintptr(iCol)*4)) != 0 {
 42693  			var zNewCol uintptr
 42694  			if iCol >= 0 {
 42695  				zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 42696  			} else {
 42697  				zNewCol = ts + 6427
 42698  			}
 42699  			var zOp uintptr = uintptr(0)
 42700  			useIdx = 1
 42701  			switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pConstraint)).Fop) {
 42702  			case SQLITE_INDEX_CONSTRAINT_EQ:
 42703  				zOp = ts + 27570
 42704  				break
 42705  				fallthrough
 42706  			case SQLITE_INDEX_CONSTRAINT_LT:
 42707  				zOp = ts + 27572
 42708  				break
 42709  				fallthrough
 42710  			case SQLITE_INDEX_CONSTRAINT_GT:
 42711  				zOp = ts + 27574
 42712  				break
 42713  				fallthrough
 42714  			case SQLITE_INDEX_CONSTRAINT_LE:
 42715  				zOp = ts + 27576
 42716  				break
 42717  				fallthrough
 42718  			case SQLITE_INDEX_CONSTRAINT_GE:
 42719  				zOp = ts + 27579
 42720  				break
 42721  				fallthrough
 42722  			case SQLITE_INDEX_CONSTRAINT_MATCH:
 42723  				zOp = ts + 27582
 42724  				break
 42725  				fallthrough
 42726  			case SQLITE_INDEX_CONSTRAINT_LIKE:
 42727  				zOp = ts + 27587
 42728  				break
 42729  				fallthrough
 42730  			case SQLITE_INDEX_CONSTRAINT_GLOB:
 42731  				zOp = ts + 27592
 42732  				break
 42733  				fallthrough
 42734  			case SQLITE_INDEX_CONSTRAINT_REGEXP:
 42735  				zOp = ts + 6831
 42736  				break
 42737  			}
 42738  			if zOp != 0 {
 42739  				if int32(*(*int8)(unsafe.Pointer(zOp))) == 'L' {
 42740  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27597,
 42741  						libc.VaList(bp+24, zSep, zNewCol))
 42742  				} else {
 42743  					zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27632, libc.VaList(bp+40, zSep, zNewCol, zOp))
 42744  				}
 42745  				string_concat(tls, bp+88, zNew, 1, bp+96)
 42746  				zSep = ts + 9419
 42747  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&nArg, 1)
 42748  				(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 42749  			}
 42750  		}
 42751  	}
 42752  
 42753  	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) {
 42754  		var iCol int32 = (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).FiColumn
 42755  		var zNewCol uintptr
 42756  		if iCol >= 0 {
 42757  			zNewCol = *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(iCol)*8))
 42758  		} else {
 42759  			zNewCol = ts + 6427
 42760  		}
 42761  		var zDir uintptr
 42762  		if (*sqlite3_index_orderby)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy)).Fdesc != 0 {
 42763  			zDir = ts + 27644
 42764  		} else {
 42765  			zDir = ts + 27649
 42766  		}
 42767  		zNew = sqlite3.Xsqlite3_mprintf(tls, ts+27653, libc.VaList(bp+64, zNewCol, zDir))
 42768  		string_concat(tls, bp+88, zNew, 1, bp+96)
 42769  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).ForderByConsumed = 1
 42770  	}
 42771  
 42772  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, ts+27495)
 42773  
 42774  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42775  
 42776  	if !(*(*uintptr)(unsafe.Pointer(bp + 88)) != 0) {
 42777  		return *(*int32)(unsafe.Pointer(bp + 96))
 42778  	}
 42779  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = hashString(tls, *(*uintptr)(unsafe.Pointer(bp + 88)))
 42780  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = *(*uintptr)(unsafe.Pointer(bp + 88))
 42781  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 42782  	if useCost != 0 {
 42783  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = cost
 42784  	} else if useIdx != 0 {
 42785  		for ii = 0; uint64(ii) < uint64(unsafe.Sizeof(int32(0)))*uint64(8)-uint64(1); ii++ {
 42786  			if nRow&(int32(1)<<ii) != 0 {
 42787  				(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(ii)
 42788  			}
 42789  		}
 42790  	} else {
 42791  		(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = float64(nRow)
 42792  	}
 42793  	return *(*int32)(unsafe.Pointer(bp + 96))
 42794  }
 42795  
 42796  func echoUpdate(tls *libc.TLS, tab uintptr, nData int32, apData uintptr, pRowid uintptr) int32 {
 42797  	bp := tls.Alloc(136)
 42798  	defer tls.Free(136)
 42799  
 42800  	var pVtab uintptr = tab
 42801  	var db uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Fdb
 42802  	*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_OK
 42803  
 42804  	*(*uintptr)(unsafe.Pointer(bp + 128)) = uintptr(0)
 42805  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 42806  	var bindArgZero int32 = 0
 42807  	var bindArgOne int32 = 0
 42808  	var i int32
 42809  
 42810  	if simulateVtabError(tls, pVtab, ts+27669) != 0 {
 42811  		return SQLITE_ERROR
 42812  	}
 42813  
 42814  	if nData > 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 42815  		var zSep uintptr = ts + 27677
 42816  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27682, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42817  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 42818  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42819  		}
 42820  
 42821  		bindArgOne = libc.Bool32(*(*uintptr)(unsafe.Pointer(apData + 1*8)) != 0 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER)
 42822  		bindArgZero = 1
 42823  
 42824  		if bindArgOne != 0 {
 42825  			string_concat(tls, bp+96, ts+27692, 0, bp+104)
 42826  			zSep = ts + 4758
 42827  		}
 42828  		for i = 2; i < nData; i++ {
 42829  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) == uintptr(0) {
 42830  				continue
 42831  			}
 42832  			string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls,
 42833  				ts+27707, libc.VaList(bp+8, zSep, *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(i-2)*8)), i)), 1, bp+104)
 42834  			zSep = ts + 4758
 42835  		}
 42836  		string_concat(tls, bp+96, sqlite3.Xsqlite3_mprintf(tls, ts+27717, libc.VaList(bp+32, nData)), 1, bp+104)
 42837  	} else if nData == 1 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_INTEGER {
 42838  		*(*uintptr)(unsafe.Pointer(bp + 96)) = sqlite3.Xsqlite3_mprintf(tls, ts+27734, libc.VaList(bp+40, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42839  		if !(*(*uintptr)(unsafe.Pointer(bp + 96)) != 0) {
 42840  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42841  		}
 42842  		bindArgZero = 1
 42843  	} else if nData > 2 && sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData))) == SQLITE_NULL {
 42844  		var ii int32
 42845  		*(*uintptr)(unsafe.Pointer(bp + 112)) = uintptr(0)
 42846  		*(*uintptr)(unsafe.Pointer(bp + 120)) = uintptr(0)
 42847  
 42848  		*(*uintptr)(unsafe.Pointer(bp + 112)) = sqlite3.Xsqlite3_mprintf(tls, ts+27766, libc.VaList(bp+48, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42849  		if !(*(*uintptr)(unsafe.Pointer(bp + 112)) != 0) {
 42850  			*(*int32)(unsafe.Pointer(bp + 104)) = SQLITE_NOMEM
 42851  		}
 42852  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apData + 1*8))) == SQLITE_INTEGER {
 42853  			bindArgOne = 1
 42854  			*(*uintptr)(unsafe.Pointer(bp + 120)) = sqlite3.Xsqlite3_mprintf(tls, ts+3405, 0)
 42855  			string_concat(tls, bp+112, ts+6427, 0, bp+104)
 42856  		}
 42857  
 42858  		for ii = 2; ii < nData; ii++ {
 42859  			string_concat(tls, bp+112,
 42860  				sqlite3.Xsqlite3_mprintf(tls, ts+27783, libc.VaList(bp+56, func() uintptr {
 42861  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 42862  						return ts + 97
 42863  					}
 42864  					return ts + 584
 42865  				}(), *(*uintptr)(unsafe.Pointer((*echo_vtab)(unsafe.Pointer(pVtab)).FaCol + uintptr(ii-2)*8)))), 1, bp+104)
 42866  			string_concat(tls, bp+120,
 42867  				sqlite3.Xsqlite3_mprintf(tls, ts+27788, libc.VaList(bp+72, func() uintptr {
 42868  					if *(*uintptr)(unsafe.Pointer(bp + 120)) != 0 {
 42869  						return ts + 97
 42870  					}
 42871  					return ts + 584
 42872  				}(), ii)), 1, bp+104)
 42873  		}
 42874  
 42875  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 112)), 1, bp+104)
 42876  		string_concat(tls, bp+96, ts+27794, 0, bp+104)
 42877  		string_concat(tls, bp+96, *(*uintptr)(unsafe.Pointer(bp + 120)), 1, bp+104)
 42878  		string_concat(tls, bp+96, ts+585, 0, bp+104)
 42879  	} else {
 42880  		return SQLITE_ERROR
 42881  	}
 42882  
 42883  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42884  		*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_prepare(tls, db, *(*uintptr)(unsafe.Pointer(bp + 96)), -1, bp+128, uintptr(0))
 42885  	}
 42886  
 42887  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 96)))
 42888  	if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42889  		if bindArgZero != 0 {
 42890  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), nData, *(*uintptr)(unsafe.Pointer(apData)))
 42891  		}
 42892  		if bindArgOne != 0 {
 42893  			sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), 1, *(*uintptr)(unsafe.Pointer(apData + 1*8)))
 42894  		}
 42895  		for i = 2; i < nData && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK; i++ {
 42896  			if *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)) != 0 {
 42897  				*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_bind_value(tls, *(*uintptr)(unsafe.Pointer(bp + 128)), i, *(*uintptr)(unsafe.Pointer(apData + uintptr(i)*8)))
 42898  			}
 42899  		}
 42900  		if *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42901  			sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42902  			*(*int32)(unsafe.Pointer(bp + 104)) = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42903  		} else {
 42904  			sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 128)))
 42905  		}
 42906  	}
 42907  
 42908  	if pRowid != 0 && *(*int32)(unsafe.Pointer(bp + 104)) == SQLITE_OK {
 42909  		*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_last_insert_rowid(tls, db)
 42910  	}
 42911  	if *(*int32)(unsafe.Pointer(bp + 104)) != SQLITE_OK {
 42912  		(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+27183, libc.VaList(bp+88, sqlite3.Xsqlite3_errmsg(tls, db)))
 42913  	}
 42914  
 42915  	return *(*int32)(unsafe.Pointer(bp + 104))
 42916  }
 42917  
 42918  func echoTransactionCall(tls *libc.TLS, tab uintptr, zCall uintptr) int32 {
 42919  	bp := tls.Alloc(8)
 42920  	defer tls.Free(8)
 42921  
 42922  	var z uintptr
 42923  	var pVtab uintptr = tab
 42924  	z = sqlite3.Xsqlite3_mprintf(tls, ts+27804, libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName))
 42925  	if z == uintptr(0) {
 42926  		return SQLITE_NOMEM
 42927  	}
 42928  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, zCall)
 42929  	appendToEchoModule(tls, (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp, z)
 42930  	sqlite3.Xsqlite3_free(tls, z)
 42931  	return SQLITE_OK
 42932  }
 42933  
 42934  func echoBegin(tls *libc.TLS, tab uintptr) int32 {
 42935  	var rc int32
 42936  	var pVtab uintptr = tab
 42937  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42938  	var zVal uintptr
 42939  
 42940  	if simulateVtabError(tls, pVtab, ts+27813) != 0 {
 42941  		return SQLITE_ERROR
 42942  	}
 42943  
 42944  	rc = echoTransactionCall(tls, tab, ts+27813)
 42945  
 42946  	if rc == SQLITE_OK {
 42947  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27820, uintptr(0), TCL_GLOBAL_ONLY)
 42948  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 42949  			rc = SQLITE_ERROR
 42950  		}
 42951  	}
 42952  	if rc == SQLITE_OK {
 42953  		(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 1
 42954  	}
 42955  	return rc
 42956  }
 42957  
 42958  func echoSync(tls *libc.TLS, tab uintptr) int32 {
 42959  	var rc int32
 42960  	var pVtab uintptr = tab
 42961  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 42962  	var zVal uintptr
 42963  
 42964  	if simulateVtabError(tls, pVtab, ts+27843) != 0 {
 42965  		return SQLITE_ERROR
 42966  	}
 42967  
 42968  	rc = echoTransactionCall(tls, tab, ts+27843)
 42969  
 42970  	if rc == SQLITE_OK {
 42971  		zVal = tcl.XTcl_GetVar2(tls, interp, ts+27849, uintptr(0), TCL_GLOBAL_ONLY)
 42972  		if zVal != 0 && 0 == libc.Xstrcmp(tls, zVal, (*echo_vtab)(unsafe.Pointer(pVtab)).FzTableName) {
 42973  			rc = -1
 42974  		}
 42975  	}
 42976  	return rc
 42977  }
 42978  
 42979  func echoCommit(tls *libc.TLS, tab uintptr) int32 {
 42980  	var pVtab uintptr = tab
 42981  	var rc int32
 42982  
 42983  	if simulateVtabError(tls, pVtab, ts+27871) != 0 {
 42984  		return SQLITE_ERROR
 42985  	}
 42986  
 42987  	sqlite3.Xsqlite3BeginBenignMalloc(tls)
 42988  	rc = echoTransactionCall(tls, tab, ts+27871)
 42989  	sqlite3.Xsqlite3EndBenignMalloc(tls)
 42990  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 42991  	return rc
 42992  }
 42993  
 42994  func echoRollback(tls *libc.TLS, tab uintptr) int32 {
 42995  	var rc int32
 42996  	var pVtab uintptr = tab
 42997  
 42998  	rc = echoTransactionCall(tls, tab, ts+27879)
 42999  	(*echo_vtab)(unsafe.Pointer(pVtab)).FinTransaction = 0
 43000  	return rc
 43001  }
 43002  
 43003  func overloadedGlobFunction(tls *libc.TLS, pContext uintptr, nArg int32, apArg uintptr) {
 43004  	bp := tls.Alloc(216)
 43005  	defer tls.Free(216)
 43006  
 43007  	var interp uintptr = sqlite3.Xsqlite3_user_data(tls, pContext)
 43008  
 43009  	var i int32
 43010  	var rc int32
 43011  	tcl.XTcl_DStringInit(tls, bp)
 43012  	tcl.XTcl_DStringAppendElement(tls, bp, ts+27889)
 43013  	for i = 0; i < nArg; i++ {
 43014  		tcl.XTcl_DStringAppendElement(tls, bp, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))))
 43015  	}
 43016  	rc = tcl.XTcl_Eval(tls, interp, (*Tcl_DString)(unsafe.Pointer(bp)).Fstring)
 43017  	tcl.XTcl_DStringFree(tls, bp)
 43018  	if rc != 0 {
 43019  		sqlite3.Xsqlite3_result_error(tls, pContext, tcl.XTcl_GetStringResult(tls, interp), -1)
 43020  	} else {
 43021  		sqlite3.Xsqlite3_result_text(tls, pContext, tcl.XTcl_GetStringResult(tls, interp),
 43022  			-1, libc.UintptrFromInt32(-1))
 43023  	}
 43024  	tcl.XTcl_ResetResult(tls, interp)
 43025  }
 43026  
 43027  func echoFindFunction(tls *libc.TLS, vtab uintptr, nArg int32, zFuncName uintptr, pxFunc uintptr, ppArg uintptr) int32 {
 43028  	bp := tls.Alloc(64)
 43029  	defer tls.Free(64)
 43030  
 43031  	var pVtab uintptr = vtab
 43032  	var interp uintptr = (*echo_vtab)(unsafe.Pointer(pVtab)).Finterp
 43033  
 43034  	if libc.Xstrcmp(tls, zFuncName, ts+27592) != 0 {
 43035  		return 0
 43036  	}
 43037  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+27889, bp) == 0 {
 43038  		return 0
 43039  	}
 43040  	*(*uintptr)(unsafe.Pointer(pxFunc)) = *(*uintptr)(unsafe.Pointer(&struct {
 43041  		f func(*libc.TLS, uintptr, int32, uintptr)
 43042  	}{overloadedGlobFunction}))
 43043  	*(*uintptr)(unsafe.Pointer(ppArg)) = interp
 43044  	return 1
 43045  }
 43046  
 43047  func echoRename(tls *libc.TLS, vtab uintptr, zNewName uintptr) int32 {
 43048  	bp := tls.Alloc(24)
 43049  	defer tls.Free(24)
 43050  
 43051  	var rc int32 = SQLITE_OK
 43052  	var p uintptr = vtab
 43053  
 43054  	if simulateVtabError(tls, p, ts+27910) != 0 {
 43055  		return SQLITE_ERROR
 43056  	}
 43057  
 43058  	if (*echo_vtab)(unsafe.Pointer(p)).FisPattern != 0 {
 43059  		var nThis int32 = int32(libc.Xstrlen(tls, (*echo_vtab)(unsafe.Pointer(p)).FzThis))
 43060  		var zSql uintptr = sqlite3.Xsqlite3_mprintf(tls, ts+27918,
 43061  			libc.VaList(bp, (*echo_vtab)(unsafe.Pointer(p)).FzTableName, zNewName, (*echo_vtab)(unsafe.Pointer(p)).FzTableName+uintptr(nThis)))
 43062  		rc = sqlite3.Xsqlite3_exec(tls, (*echo_vtab)(unsafe.Pointer(p)).Fdb, zSql, uintptr(0), uintptr(0), uintptr(0))
 43063  		sqlite3.Xsqlite3_free(tls, zSql)
 43064  	}
 43065  
 43066  	return rc
 43067  }
 43068  
 43069  func echoSavepoint(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43070  	return SQLITE_OK
 43071  }
 43072  
 43073  func echoRelease(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43074  	return SQLITE_OK
 43075  }
 43076  
 43077  func echoRollbackTo(tls *libc.TLS, pVTab uintptr, iSavepoint int32) int32 {
 43078  	return SQLITE_OK
 43079  }
 43080  
 43081  var echoModule = sqlite3_module{
 43082  	FiVersion:      1,
 43083  	FxCreate:       0,
 43084  	FxConnect:      0,
 43085  	FxBestIndex:    0,
 43086  	FxDisconnect:   0,
 43087  	FxDestroy:      0,
 43088  	FxOpen:         0,
 43089  	FxClose:        0,
 43090  	FxFilter:       0,
 43091  	FxNext:         0,
 43092  	FxEof:          0,
 43093  	FxColumn:       0,
 43094  	FxRowid:        0,
 43095  	FxUpdate:       0,
 43096  	FxBegin:        0,
 43097  	FxSync:         0,
 43098  	FxCommit:       0,
 43099  	FxRollback:     0,
 43100  	FxFindFunction: 0,
 43101  	FxRename:       0,
 43102  }
 43103  
 43104  var echoModuleV2 = sqlite3_module{
 43105  	FiVersion:      2,
 43106  	FxCreate:       0,
 43107  	FxConnect:      0,
 43108  	FxBestIndex:    0,
 43109  	FxDisconnect:   0,
 43110  	FxDestroy:      0,
 43111  	FxOpen:         0,
 43112  	FxClose:        0,
 43113  	FxFilter:       0,
 43114  	FxNext:         0,
 43115  	FxEof:          0,
 43116  	FxColumn:       0,
 43117  	FxRowid:        0,
 43118  	FxUpdate:       0,
 43119  	FxBegin:        0,
 43120  	FxSync:         0,
 43121  	FxCommit:       0,
 43122  	FxRollback:     0,
 43123  	FxFindFunction: 0,
 43124  	FxRename:       0,
 43125  	FxSavepoint:    0,
 43126  	FxRelease:      0,
 43127  	FxRollbackTo:   0,
 43128  }
 43129  
 43130  func moduleDestroy(tls *libc.TLS, p uintptr) {
 43131  	var pMod uintptr = p
 43132  	sqlite3.Xsqlite3_create_function(tls, (*EchoModule)(unsafe.Pointer(pMod)).Fdb, ts+27948,
 43133  		SQLITE_ANY, 1, uintptr(0), uintptr(0), uintptr(0), uintptr(0))
 43134  	sqlite3.Xsqlite3_free(tls, p)
 43135  }
 43136  
 43137  func register_echo_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43138  	bp := tls.Alloc(8)
 43139  	defer tls.Free(8)
 43140  
 43141  	var rc int32
 43142  
 43143  	var pMod uintptr
 43144  	if objc != 2 {
 43145  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 43146  		return TCL_ERROR
 43147  	}
 43148  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43149  		return TCL_ERROR
 43150  	}
 43151  
 43152  	pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43153  	(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43154  	(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43155  	rc = sqlite3.Xsqlite3_create_module_v2(tls,
 43156  		*(*uintptr)(unsafe.Pointer(bp)), ts+27986, uintptr(unsafe.Pointer(&echoModule)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43157  
 43158  	if rc == SQLITE_OK {
 43159  		pMod = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(EchoModule{})))
 43160  		(*EchoModule)(unsafe.Pointer(pMod)).Finterp = interp
 43161  		(*EchoModule)(unsafe.Pointer(pMod)).Fdb = *(*uintptr)(unsafe.Pointer(bp))
 43162  		rc = sqlite3.Xsqlite3_create_module_v2(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+27991,
 43163  			uintptr(unsafe.Pointer(&echoModuleV2)), pMod, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{moduleDestroy})))
 43164  	}
 43165  
 43166  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43167  	return TCL_OK
 43168  }
 43169  
 43170  func declare_vtab(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43171  	bp := tls.Alloc(8)
 43172  	defer tls.Free(8)
 43173  
 43174  	var rc int32
 43175  	if objc != 3 {
 43176  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10061)
 43177  		return TCL_ERROR
 43178  	}
 43179  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 43180  		return TCL_ERROR
 43181  	}
 43182  	rc = sqlite3.Xsqlite3_declare_vtab(tls, *(*uintptr)(unsafe.Pointer(bp)), tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 43183  	if rc != SQLITE_OK {
 43184  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp))), uintptr(1))
 43185  		return TCL_ERROR
 43186  	}
 43187  	return TCL_OK
 43188  }
 43189  
 43190  func Sqlitetest8_Init(tls *libc.TLS, interp uintptr) int32 {
 43191  	var i int32
 43192  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd2))/uint64(unsafe.Sizeof(struct {
 43193  		FzName      uintptr
 43194  		FxProc      uintptr
 43195  		FclientData uintptr
 43196  	}{})); i++ {
 43197  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd2[i].FzName,
 43198  			aObjCmd2[i].FxProc, aObjCmd2[i].FclientData, uintptr(0))
 43199  	}
 43200  	return TCL_OK
 43201  }
 43202  
 43203  var aObjCmd2 = [2]struct {
 43204  	FzName      uintptr
 43205  	FxProc      uintptr
 43206  	FclientData uintptr
 43207  }{
 43208  	{FzName: ts + 27999, FxProc: 0},
 43209  	{FzName: ts + 28020, FxProc: 0},
 43210  }
 43211  
 43212  func c_collation_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43213  	bp := tls.Alloc(32)
 43214  	defer tls.Free(32)
 43215  
 43216  	var zErrFunction uintptr
 43217  
 43218  	var rc int32
 43219  	zErrFunction = ts + 28041
 43220  	if !(objc != 1) {
 43221  		goto __1
 43222  	}
 43223  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43224  	return TCL_ERROR
 43225  __1:
 43226  	;
 43227  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43228  	if !(rc != SQLITE_OK) {
 43229  		goto __2
 43230  	}
 43231  	zErrFunction = ts + 21460
 43232  	goto error_out
 43233  __2:
 43234  	;
 43235  	rc = sqlite3.Xsqlite3_create_collation(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), ts+13402, 456, uintptr(0), uintptr(0))
 43236  	if !(rc != SQLITE_MISUSE) {
 43237  		goto __3
 43238  	}
 43239  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43240  	zErrFunction = ts + 28045
 43241  	goto error_out
 43242  __3:
 43243  	;
 43244  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43245  	return TCL_OK
 43246  
 43247  error_out:
 43248  	tcl.XTcl_ResetResult(tls, interp)
 43249  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43250  	return TCL_ERROR
 43251  }
 43252  
 43253  func c_realloc_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43254  	bp := tls.Alloc(24)
 43255  	defer tls.Free(24)
 43256  
 43257  	var p uintptr
 43258  	var zErrFunction uintptr
 43259  	zErrFunction = ts + 28041
 43260  
 43261  	if !(objc != 1) {
 43262  		goto __1
 43263  	}
 43264  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43265  	return TCL_ERROR
 43266  __1:
 43267  	;
 43268  	p = sqlite3.Xsqlite3_malloc(tls, 5)
 43269  	if !!(p != 0) {
 43270  		goto __2
 43271  	}
 43272  	zErrFunction = ts + 28095
 43273  	goto error_out
 43274  __2:
 43275  	;
 43276  	p = sqlite3.Xsqlite3_realloc(tls, p, -1)
 43277  	if !(p != 0) {
 43278  		goto __3
 43279  	}
 43280  	zErrFunction = ts + 28110
 43281  	goto error_out
 43282  __3:
 43283  	;
 43284  	return TCL_OK
 43285  
 43286  error_out:
 43287  	tcl.XTcl_ResetResult(tls, interp)
 43288  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43289  	return TCL_ERROR
 43290  }
 43291  
 43292  func c_misuse_test(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43293  	bp := tls.Alloc(40)
 43294  	defer tls.Free(40)
 43295  
 43296  	var zErrFunction uintptr
 43297  
 43298  	var rc int32
 43299  	zErrFunction = ts + 28041
 43300  	*(*uintptr)(unsafe.Pointer(bp + 24)) = uintptr(0)
 43301  
 43302  	if !(objc != 1) {
 43303  		goto __1
 43304  	}
 43305  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 43306  	return TCL_ERROR
 43307  __1:
 43308  	;
 43309  	rc = sqlite3.Xsqlite3_open(tls, ts+1757, bp+24)
 43310  	if !(rc != SQLITE_OK) {
 43311  		goto __2
 43312  	}
 43313  	zErrFunction = ts + 21460
 43314  	goto error_out
 43315  __2:
 43316  	;
 43317  	sqlite3.Xsqlite3_close(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43318  
 43319  	rc = sqlite3.Xsqlite3_errcode(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 43320  	if !(rc != SQLITE_MISUSE) {
 43321  		goto __3
 43322  	}
 43323  	zErrFunction = ts + 21366
 43324  	goto error_out
 43325  __3:
 43326  	;
 43327  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43328  	rc = sqlite3.Xsqlite3_prepare(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43329  	if !(rc != SQLITE_MISUSE) {
 43330  		goto __4
 43331  	}
 43332  	zErrFunction = ts + 21541
 43333  	goto error_out
 43334  __4:
 43335  	;
 43336  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43337  	rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43338  	if !(rc != SQLITE_MISUSE) {
 43339  		goto __5
 43340  	}
 43341  	zErrFunction = ts + 21575
 43342  	goto error_out
 43343  __5:
 43344  	;
 43345  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43346  	rc = sqlite3.Xsqlite3_prepare16(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43347  	if !(rc != SQLITE_MISUSE) {
 43348  		goto __6
 43349  	}
 43350  	zErrFunction = ts + 21557
 43351  	goto error_out
 43352  __6:
 43353  	;
 43354  	*(*uintptr)(unsafe.Pointer(bp + 32)) = uintptr(1234)
 43355  	rc = sqlite3.Xsqlite3_prepare16_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 24)), uintptr(0), 0, bp+32, uintptr(0))
 43356  	if !(rc != SQLITE_MISUSE) {
 43357  		goto __7
 43358  	}
 43359  	zErrFunction = ts + 21637
 43360  	goto error_out
 43361  __7:
 43362  	;
 43363  	return TCL_OK
 43364  
 43365  error_out:
 43366  	tcl.XTcl_ResetResult(tls, interp)
 43367  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28070, zErrFunction, 0))
 43368  	return TCL_ERROR
 43369  }
 43370  
 43371  func Sqlitetest9_Init(tls *libc.TLS, interp uintptr) int32 {
 43372  	var i int32
 43373  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd3))/uint64(unsafe.Sizeof(struct {
 43374  		FzName      uintptr
 43375  		FxProc      uintptr
 43376  		FclientData uintptr
 43377  	}{})); i++ {
 43378  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd3[i].FzName,
 43379  			aObjCmd3[i].FxProc, aObjCmd3[i].FclientData, uintptr(0))
 43380  	}
 43381  	return TCL_OK
 43382  }
 43383  
 43384  var aObjCmd3 = [3]struct {
 43385  	FzName      uintptr
 43386  	FxProc      uintptr
 43387  	FclientData uintptr
 43388  }{
 43389  	{FzName: ts + 28126, FxProc: 0},
 43390  	{FzName: ts + 28140, FxProc: 0},
 43391  	{FzName: ts + 28155, FxProc: 0},
 43392  }
 43393  
 43394  func Sqlitetestasync_Init(tls *libc.TLS, interp uintptr) int32 {
 43395  	return TCL_OK
 43396  }
 43397  
 43398  func resetAutoExtObjCmd(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 43399  	sqlite3.Xsqlite3_reset_auto_extension(tls)
 43400  	return SQLITE_OK
 43401  }
 43402  
 43403  func Sqlitetest_autoext_Init(tls *libc.TLS, interp uintptr) int32 {
 43404  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28172,
 43405  		*(*uintptr)(unsafe.Pointer(&struct {
 43406  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 43407  		}{resetAutoExtObjCmd})), uintptr(0), uintptr(0))
 43408  	return TCL_OK
 43409  }
 43410  
 43411  func backupTestCmd(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43412  	bp := tls.Alloc(196)
 43413  	defer tls.Free(196)
 43414  
 43415  	*(*[5]BackupSubCommand)(unsafe.Pointer(bp)) = [5]BackupSubCommand{
 43416  		{FzCmd: ts + 9485, FnArg: 1, FzArg: ts + 28201},
 43417  		{FzCmd: ts + 28207, FeCmd: uint32(1), FzArg: ts + 584},
 43418  		{FzCmd: ts + 28214, FeCmd: uint32(2), FzArg: ts + 584},
 43419  		{FzCmd: ts + 28224, FeCmd: uint32(3), FzArg: ts + 584},
 43420  		{},
 43421  	}
 43422  
 43423  	var p uintptr = clientData
 43424  
 43425  	var rc int32
 43426  
 43427  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 43428  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(BackupSubCommand{})), ts+11691, 0, bp+120)
 43429  	if rc != TCL_OK {
 43430  		return rc
 43431  	}
 43432  	if objc != 2+(*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FnArg {
 43433  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*BackupSubCommand)(unsafe.Pointer(bp+uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FzArg)
 43434  		return TCL_ERROR
 43435  	}
 43436  
 43437  	switch (*BackupSubCommand)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 120)))*24)).FeCmd {
 43438  	case uint32(1):
 43439  		{
 43440  			var zCmdName uintptr
 43441  
 43442  			zCmdName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv)))
 43443  			tcl.XTcl_GetCommandInfo(tls, interp, zCmdName, bp+128)
 43444  			(*Tcl_CmdInfo)(unsafe.Pointer(bp + 128)).FdeleteProc = uintptr(0)
 43445  			tcl.XTcl_SetCommandInfo(tls, interp, zCmdName, bp+128)
 43446  			tcl.XTcl_DeleteCommand(tls, interp, zCmdName)
 43447  
 43448  			rc = sqlite3.Xsqlite3_backup_finish(tls, p)
 43449  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43450  			break
 43451  
 43452  		}
 43453  
 43454  	case uint32(0):
 43455  		{
 43456  			if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+192) {
 43457  				return TCL_ERROR
 43458  			}
 43459  			rc = sqlite3.Xsqlite3_backup_step(tls, p, *(*int32)(unsafe.Pointer(bp + 192)))
 43460  			tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 43461  			break
 43462  
 43463  		}
 43464  
 43465  	case uint32(2):
 43466  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_remaining(tls, p)))
 43467  		break
 43468  
 43469  	case uint32(3):
 43470  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_backup_pagecount(tls, p)))
 43471  		break
 43472  	}
 43473  
 43474  	return TCL_OK
 43475  }
 43476  
 43477  type BackupSubCommand = struct {
 43478  	FzCmd uintptr
 43479  	FeCmd uint32
 43480  	FnArg int32
 43481  	FzArg uintptr
 43482  }
 43483  
 43484  func backupTestFinish(tls *libc.TLS, clientData ClientData) {
 43485  	var pBackup uintptr = clientData
 43486  	sqlite3.Xsqlite3_backup_finish(tls, pBackup)
 43487  }
 43488  
 43489  func backupTestInit(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43490  	bp := tls.Alloc(32)
 43491  	defer tls.Free(32)
 43492  
 43493  	var pBackup uintptr
 43494  
 43495  	var zDestName uintptr
 43496  	var zSrcName uintptr
 43497  	var zCmd uintptr
 43498  
 43499  	if objc != 6 {
 43500  		tcl.XTcl_WrongNumArgs(tls,
 43501  			interp, 1, objv, ts+28234)
 43502  		return TCL_ERROR
 43503  	}
 43504  
 43505  	zCmd = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 43506  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), bp+16)
 43507  	zDestName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 43508  	getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8))), bp+24)
 43509  	zSrcName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 43510  
 43511  	pBackup = sqlite3.Xsqlite3_backup_init(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDestName, *(*uintptr)(unsafe.Pointer(bp + 24)), zSrcName)
 43512  	if !(pBackup != 0) {
 43513  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28280, 0))
 43514  		return TCL_ERROR
 43515  	}
 43516  
 43517  	tcl.XTcl_CreateObjCommand(tls, interp, zCmd, *(*uintptr)(unsafe.Pointer(&struct {
 43518  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 43519  	}{backupTestCmd})), pBackup, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{backupTestFinish})))
 43520  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 43521  	return TCL_OK
 43522  }
 43523  
 43524  func Sqlitetestbackup_Init(tls *libc.TLS, interp uintptr) int32 {
 43525  	tcl.XTcl_CreateObjCommand(tls, interp, ts+28309, *(*uintptr)(unsafe.Pointer(&struct {
 43526  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 43527  	}{backupTestInit})), uintptr(0), uintptr(0))
 43528  	return TCL_OK
 43529  }
 43530  
 43531  type tcl_vtab1 = struct {
 43532  	Fbase   sqlite3_vtab
 43533  	Finterp uintptr
 43534  	FpCmd   uintptr
 43535  	Fdb     uintptr
 43536  }
 43537  
 43538  type tcl_vtab = tcl_vtab1
 43539  type tcl_cursor1 = struct {
 43540  	Fbase  sqlite3_vtab_cursor
 43541  	FpStmt uintptr
 43542  }
 43543  
 43544  type tcl_cursor = tcl_cursor1
 43545  
 43546  func tclDequote(tls *libc.TLS, z uintptr) {
 43547  	var q int8 = *(*int8)(unsafe.Pointer(z))
 43548  
 43549  	if int32(q) == '[' || int32(q) == '\'' || int32(q) == '"' || int32(q) == '`' {
 43550  		var iIn int32 = 1
 43551  		var iOut int32 = 0
 43552  		if int32(q) == '[' {
 43553  			q = int8(']')
 43554  		}
 43555  
 43556  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 43557  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(q) {
 43558  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(q) {
 43559  					iIn++
 43560  					break
 43561  				} else {
 43562  					iIn = iIn + 2
 43563  					*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = q
 43564  				}
 43565  			} else {
 43566  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 43567  			}
 43568  		}
 43569  
 43570  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 43571  	}
 43572  }
 43573  
 43574  func tclConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 43575  	bp := tls.Alloc(8)
 43576  	defer tls.Free(8)
 43577  
 43578  	var interp uintptr = pAux
 43579  	var pTab uintptr = uintptr(0)
 43580  	var zCmd uintptr = uintptr(0)
 43581  	var pScript uintptr = uintptr(0)
 43582  	var rc int32 = SQLITE_OK
 43583  
 43584  	if argc != 4 {
 43585  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 43586  		return SQLITE_ERROR
 43587  	}
 43588  
 43589  	zCmd = sqlite3.Xsqlite3_malloc64(tls, libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 43590  	pTab = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(tcl_vtab{})))
 43591  	if zCmd != 0 && pTab != 0 {
 43592  		libc.Xmemcpy(tls, zCmd, *(*uintptr)(unsafe.Pointer(argv + 3*8)), libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))+uint64(1))
 43593  		tclDequote(tls, zCmd)
 43594  		libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(tcl_vtab{})))
 43595  
 43596  		(*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd = tcl.XTcl_NewStringObj(tls, zCmd, -1)
 43597  		(*tcl_vtab)(unsafe.Pointer(pTab)).Finterp = interp
 43598  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fdb = db
 43599  		(*Tcl_Obj)(unsafe.Pointer((*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)).FrefCount++
 43600  
 43601  		pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 43602  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 43603  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27377, -1))
 43604  
 43605  		rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 43606  		if rc != TCL_OK {
 43607  			*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, tcl.XTcl_GetStringResult(tls, interp)))
 43608  			rc = SQLITE_ERROR
 43609  		} else {
 43610  			rc = sqlite3.Xsqlite3_declare_vtab(tls, db, tcl.XTcl_GetStringResult(tls, interp))
 43611  		}
 43612  
 43613  		if rc != SQLITE_OK {
 43614  			sqlite3.Xsqlite3_free(tls, pTab)
 43615  			pTab = uintptr(0)
 43616  		}
 43617  	} else {
 43618  		rc = SQLITE_NOMEM
 43619  	}
 43620  
 43621  	sqlite3.Xsqlite3_free(tls, zCmd)
 43622  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 43623  	return rc
 43624  }
 43625  
 43626  func tclDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 43627  	var pTab uintptr = pVtab
 43628  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43629  		var _objPtr uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd
 43630  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43631  			tcl.XTclFreeObj(tls, _objPtr)
 43632  		}
 43633  	}
 43634  	sqlite3.Xsqlite3_free(tls, pTab)
 43635  	return SQLITE_OK
 43636  }
 43637  
 43638  func tclOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 43639  	var pCur uintptr
 43640  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(tcl_cursor{})))
 43641  	if pCur == uintptr(0) {
 43642  		return SQLITE_NOMEM
 43643  	}
 43644  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(tcl_cursor{})))
 43645  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 43646  	return SQLITE_OK
 43647  }
 43648  
 43649  func tclClose(tls *libc.TLS, cur uintptr) int32 {
 43650  	var pCur uintptr = cur
 43651  	if pCur != 0 {
 43652  		sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCur)).FpStmt)
 43653  		sqlite3.Xsqlite3_free(tls, pCur)
 43654  	}
 43655  	return SQLITE_OK
 43656  }
 43657  
 43658  func tclNext(tls *libc.TLS, pVtabCursor uintptr) int32 {
 43659  	bp := tls.Alloc(8)
 43660  	defer tls.Free(8)
 43661  
 43662  	var pCsr uintptr = pVtabCursor
 43663  	if (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt != 0 {
 43664  		var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43665  		var rc int32 = sqlite3.Xsqlite3_step(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 43666  		if rc != SQLITE_ROW {
 43667  			var zErr uintptr
 43668  			rc = sqlite3.Xsqlite3_finalize(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt)
 43669  			(*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 43670  			if rc != SQLITE_OK {
 43671  				zErr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 43672  				(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 43673  			}
 43674  		}
 43675  	}
 43676  	return SQLITE_OK
 43677  }
 43678  
 43679  func tclFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 43680  	bp := tls.Alloc(56)
 43681  	defer tls.Free(56)
 43682  
 43683  	var pCsr uintptr = pVtabCursor
 43684  	var pTab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 43685  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 43686  	var pScript uintptr
 43687  	var pArg uintptr
 43688  	var ii int32
 43689  	var rc int32
 43690  
 43691  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 43692  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 43693  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27441, -1))
 43694  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewIntObj(tls, idxNum))
 43695  	if idxStr != 0 {
 43696  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, idxStr, -1))
 43697  	} else {
 43698  		tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 43699  	}
 43700  
 43701  	pArg = tcl.XTcl_NewObj(tls)
 43702  	(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 43703  	for ii = 0; ii < argc; ii++ {
 43704  		var zVal uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)))
 43705  		var pVal uintptr
 43706  		if zVal == uintptr(0) {
 43707  			pVal = tcl.XTcl_NewObj(tls)
 43708  			for rc = sqlite3.Xsqlite3_vtab_in_first(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)), bp+32); rc == SQLITE_OK && *(*uintptr)(unsafe.Pointer(bp + 32)) != 0; rc = sqlite3.Xsqlite3_vtab_in_next(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(ii)*8)), bp+32) {
 43709  				var pVal2 uintptr = uintptr(0)
 43710  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 32)))
 43711  				if zVal != 0 {
 43712  					pVal2 = tcl.XTcl_NewStringObj(tls, zVal, -1)
 43713  				} else {
 43714  					pVal2 = tcl.XTcl_NewObj(tls)
 43715  				}
 43716  				tcl.XTcl_ListObjAppendElement(tls, interp, pVal, pVal2)
 43717  			}
 43718  		} else {
 43719  			pVal = tcl.XTcl_NewStringObj(tls, zVal, -1)
 43720  		}
 43721  		tcl.XTcl_ListObjAppendElement(tls, interp, pArg, pVal)
 43722  	}
 43723  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, pArg)
 43724  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43725  		var _objPtr uintptr = pArg
 43726  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43727  			tcl.XTclFreeObj(tls, _objPtr)
 43728  		}
 43729  	}
 43730  
 43731  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 43732  	if rc != TCL_OK {
 43733  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 43734  		rc = SQLITE_ERROR
 43735  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, zErr))
 43736  	} else {
 43737  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 43738  		*(*uintptr)(unsafe.Pointer(bp + 48)) = uintptr(0)
 43739  
 43740  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+40, bp+48)
 43741  		if rc != TCL_OK {
 43742  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 43743  			rc = SQLITE_ERROR
 43744  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 43745  		} else {
 43746  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 40)); ii = ii + 2 {
 43747  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii)*8)))
 43748  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 48)) + uintptr(ii+1)*8))
 43749  				if sqlite3.Xsqlite3_stricmp(tls, ts+1947, zCmd) == 0 {
 43750  					var zSql uintptr = tcl.XTcl_GetString(tls, p)
 43751  					rc = sqlite3.Xsqlite3_prepare_v2(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 43752  					if rc != SQLITE_OK {
 43753  						var zErr uintptr = sqlite3.Xsqlite3_errmsg(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).Fdb)
 43754  						(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+16, zErr))
 43755  					}
 43756  				} else {
 43757  					rc = SQLITE_ERROR
 43758  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+24, zCmd))
 43759  				}
 43760  			}
 43761  		}
 43762  	}
 43763  
 43764  	if rc == SQLITE_OK {
 43765  		rc = tclNext(tls, pVtabCursor)
 43766  	}
 43767  	return rc
 43768  }
 43769  
 43770  func tclColumn(tls *libc.TLS, pVtabCursor uintptr, ctx uintptr, i int32) int32 {
 43771  	var pCsr uintptr = pVtabCursor
 43772  	sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, i+1))
 43773  	return SQLITE_OK
 43774  }
 43775  
 43776  func tclRowid(tls *libc.TLS, pVtabCursor uintptr, pRowid uintptr) int32 {
 43777  	var pCsr uintptr = pVtabCursor
 43778  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt, 0)
 43779  	return SQLITE_OK
 43780  }
 43781  
 43782  func tclEof(tls *libc.TLS, pVtabCursor uintptr) int32 {
 43783  	var pCsr uintptr = pVtabCursor
 43784  	return libc.Bool32((*tcl_cursor)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 43785  }
 43786  
 43787  func testBestIndexObjConstraints(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 43788  	var ii int32
 43789  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 43790  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 43791  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 43792  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 43793  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 43794  		var zOp uintptr = ts + 3405
 43795  
 43796  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 43797  
 43798  		switch int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) {
 43799  		case SQLITE_INDEX_CONSTRAINT_EQ:
 43800  			zOp = ts + 28365
 43801  			break
 43802  		case SQLITE_INDEX_CONSTRAINT_GT:
 43803  			zOp = ts + 28368
 43804  			break
 43805  		case SQLITE_INDEX_CONSTRAINT_LE:
 43806  			zOp = ts + 28371
 43807  			break
 43808  		case SQLITE_INDEX_CONSTRAINT_LT:
 43809  			zOp = ts + 28374
 43810  			break
 43811  		case SQLITE_INDEX_CONSTRAINT_GE:
 43812  			zOp = ts + 28377
 43813  			break
 43814  		case SQLITE_INDEX_CONSTRAINT_MATCH:
 43815  			zOp = ts + 28380
 43816  			break
 43817  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 43818  			zOp = ts + 27587
 43819  			break
 43820  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 43821  			zOp = ts + 27592
 43822  			break
 43823  		case SQLITE_INDEX_CONSTRAINT_REGEXP:
 43824  			zOp = ts + 6831
 43825  			break
 43826  		case SQLITE_INDEX_CONSTRAINT_NE:
 43827  			zOp = ts + 28386
 43828  			break
 43829  		case SQLITE_INDEX_CONSTRAINT_ISNOT:
 43830  			zOp = ts + 28389
 43831  			break
 43832  		case SQLITE_INDEX_CONSTRAINT_ISNOTNULL:
 43833  			zOp = ts + 28395
 43834  			break
 43835  		case SQLITE_INDEX_CONSTRAINT_ISNULL:
 43836  			zOp = ts + 28405
 43837  			break
 43838  		case SQLITE_INDEX_CONSTRAINT_IS:
 43839  			zOp = ts + 5851
 43840  			break
 43841  		case SQLITE_INDEX_CONSTRAINT_LIMIT:
 43842  			zOp = ts + 28412
 43843  			break
 43844  		case SQLITE_INDEX_CONSTRAINT_OFFSET:
 43845  			zOp = ts + 28418
 43846  			break
 43847  		}
 43848  
 43849  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+6194, -1))
 43850  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, zOp, -1))
 43851  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 43852  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn))
 43853  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28432, -1))
 43854  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable)))
 43855  
 43856  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 43857  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43858  			var _objPtr uintptr = pElem
 43859  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43860  				tcl.XTclFreeObj(tls, _objPtr)
 43861  			}
 43862  		}
 43863  	}
 43864  
 43865  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 43866  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 43867  		var _objPtr uintptr = pRes
 43868  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43869  			tcl.XTclFreeObj(tls, _objPtr)
 43870  		}
 43871  	}
 43872  }
 43873  
 43874  func testBestIndexObjOrderby(tls *libc.TLS, interp uintptr, pIdxInfo uintptr) {
 43875  	var ii int32
 43876  	var pRes uintptr = tcl.XTcl_NewObj(tls)
 43877  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 43878  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnOrderBy; ii++ {
 43879  		var pOrder uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaOrderBy + uintptr(ii)*8
 43880  		var pElem uintptr = tcl.XTcl_NewObj(tls)
 43881  		(*Tcl_Obj)(unsafe.Pointer(pElem)).FrefCount++
 43882  
 43883  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28425, -1))
 43884  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, (*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).FiColumn))
 43885  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewStringObj(tls, ts+28439, -1))
 43886  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pElem, tcl.XTcl_NewIntObj(tls, int32((*sqlite3_index_orderby)(unsafe.Pointer(pOrder)).Fdesc)))
 43887  
 43888  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, pElem)
 43889  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 43890  			var _objPtr uintptr = pElem
 43891  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43892  				tcl.XTclFreeObj(tls, _objPtr)
 43893  			}
 43894  		}
 43895  	}
 43896  
 43897  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 43898  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 43899  		var _objPtr uintptr = pRes
 43900  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 43901  			tcl.XTclFreeObj(tls, _objPtr)
 43902  		}
 43903  	}
 43904  }
 43905  
 43906  func testBestIndexObj(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 43907  	bp := tls.Alloc(80)
 43908  	defer tls.Free(80)
 43909  
 43910  	*(*[7]uintptr)(unsafe.Pointer(bp)) = [7]uintptr{
 43911  		ts + 28444,
 43912  		ts + 28456,
 43913  		ts + 28464,
 43914  		ts + 28469,
 43915  		ts + 28478,
 43916  		ts + 28481,
 43917  		uintptr(0),
 43918  	}
 43919  
 43920  	var pIdxInfo uintptr = clientData
 43921  
 43922  	if objc < 2 {
 43923  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 43924  		return TCL_ERROR
 43925  	}
 43926  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+56) != 0 {
 43927  		return TCL_ERROR
 43928  	}
 43929  
 43930  	if *(*int32)(unsafe.Pointer(bp + 56)) < 4 && objc != 2 {
 43931  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 43932  		return TCL_ERROR
 43933  	}
 43934  	if *(*int32)(unsafe.Pointer(bp + 56)) == 4 && objc != 4 {
 43935  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28491)
 43936  		return TCL_ERROR
 43937  	}
 43938  	if *(*int32)(unsafe.Pointer(bp + 56)) == 5 && objc != 3 && objc != 4 {
 43939  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+28505)
 43940  		return TCL_ERROR
 43941  	}
 43942  
 43943  	switch *(*int32)(unsafe.Pointer(bp + 56)) {
 43944  	case 0:
 43945  		testBestIndexObjConstraints(tls, interp, pIdxInfo)
 43946  		break
 43947  
 43948  	case 1:
 43949  		testBestIndexObjOrderby(tls, interp, pIdxInfo)
 43950  		break
 43951  
 43952  	case 2:
 43953  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FcolUsed)))
 43954  		break
 43955  
 43956  	case 3:
 43957  		{
 43958  			var bDistinct int32 = sqlite3.Xsqlite3_vtab_distinct(tls, pIdxInfo)
 43959  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, bDistinct))
 43960  			break
 43961  
 43962  		}
 43963  
 43964  	case 4:
 43965  		{
 43966  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+60) != 0 ||
 43967  				tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+64) != 0 {
 43968  				return TCL_ERROR
 43969  			}
 43970  			tcl.XTcl_SetObjResult(tls, interp,
 43971  				tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_vtab_in(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 60)), *(*int32)(unsafe.Pointer(bp + 64)))))
 43972  			break
 43973  
 43974  		}
 43975  
 43976  	case 5:
 43977  		{
 43978  			*(*int32)(unsafe.Pointer(bp + 68)) = 0
 43979  			var rc int32
 43980  			*(*uintptr)(unsafe.Pointer(bp + 72)) = uintptr(0)
 43981  			var zVal uintptr = ts + 584
 43982  			if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+68) != 0 {
 43983  				return TCL_ERROR
 43984  			}
 43985  			rc = sqlite3.Xsqlite3_vtab_rhs_value(tls, pIdxInfo, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 43986  			if rc != SQLITE_OK && rc != SQLITE_NOTFOUND {
 43987  				tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 43988  				return TCL_ERROR
 43989  			}
 43990  			if *(*uintptr)(unsafe.Pointer(bp + 72)) != 0 {
 43991  				zVal = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(bp + 72)))
 43992  			} else if objc == 4 {
 43993  				zVal = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 43994  			}
 43995  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, zVal, -1))
 43996  			break
 43997  
 43998  		}
 43999  	}
 44000  
 44001  	return TCL_OK
 44002  }
 44003  
 44004  func tclBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 44005  	bp := tls.Alloc(108)
 44006  	defer tls.Free(108)
 44007  
 44008  	var pTab uintptr = tab
 44009  	var interp uintptr = (*tcl_vtab)(unsafe.Pointer(pTab)).Finterp
 44010  	var rc int32 = SQLITE_OK
 44011  
 44012  	var pScript uintptr
 44013  
 44014  	pScript = tcl.XTcl_DuplicateObj(tls, (*tcl_vtab)(unsafe.Pointer(pTab)).FpCmd)
 44015  	(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 44016  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, ts+27495, -1))
 44017  
 44018  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([24]int8{})), bp+56, ts+28521, libc.VaList(bp, libc.PostIncInt32(&iNext, 1)))
 44019  	tcl.XTcl_CreateObjCommand(tls, interp, bp+56, *(*uintptr)(unsafe.Pointer(&struct {
 44020  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 44021  	}{testBestIndexObj})), pIdxInfo, uintptr(0))
 44022  	tcl.XTcl_ListObjAppendElement(tls, interp, pScript, tcl.XTcl_NewStringObj(tls, bp+56, -1))
 44023  	rc = tcl.XTcl_EvalObjEx(tls, interp, pScript, TCL_EVAL_GLOBAL)
 44024  	tcl.XTcl_DeleteCommand(tls, interp, bp+56)
 44025  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 44026  		var _objPtr uintptr = pScript
 44027  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 44028  			tcl.XTclFreeObj(tls, _objPtr)
 44029  		}
 44030  	}
 44031  
 44032  	if rc != TCL_OK {
 44033  		var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44034  		rc = SQLITE_ERROR
 44035  		(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, zErr))
 44036  	} else {
 44037  		var pRes uintptr = tcl.XTcl_GetObjResult(tls, interp)
 44038  		*(*uintptr)(unsafe.Pointer(bp + 88)) = uintptr(0)
 44039  
 44040  		rc = tcl.XTcl_ListObjGetElements(tls, interp, pRes, bp+80, bp+88)
 44041  		if rc != TCL_OK {
 44042  			var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44043  			rc = SQLITE_ERROR
 44044  			(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+16, zErr))
 44045  		} else {
 44046  			var ii int32
 44047  			var iArgv int32 = 1
 44048  			for ii = 0; rc == SQLITE_OK && ii < *(*int32)(unsafe.Pointer(bp + 80)); ii = ii + 2 {
 44049  				var zCmd uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii)*8)))
 44050  				var p uintptr = *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 88)) + uintptr(ii+1)*8))
 44051  				if sqlite3.Xsqlite3_stricmp(tls, ts+28533, zCmd) == 0 {
 44052  					rc = tcl.XTcl_GetDoubleFromObj(tls, interp, p, pIdxInfo+64)
 44053  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28456, zCmd) == 0 {
 44054  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+60)
 44055  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28538, zCmd) == 0 {
 44056  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, pIdxInfo+40)
 44057  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28545, zCmd) == 0 {
 44058  					sqlite3.Xsqlite3_free(tls, (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr)
 44059  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+24, tcl.XTcl_GetString(tls, p)))
 44060  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 44061  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28552, zCmd) == 0 {
 44062  					*(*Tcl_WideInt)(unsafe.Pointer(bp + 96)) = int64(0)
 44063  					rc = tcl.XTcl_GetWideIntFromObj(tls, interp, p, bp+96)
 44064  					(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedRows = sqlite3_int64(tRowcnt(*(*Tcl_WideInt)(unsafe.Pointer(bp + 96))))
 44065  				} else if sqlite3.Xsqlite3_stricmp(tls, ts+28557, zCmd) == 0 ||
 44066  					sqlite3.Xsqlite3_stricmp(tls, ts+28561, zCmd) == 0 {
 44067  					rc = tcl.XTcl_GetIntFromObj(tls, interp, p, bp+104)
 44068  					if rc == SQLITE_OK {
 44069  						if *(*int32)(unsafe.Pointer(bp + 104)) < 0 || *(*int32)(unsafe.Pointer(bp + 104)) >= (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint {
 44070  							rc = SQLITE_ERROR
 44071  							(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28566, libc.VaList(bp+32, *(*int32)(unsafe.Pointer(bp + 104))))
 44072  						} else {
 44073  							var bOmit int32 = libc.Bool32(int32(*(*int8)(unsafe.Pointer(zCmd))) == 'o' || int32(*(*int8)(unsafe.Pointer(zCmd))) == 'O')
 44074  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).FargvIndex = libc.PostIncInt32(&iArgv, 1)
 44075  							(*sqlite3_index_constraint_usage)(unsafe.Pointer((*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(*(*int32)(unsafe.Pointer(bp + 104)))*8)).Fomit = uint8(bOmit)
 44076  						}
 44077  					}
 44078  				} else {
 44079  					rc = SQLITE_ERROR
 44080  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+28350, libc.VaList(bp+40, zCmd))
 44081  				}
 44082  				if rc != SQLITE_OK && (*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg == uintptr(0) {
 44083  					var zErr uintptr = tcl.XTcl_GetStringResult(tls, interp)
 44084  					(*tcl_vtab)(unsafe.Pointer(pTab)).Fbase.FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+48, zErr))
 44085  				}
 44086  			}
 44087  		}
 44088  	}
 44089  
 44090  	return rc
 44091  }
 44092  
 44093  var iNext int32 = 43
 44094  
 44095  var tclModule = sqlite3_module{
 44096  	FxCreate:     0,
 44097  	FxConnect:    0,
 44098  	FxBestIndex:  0,
 44099  	FxDisconnect: 0,
 44100  	FxDestroy:    0,
 44101  	FxOpen:       0,
 44102  	FxClose:      0,
 44103  	FxFilter:     0,
 44104  	FxNext:       0,
 44105  	FxEof:        0,
 44106  	FxColumn:     0,
 44107  	FxRowid:      0,
 44108  }
 44109  
 44110  func register_tcl_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44111  	bp := tls.Alloc(8)
 44112  	defer tls.Free(8)
 44113  
 44114  	if objc != 2 {
 44115  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 44116  		return TCL_ERROR
 44117  	}
 44118  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 44119  		return TCL_ERROR
 44120  	}
 44121  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+28581, uintptr(unsafe.Pointer(&tclModule)), interp)
 44122  	return TCL_OK
 44123  }
 44124  
 44125  func Sqlitetesttcl_Init(tls *libc.TLS, interp uintptr) int32 {
 44126  	var i int32
 44127  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd4))/uint64(unsafe.Sizeof(struct {
 44128  		FzName      uintptr
 44129  		FxProc      uintptr
 44130  		FclientData uintptr
 44131  	}{})); i++ {
 44132  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd4[i].FzName,
 44133  			aObjCmd4[i].FxProc, aObjCmd4[i].FclientData, uintptr(0))
 44134  	}
 44135  	return TCL_OK
 44136  }
 44137  
 44138  var aObjCmd4 = [1]struct {
 44139  	FzName      uintptr
 44140  	FxProc      uintptr
 44141  	FclientData uintptr
 44142  }{
 44143  	{FzName: ts + 28585, FxProc: 0},
 44144  }
 44145  
 44146  func ptrToText(tls *libc.TLS, p uintptr) uintptr {
 44147  	bp := tls.Alloc(8)
 44148  	defer tls.Free(8)
 44149  
 44150  	sqlite3.Xsqlite3_snprintf(tls, int32(uint64(unsafe.Sizeof(buf))-uint64(1)), uintptr(unsafe.Pointer(&buf)), ts+9889, libc.VaList(bp, p))
 44151  	return uintptr(unsafe.Pointer(&buf))
 44152  }
 44153  
 44154  var buf [100]int8
 44155  
 44156  func blobHandleFromObj1(tls *libc.TLS, interp uintptr, pObj uintptr, ppBlob uintptr) int32 {
 44157  	bp := tls.Alloc(8)
 44158  	defer tls.Free(8)
 44159  
 44160  	var z uintptr
 44161  
 44162  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44163  	if *(*int32)(unsafe.Pointer(bp)) == 0 {
 44164  		*(*uintptr)(unsafe.Pointer(ppBlob)) = uintptr(0)
 44165  	} else if *(*int32)(unsafe.Pointer(bp)) > 9 && 0 == libc.Xmemcmp(tls, ts+28605, z, uint64(9)) {
 44166  		var channel Tcl_Channel
 44167  		var instanceData ClientData
 44168  
 44169  		channel = tcl.XTcl_GetChannel(tls, interp, z, bp+4)
 44170  		if !(channel != 0) {
 44171  			return TCL_ERROR
 44172  		}
 44173  
 44174  		tcl.XTcl_Flush(tls, channel)
 44175  		tcl.XTcl_Seek(tls, channel, int64(0), SEEK_SET)
 44176  
 44177  		instanceData = tcl.XTcl_GetChannelInstanceData(tls, channel)
 44178  		*(*uintptr)(unsafe.Pointer(ppBlob)) = *(*uintptr)(unsafe.Pointer(instanceData))
 44179  	} else {
 44180  		*(*uintptr)(unsafe.Pointer(ppBlob)) = sqlite3TestTextToPtr(tls, z)
 44181  	}
 44182  
 44183  	return TCL_OK
 44184  }
 44185  
 44186  func blobStringFromObj(tls *libc.TLS, pObj uintptr) uintptr {
 44187  	bp := tls.Alloc(4)
 44188  	defer tls.Free(4)
 44189  
 44190  	var z uintptr
 44191  	z = tcl.XTcl_GetStringFromObj(tls, pObj, bp)
 44192  	return func() uintptr {
 44193  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 44194  			return z
 44195  		}
 44196  		return uintptr(0)
 44197  	}()
 44198  }
 44199  
 44200  func test_blob_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44201  	bp := tls.Alloc(40)
 44202  	defer tls.Free(40)
 44203  
 44204  	var zDb uintptr
 44205  	var zTable uintptr
 44206  	var zColumn uintptr
 44207  
 44208  	var zVarname uintptr
 44209  
 44210  	*(*uintptr)(unsafe.Pointer(bp + 32)) = bp
 44211  	var rc int32
 44212  
 44213  	if objc != 8 {
 44214  		var zUsage uintptr = ts + 28615
 44215  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, zUsage)
 44216  		return TCL_ERROR
 44217  	}
 44218  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+8) != 0 {
 44219  		return TCL_ERROR
 44220  	}
 44221  	zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 44222  	zTable = blobStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 44223  	zColumn = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 44224  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+16) != 0 {
 44225  		return TCL_ERROR
 44226  	}
 44227  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp) != 0 {
 44228  		return TCL_ERROR
 44229  	}
 44230  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 7*8)), bp+24)
 44231  
 44232  	if *(*int32)(unsafe.Pointer(bp + 24)) > 0 {
 44233  		rc = sqlite3.Xsqlite3_blob_open(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, zTable, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp)), bp+32)
 44234  		tcl.XTcl_SetVar2(tls, interp, zVarname, uintptr(0), ptrToText(tls, *(*uintptr)(unsafe.Pointer(bp + 32))), 0)
 44235  	} else {
 44236  		rc = sqlite3.Xsqlite3_blob_open(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), zDb, zTable, zColumn, *(*Tcl_WideInt)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp)), uintptr(0))
 44237  	}
 44238  
 44239  	if rc == SQLITE_OK {
 44240  		tcl.XTcl_ResetResult(tls, interp)
 44241  	} else {
 44242  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44243  		return TCL_ERROR
 44244  	}
 44245  	return TCL_OK
 44246  }
 44247  
 44248  func test_blob_close(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44249  	bp := tls.Alloc(8)
 44250  	defer tls.Free(8)
 44251  
 44252  	var rc int32
 44253  
 44254  	if objc != 2 {
 44255  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44256  		return TCL_ERROR
 44257  	}
 44258  
 44259  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44260  		return TCL_ERROR
 44261  	}
 44262  	rc = sqlite3.Xsqlite3_blob_close(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44263  
 44264  	if rc != 0 {
 44265  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44266  	} else {
 44267  		tcl.XTcl_ResetResult(tls, interp)
 44268  	}
 44269  	return TCL_OK
 44270  }
 44271  
 44272  func test_blob_bytes(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44273  	bp := tls.Alloc(8)
 44274  	defer tls.Free(8)
 44275  
 44276  	var nByte int32
 44277  
 44278  	if objc != 2 {
 44279  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 44280  		return TCL_ERROR
 44281  	}
 44282  
 44283  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44284  		return TCL_ERROR
 44285  	}
 44286  	nByte = sqlite3.Xsqlite3_blob_bytes(tls, *(*uintptr)(unsafe.Pointer(bp)))
 44287  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nByte))
 44288  
 44289  	return TCL_OK
 44290  }
 44291  
 44292  func test_blob_read(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44293  	bp := tls.Alloc(32)
 44294  	defer tls.Free(32)
 44295  
 44296  	var zBuf uintptr = uintptr(0)
 44297  	var rc int32
 44298  
 44299  	if objc != 4 {
 44300  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28667)
 44301  		return TCL_ERROR
 44302  	}
 44303  
 44304  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 44305  		return TCL_ERROR
 44306  	}
 44307  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) ||
 44308  		TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28) {
 44309  		return TCL_ERROR
 44310  	}
 44311  
 44312  	if *(*int32)(unsafe.Pointer(bp + 28)) > 0 {
 44313  		zBuf = tcl.XTcl_AttemptAlloc(tls, uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 44314  		if zBuf == uintptr(0) {
 44315  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+28684, 0))
 44316  			return TCL_ERROR
 44317  		}
 44318  	}
 44319  	rc = sqlite3.Xsqlite3_blob_read(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zBuf, *(*int32)(unsafe.Pointer(bp + 28)), *(*int32)(unsafe.Pointer(bp + 24)))
 44320  	if rc == SQLITE_OK {
 44321  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, zBuf, *(*int32)(unsafe.Pointer(bp + 28))))
 44322  	} else {
 44323  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44324  	}
 44325  	tcl.XTcl_Free(tls, zBuf)
 44326  
 44327  	return func() int32 {
 44328  		if rc == SQLITE_OK {
 44329  			return TCL_OK
 44330  		}
 44331  		return TCL_ERROR
 44332  	}()
 44333  }
 44334  
 44335  func test_blob_write(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 44336  	bp := tls.Alloc(16)
 44337  	defer tls.Free(16)
 44338  
 44339  	var rc int32
 44340  	var zBuf uintptr
 44341  
 44342  	if objc != 4 && objc != 5 {
 44343  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28745)
 44344  		return TCL_ERROR
 44345  	}
 44346  
 44347  	if blobHandleFromObj1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 44348  		return TCL_ERROR
 44349  	}
 44350  	if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) {
 44351  		return TCL_ERROR
 44352  	}
 44353  
 44354  	zBuf = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12)
 44355  	if objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+12) != 0 {
 44356  		return TCL_ERROR
 44357  	}
 44358  	rc = sqlite3.Xsqlite3_blob_write(tls, *(*uintptr)(unsafe.Pointer(bp)), zBuf, *(*int32)(unsafe.Pointer(bp + 12)), *(*int32)(unsafe.Pointer(bp + 8)))
 44359  	if rc != SQLITE_OK {
 44360  		tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 44361  	}
 44362  
 44363  	return func() int32 {
 44364  		if rc == SQLITE_OK {
 44365  			return TCL_OK
 44366  		}
 44367  		return TCL_ERROR
 44368  	}()
 44369  }
 44370  
 44371  func Sqlitetest_blob_Init(tls *libc.TLS, interp uintptr) int32 {
 44372  	var i int32
 44373  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd5))/uint64(unsafe.Sizeof(struct {
 44374  		FzName uintptr
 44375  		FxProc uintptr
 44376  	}{})); i++ {
 44377  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd5[i].FzName, aObjCmd5[i].FxProc, uintptr(0), uintptr(0))
 44378  	}
 44379  	return TCL_OK
 44380  }
 44381  
 44382  var aObjCmd5 = [5]struct {
 44383  	FzName uintptr
 44384  	FxProc uintptr
 44385  }{
 44386  	{FzName: ts + 28772, FxProc: 0},
 44387  	{FzName: ts + 28790, FxProc: 0},
 44388  	{FzName: ts + 28809, FxProc: 0},
 44389  	{FzName: ts + 28828, FxProc: 0},
 44390  	{FzName: ts + 28846, FxProc: 0},
 44391  }
 44392  
 44393  func sqlite3BtreeSharedCacheReport(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 44394  	var pBt uintptr
 44395  	var pRet uintptr = tcl.XTcl_NewObj(tls)
 44396  	for pBt = sqlite3.Xsqlite3SharedCacheList; pBt != 0; pBt = (*BtShared)(unsafe.Pointer(pBt)).FpNext {
 44397  		var zFile uintptr = sqlite3.Xsqlite3PagerFilename(tls, (*BtShared)(unsafe.Pointer(pBt)).FpPager, 1)
 44398  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, zFile, -1))
 44399  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, (*BtShared)(unsafe.Pointer(pBt)).FnRef))
 44400  	}
 44401  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 44402  	return TCL_OK
 44403  }
 44404  
 44405  func sqlite3BtreeCursorList(tls *libc.TLS, p uintptr) {
 44406  }
 44407  
 44408  func set_options(tls *libc.TLS, interp uintptr) {
 44409  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28880, ts+14193,
 44410  		TCL_GLOBAL_ONLY)
 44411  
 44412  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28899, ts+14193, TCL_GLOBAL_ONLY)
 44413  
 44414  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28907, ts+14193, TCL_GLOBAL_ONLY)
 44415  
 44416  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28925, ts+28938, TCL_GLOBAL_ONLY)
 44417  
 44418  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28942, ts+28949, TCL_GLOBAL_ONLY)
 44419  
 44420  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28951, ts+14193, TCL_GLOBAL_ONLY)
 44421  
 44422  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28963, ts+14193, TCL_GLOBAL_ONLY)
 44423  
 44424  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28969, ts+14193, TCL_GLOBAL_ONLY)
 44425  
 44426  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+28991, ts+14193, TCL_GLOBAL_ONLY)
 44427  
 44428  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29003, ts+28949, TCL_GLOBAL_ONLY)
 44429  
 44430  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29011, ts+28949, TCL_GLOBAL_ONLY)
 44431  
 44432  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29015, ts+28949, TCL_GLOBAL_ONLY)
 44433  
 44434  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29040, ts+14193, TCL_GLOBAL_ONLY)
 44435  
 44436  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29045,
 44437  		ts+29060, TCL_GLOBAL_ONLY)
 44438  
 44439  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29062, ts+14193, TCL_GLOBAL_ONLY)
 44440  
 44441  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29071, ts+14193, TCL_GLOBAL_ONLY)
 44442  
 44443  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29081, ts+14193, TCL_GLOBAL_ONLY)
 44444  
 44445  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29093, ts+14193, TCL_GLOBAL_ONLY)
 44446  
 44447  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13460, ts+28949, TCL_GLOBAL_ONLY)
 44448  
 44449  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29107, ts+28949, TCL_GLOBAL_ONLY)
 44450  
 44451  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29115, ts+14193, TCL_GLOBAL_ONLY)
 44452  
 44453  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29120, ts+14193, TCL_GLOBAL_ONLY)
 44454  
 44455  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29125, ts+28949, TCL_GLOBAL_ONLY)
 44456  
 44457  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13580, ts+28949, TCL_GLOBAL_ONLY)
 44458  
 44459  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29141, ts+28949, TCL_GLOBAL_ONLY)
 44460  
 44461  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29150, ts+28949, TCL_GLOBAL_ONLY)
 44462  
 44463  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29156, ts+28949, TCL_GLOBAL_ONLY)
 44464  
 44465  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29167, ts+28949, TCL_GLOBAL_ONLY)
 44466  
 44467  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+1957, ts+28949, TCL_GLOBAL_ONLY)
 44468  
 44469  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29178, ts+14193, TCL_GLOBAL_ONLY)
 44470  
 44471  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29188, ts+14193, TCL_GLOBAL_ONLY)
 44472  
 44473  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29200, ts+28949, TCL_GLOBAL_ONLY)
 44474  
 44475  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29208, ts+28949, TCL_GLOBAL_ONLY)
 44476  
 44477  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29214, ts+14193, TCL_GLOBAL_ONLY)
 44478  
 44479  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29224, ts+14193, TCL_GLOBAL_ONLY)
 44480  
 44481  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10121, ts+28949, TCL_GLOBAL_ONLY)
 44482  
 44483  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29241, ts+28949, TCL_GLOBAL_ONLY)
 44484  
 44485  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29246, ts+28949, TCL_GLOBAL_ONLY)
 44486  
 44487  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13044, ts+28949, TCL_GLOBAL_ONLY)
 44488  
 44489  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29254, ts+28949, TCL_GLOBAL_ONLY)
 44490  
 44491  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29264, ts+28949, TCL_GLOBAL_ONLY)
 44492  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29275,
 44493  		ts+14193, TCL_GLOBAL_ONLY)
 44494  
 44495  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29294, ts+28949, TCL_GLOBAL_ONLY)
 44496  
 44497  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29306, ts+28949, TCL_GLOBAL_ONLY)
 44498  
 44499  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29319, ts+28949, TCL_GLOBAL_ONLY)
 44500  
 44501  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29327, ts+28949, TCL_GLOBAL_ONLY)
 44502  
 44503  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29332, ts+28949, TCL_GLOBAL_ONLY)
 44504  
 44505  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29338, ts+28949, TCL_GLOBAL_ONLY)
 44506  
 44507  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29342, ts+28949, TCL_GLOBAL_ONLY)
 44508  
 44509  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29357, ts+14193,
 44510  		TCL_GLOBAL_ONLY)
 44511  
 44512  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29377, ts+28949, TCL_GLOBAL_ONLY)
 44513  
 44514  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13439, ts+28949, TCL_GLOBAL_ONLY)
 44515  
 44516  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29397, ts+28949, TCL_GLOBAL_ONLY)
 44517  
 44518  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29406, ts+28949, TCL_GLOBAL_ONLY)
 44519  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29415, ts+28949, TCL_GLOBAL_ONLY)
 44520  
 44521  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29425, ts+28949, TCL_GLOBAL_ONLY)
 44522  
 44523  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29434, ts+28949, TCL_GLOBAL_ONLY)
 44524  
 44525  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29443, ts+28949, TCL_GLOBAL_ONLY)
 44526  
 44527  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29454, ts+28949, TCL_GLOBAL_ONLY)
 44528  
 44529  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+4974, ts+28949, TCL_GLOBAL_ONLY)
 44530  
 44531  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29461, ts+28949, TCL_GLOBAL_ONLY)
 44532  
 44533  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29475, ts+28949, TCL_GLOBAL_ONLY)
 44534  
 44535  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29486, ts+14193, TCL_GLOBAL_ONLY)
 44536  
 44537  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29491, ts+14193, TCL_GLOBAL_ONLY)
 44538  
 44539  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29496, ts+14193, TCL_GLOBAL_ONLY)
 44540  
 44541  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29501, ts+28949, TCL_GLOBAL_ONLY)
 44542  
 44543  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29506, ts+14193, TCL_GLOBAL_ONLY)
 44544  
 44545  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29519, ts+28949, TCL_GLOBAL_ONLY)
 44546  
 44547  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29533, ts+28949, TCL_GLOBAL_ONLY)
 44548  
 44549  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29542, ts+14193, TCL_GLOBAL_ONLY)
 44550  
 44551  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29546, ts+14193, TCL_GLOBAL_ONLY)
 44552  
 44553  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+10868, ts+28949, TCL_GLOBAL_ONLY)
 44554  
 44555  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29561, ts+28949, TCL_GLOBAL_ONLY)
 44556  
 44557  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29573, ts+14193, TCL_GLOBAL_ONLY)
 44558  
 44559  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29586, ts+28949, TCL_GLOBAL_ONLY)
 44560  
 44561  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29595, ts+14193, TCL_GLOBAL_ONLY)
 44562  
 44563  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29604, ts+28949, TCL_GLOBAL_ONLY)
 44564  
 44565  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29614, ts+28949, TCL_GLOBAL_ONLY)
 44566  
 44567  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29624,
 44568  		func() uintptr {
 44569  			if uint64(unsafe.Sizeof(float64(0))) > uint64(unsafe.Sizeof(float64(0))) {
 44570  				return ts + 28949
 44571  			}
 44572  			return ts + 14193
 44573  		}(),
 44574  		TCL_GLOBAL_ONLY)
 44575  
 44576  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29636, ts+28949, TCL_GLOBAL_ONLY)
 44577  
 44578  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29645, ts+28949, TCL_GLOBAL_ONLY)
 44579  
 44580  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29658, ts+28949, TCL_GLOBAL_ONLY)
 44581  
 44582  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29668, ts+14193, TCL_GLOBAL_ONLY)
 44583  
 44584  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29678, ts+28949, TCL_GLOBAL_ONLY)
 44585  
 44586  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29685, ts+28949, TCL_GLOBAL_ONLY)
 44587  
 44588  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29689, ts+28949, TCL_GLOBAL_ONLY)
 44589  
 44590  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29703, ts+28949, TCL_GLOBAL_ONLY)
 44591  
 44592  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+9564, ts+28949, TCL_GLOBAL_ONLY)
 44593  
 44594  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29710, ts+28949, TCL_GLOBAL_ONLY)
 44595  
 44596  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29718, ts+28949, TCL_GLOBAL_ONLY)
 44597  
 44598  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29724, ts+14193, TCL_GLOBAL_ONLY)
 44599  
 44600  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29739, ts+28949, TCL_GLOBAL_ONLY)
 44601  
 44602  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29754, ts+28949, TCL_GLOBAL_ONLY)
 44603  
 44604  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29769, ts+28949, TCL_GLOBAL_ONLY)
 44605  
 44606  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+18810, ts+28949, TCL_GLOBAL_ONLY)
 44607  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29777, ts+28949, TCL_GLOBAL_ONLY)
 44608  
 44609  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29786, ts+14193, TCL_GLOBAL_ONLY)
 44610  
 44611  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29797, ts+14193, TCL_GLOBAL_ONLY)
 44612  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29816, ts+14193, TCL_GLOBAL_ONLY)
 44613  
 44614  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29837, ts+28949, TCL_GLOBAL_ONLY)
 44615  
 44616  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29850, ts+28949, TCL_GLOBAL_ONLY)
 44617  
 44618  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29859, ts+28949, TCL_GLOBAL_ONLY)
 44619  
 44620  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29866,
 44621  		func() uintptr {
 44622  			if 1 != 0 {
 44623  				return ts + 28949
 44624  			}
 44625  			return ts + 14193
 44626  		}(), TCL_GLOBAL_ONLY)
 44627  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29877,
 44628  		func() uintptr {
 44629  			if SQLITE_THREADSAFE == 1 {
 44630  				return ts + 28949
 44631  			}
 44632  			return ts + 14193
 44633  		}(), TCL_GLOBAL_ONLY)
 44634  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29889,
 44635  		func() uintptr {
 44636  			if SQLITE_THREADSAFE == 2 {
 44637  				return ts + 28949
 44638  			}
 44639  			return ts + 14193
 44640  		}(), TCL_GLOBAL_ONLY)
 44641  
 44642  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29901, ts+28949, TCL_GLOBAL_ONLY)
 44643  
 44644  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13665, ts+28949, TCL_GLOBAL_ONLY)
 44645  
 44646  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29908, ts+28949, TCL_GLOBAL_ONLY)
 44647  
 44648  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29916, ts+28949, TCL_GLOBAL_ONLY)
 44649  
 44650  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+15733, ts+28949, TCL_GLOBAL_ONLY)
 44651  
 44652  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29929, ts+28949, TCL_GLOBAL_ONLY)
 44653  
 44654  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29936, ts+28949, TCL_GLOBAL_ONLY)
 44655  
 44656  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29941, ts+28949, TCL_GLOBAL_ONLY)
 44657  
 44658  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29946, ts+28949, TCL_GLOBAL_ONLY)
 44659  
 44660  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29950, ts+28949, TCL_GLOBAL_ONLY)
 44661  
 44662  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29954, ts+14193, TCL_GLOBAL_ONLY)
 44663  
 44664  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+13692, ts+28949, TCL_GLOBAL_ONLY)
 44665  
 44666  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29974, ts+14193, TCL_GLOBAL_ONLY)
 44667  
 44668  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+29993, ts+14193, TCL_GLOBAL_ONLY)
 44669  
 44670  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30007, ts+14193, TCL_GLOBAL_ONLY)
 44671  
 44672  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30016, ts+14193, TCL_GLOBAL_ONLY)
 44673  
 44674  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30040, ts+14193, TCL_GLOBAL_ONLY)
 44675  
 44676  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30061, ts+14193, TCL_GLOBAL_ONLY)
 44677  
 44678  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30068, ts+14193, TCL_GLOBAL_ONLY)
 44679  
 44680  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30081, ts+14193, TCL_GLOBAL_ONLY)
 44681  
 44682  	tcl.XTcl_SetVar2(tls, interp, ts+28865, ts+30091, ts+28949, TCL_GLOBAL_ONLY)
 44683  
 44684  	{
 44685  		tcl.XTcl_LinkVar(tls, interp, ts+30102, uintptr(unsafe.Pointer(&cv_MAX_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44686  	}
 44687  
 44688  	{
 44689  		tcl.XTcl_LinkVar(tls, interp, ts+30120, uintptr(unsafe.Pointer(&cv_MAX_COLUMN)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44690  	}
 44691  
 44692  	{
 44693  		tcl.XTcl_LinkVar(tls, interp, ts+30138, uintptr(unsafe.Pointer(&cv_MAX_SQL_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44694  	}
 44695  
 44696  	{
 44697  		tcl.XTcl_LinkVar(tls, interp, ts+30160, uintptr(unsafe.Pointer(&cv_MAX_EXPR_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44698  	}
 44699  
 44700  	{
 44701  		tcl.XTcl_LinkVar(tls, interp, ts+30182, uintptr(unsafe.Pointer(&cv_MAX_COMPOUND_SELECT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44702  	}
 44703  
 44704  	{
 44705  		tcl.XTcl_LinkVar(tls, interp, ts+30209, uintptr(unsafe.Pointer(&cv_MAX_VDBE_OP)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44706  	}
 44707  
 44708  	{
 44709  		tcl.XTcl_LinkVar(tls, interp, ts+30228, uintptr(unsafe.Pointer(&cv_MAX_FUNCTION_ARG)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44710  	}
 44711  
 44712  	{
 44713  		tcl.XTcl_LinkVar(tls, interp, ts+30252, uintptr(unsafe.Pointer(&cv_MAX_VARIABLE_NUMBER)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44714  	}
 44715  
 44716  	{
 44717  		tcl.XTcl_LinkVar(tls, interp, ts+30279, uintptr(unsafe.Pointer(&cv_MAX_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44718  	}
 44719  
 44720  	{
 44721  		tcl.XTcl_LinkVar(tls, interp, ts+30300, uintptr(unsafe.Pointer(&cv_MAX_PAGE_COUNT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44722  	}
 44723  
 44724  	{
 44725  		tcl.XTcl_LinkVar(tls, interp, ts+30322, uintptr(unsafe.Pointer(&cv_MAX_LIKE_PATTERN_LENGTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44726  	}
 44727  
 44728  	{
 44729  		tcl.XTcl_LinkVar(tls, interp, ts+30353, uintptr(unsafe.Pointer(&cv_MAX_TRIGGER_DEPTH)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44730  	}
 44731  
 44732  	{
 44733  		tcl.XTcl_LinkVar(tls, interp, ts+30378, uintptr(unsafe.Pointer(&cv_DEFAULT_CACHE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44734  	}
 44735  
 44736  	{
 44737  		tcl.XTcl_LinkVar(tls, interp, ts+30404, uintptr(unsafe.Pointer(&cv_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44738  	}
 44739  
 44740  	{
 44741  		tcl.XTcl_LinkVar(tls, interp, ts+30429, uintptr(unsafe.Pointer(&cv_DEFAULT_FILE_FORMAT)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44742  	}
 44743  
 44744  	{
 44745  		tcl.XTcl_LinkVar(tls, interp, ts+30456, uintptr(unsafe.Pointer(&cv_DEFAULT_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44746  	}
 44747  
 44748  	{
 44749  		tcl.XTcl_LinkVar(tls, interp, ts+30483, uintptr(unsafe.Pointer(&cv_DEFAULT_WAL_SYNCHRONOUS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44750  	}
 44751  
 44752  	{
 44753  		tcl.XTcl_LinkVar(tls, interp, ts+30514, uintptr(unsafe.Pointer(&cv_MAX_ATTACHED)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44754  	}
 44755  
 44756  	{
 44757  		tcl.XTcl_LinkVar(tls, interp, ts+30534, uintptr(unsafe.Pointer(&cv_MAX_DEFAULT_PAGE_SIZE)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44758  	}
 44759  
 44760  	{
 44761  		tcl.XTcl_LinkVar(tls, interp, ts+30563, uintptr(unsafe.Pointer(&cv_MAX_WORKER_THREADS)), TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44762  	}
 44763  
 44764  	{
 44765  		tcl.XTcl_LinkVar(tls, interp, ts+30589, uintptr(unsafe.Pointer(&cv_TEMP_STORE)),
 44766  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44767  
 44768  	}
 44769  
 44770  	{
 44771  		tcl.XTcl_LinkVar(tls, interp, ts+30600, uintptr(unsafe.Pointer(&cv___GNUC__)),
 44772  			TCL_LINK_INT|TCL_LINK_READ_ONLY)
 44773  
 44774  	}
 44775  }
 44776  
 44777  var cv_MAX_LENGTH int32 = SQLITE_MAX_LENGTH
 44778  var cv_MAX_COLUMN int32 = SQLITE_MAX_COLUMN
 44779  var cv_MAX_SQL_LENGTH int32 = SQLITE_MAX_SQL_LENGTH
 44780  var cv_MAX_EXPR_DEPTH int32 = SQLITE_MAX_EXPR_DEPTH
 44781  var cv_MAX_COMPOUND_SELECT int32 = SQLITE_MAX_COMPOUND_SELECT
 44782  var cv_MAX_VDBE_OP int32 = SQLITE_MAX_VDBE_OP
 44783  var cv_MAX_FUNCTION_ARG int32 = SQLITE_MAX_FUNCTION_ARG
 44784  var cv_MAX_VARIABLE_NUMBER int32 = SQLITE_MAX_VARIABLE_NUMBER
 44785  var cv_MAX_PAGE_SIZE int32 = SQLITE_MAX_PAGE_SIZE
 44786  var cv_MAX_PAGE_COUNT int32 = SQLITE_MAX_PAGE_COUNT
 44787  var cv_MAX_LIKE_PATTERN_LENGTH int32 = SQLITE_MAX_LIKE_PATTERN_LENGTH
 44788  var cv_MAX_TRIGGER_DEPTH int32 = SQLITE_MAX_TRIGGER_DEPTH
 44789  var cv_DEFAULT_CACHE_SIZE int32 = -2000
 44790  var cv_DEFAULT_PAGE_SIZE int32 = SQLITE_DEFAULT_PAGE_SIZE
 44791  var cv_DEFAULT_FILE_FORMAT int32 = SQLITE_DEFAULT_FILE_FORMAT
 44792  var cv_DEFAULT_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 44793  var cv_DEFAULT_WAL_SYNCHRONOUS int32 = SQLITE_DEFAULT_SYNCHRONOUS
 44794  var cv_MAX_ATTACHED int32 = SQLITE_MAX_ATTACHED
 44795  var cv_MAX_DEFAULT_PAGE_SIZE int32 = SQLITE_MAX_DEFAULT_PAGE_SIZE
 44796  var cv_MAX_WORKER_THREADS int32 = SQLITE_MAX_WORKER_THREADS
 44797  var cv_TEMP_STORE int32 = SQLITE_TEMP_STORE
 44798  var cv___GNUC__ int32 = 1
 44799  
 44800  func Sqliteconfig_Init(tls *libc.TLS, interp uintptr) int32 {
 44801  	set_options(tls, interp)
 44802  	return TCL_OK
 44803  }
 44804  
 44805  func sqlite3Delete83Name(tls *libc.TLS, z uintptr) {
 44806  	var i int32
 44807  	var sz int32
 44808  	sz = int32(libc.Xstrlen(tls, z))
 44809  	for i = sz - 1; i > 0 && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '/' && int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) != '.'; i-- {
 44810  	}
 44811  	if int32(*(*int8)(unsafe.Pointer(z + uintptr(i)))) == '.' && sz > i+4 {
 44812  		libc.Xmemmove(tls, z+uintptr(i+1), z+uintptr(sz-3), uint64(4))
 44813  	}
 44814  }
 44815  
 44816  func sqlite3DeleteUnlinkIfExists(tls *libc.TLS, pVfs uintptr, zFile uintptr, pbExists uintptr) int32 {
 44817  	var rc int32 = SQLITE_ERROR
 44818  
 44819  	rc = libc.Xaccess(tls, zFile, F_OK)
 44820  	if rc != 0 {
 44821  		if *(*int32)(unsafe.Pointer(libc.X__errno(tls))) == ENOENT {
 44822  			if pbExists != 0 {
 44823  				*(*int32)(unsafe.Pointer(pbExists)) = 0
 44824  			}
 44825  			rc = SQLITE_OK
 44826  		}
 44827  	} else {
 44828  		if pbExists != 0 {
 44829  			*(*int32)(unsafe.Pointer(pbExists)) = 1
 44830  		}
 44831  		rc = libc.Xunlink(tls, zFile)
 44832  	}
 44833  	return rc
 44834  }
 44835  
 44836  func sqlite3_delete_database(tls *libc.TLS, zFile uintptr) int32 {
 44837  	bp := tls.Alloc(156)
 44838  	defer tls.Free(156)
 44839  
 44840  	var zBuf uintptr
 44841  	var nBuf int32
 44842  	var rc int32 = 0
 44843  	var i int32
 44844  
 44845  	*(*[4]uintptr)(unsafe.Pointer(bp + 24)) = [4]uintptr{ts, ts + 30609, ts + 30620, ts + 30627}
 44846  
 44847  	*(*[6]MFile)(unsafe.Pointer(bp + 56)) = [6]MFile{
 44848  		{FzFmt: ts + 30634},
 44849  		{FzFmt: ts + 30641},
 44850  		{FzFmt: ts + 30656},
 44851  		{FzFmt: ts + 30634, Fb83: 1},
 44852  		{FzFmt: ts + 30641, FiOffset: SQLITE_MULTIPLEX_JOURNAL_8_3_OFFSET, Fb83: 1},
 44853  		{FzFmt: ts + 30656, FiOffset: SQLITE_MULTIPLEX_WAL_8_3_OFFSET, Fb83: 1},
 44854  	}
 44855  
 44856  	var pVfs uintptr = uintptr(0)
 44857  
 44858  	nBuf = int32(libc.Xstrlen(tls, zFile)) + 100
 44859  	zBuf = sqlite3.Xsqlite3_malloc(tls, nBuf)
 44860  	if zBuf == uintptr(0) {
 44861  		return SQLITE_NOMEM
 44862  	}
 44863  
 44864  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([4]uintptr{}))/uint64(unsafe.Sizeof(uintptr(0))); i++ {
 44865  		sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, *(*uintptr)(unsafe.Pointer(bp + 24 + uintptr(i)*8)), libc.VaList(bp, zFile))
 44866  		rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 44867  		if rc == 0 && i != 0 {
 44868  			sqlite3Delete83Name(tls, zBuf)
 44869  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, uintptr(0))
 44870  		}
 44871  	}
 44872  
 44873  	for i = 0; rc == 0 && uint64(i) < uint64(unsafe.Sizeof([6]MFile{}))/uint64(unsafe.Sizeof(MFile{})); i++ {
 44874  		var p uintptr = bp + 56 + uintptr(i)*16
 44875  		var iChunk int32
 44876  		for iChunk = 1; iChunk <= MX_CHUNK_NUMBER; iChunk++ {
 44877  			sqlite3.Xsqlite3_snprintf(tls, nBuf, zBuf, (*MFile)(unsafe.Pointer(p)).FzFmt, libc.VaList(bp+8, zFile, iChunk+(*MFile)(unsafe.Pointer(p)).FiOffset))
 44878  			if (*MFile)(unsafe.Pointer(p)).Fb83 != 0 {
 44879  				sqlite3Delete83Name(tls, zBuf)
 44880  			}
 44881  			rc = sqlite3DeleteUnlinkIfExists(tls, pVfs, zBuf, bp+152)
 44882  			if *(*int32)(unsafe.Pointer(bp + 152)) == 0 || rc != 0 {
 44883  				break
 44884  			}
 44885  		}
 44886  	}
 44887  
 44888  	sqlite3.Xsqlite3_free(tls, zBuf)
 44889  	return func() int32 {
 44890  		if rc != 0 {
 44891  			return SQLITE_ERROR
 44892  		}
 44893  		return SQLITE_OK
 44894  	}()
 44895  }
 44896  
 44897  type MFile = struct {
 44898  	FzFmt    uintptr
 44899  	FiOffset int32
 44900  	Fb83     int32
 44901  }
 44902  
 44903  func Sqlitetest_demovfs_Init(tls *libc.TLS, interp uintptr) int32 {
 44904  	return TCL_OK
 44905  }
 44906  
 44907  type devsym_file1 = struct {
 44908  	Fbase  sqlite3_file
 44909  	FpReal uintptr
 44910  }
 44911  
 44912  type devsym_file = devsym_file1
 44913  
 44914  type DevsymGlobal = struct {
 44915  	FpVfs        uintptr
 44916  	FiDeviceChar int32
 44917  	FiSectorSize int32
 44918  	FnWriteCrash int32
 44919  	F__ccgo_pad1 [4]byte
 44920  }
 44921  
 44922  var g1 = DevsymGlobal{FiSectorSize: 512}
 44923  
 44924  func devsymClose(tls *libc.TLS, pFile uintptr) int32 {
 44925  	var p uintptr = pFile
 44926  	sqlite3.Xsqlite3OsClose(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 44927  	return SQLITE_OK
 44928  }
 44929  
 44930  func devsymRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 44931  	var p uintptr = pFile
 44932  	return sqlite3.Xsqlite3OsRead(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 44933  }
 44934  
 44935  func devsymWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 44936  	var p uintptr = pFile
 44937  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 44938  }
 44939  
 44940  func devsymTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 44941  	var p uintptr = pFile
 44942  	return sqlite3.Xsqlite3OsTruncate(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, size)
 44943  }
 44944  
 44945  func devsymSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 44946  	var p uintptr = pFile
 44947  	return sqlite3.Xsqlite3OsSync(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags)
 44948  }
 44949  
 44950  func devsymFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 44951  	var p uintptr = pFile
 44952  	return sqlite3.Xsqlite3OsFileSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pSize)
 44953  }
 44954  
 44955  func devsymLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 44956  	var p uintptr = pFile
 44957  	return sqlite3.Xsqlite3OsLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 44958  }
 44959  
 44960  func devsymUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 44961  	var p uintptr = pFile
 44962  	return sqlite3.Xsqlite3OsUnlock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, eLock)
 44963  }
 44964  
 44965  func devsymCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 44966  	var p uintptr = pFile
 44967  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, pResOut)
 44968  }
 44969  
 44970  func devsymFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 44971  	var p uintptr = pFile
 44972  	return sqlite3.Xsqlite3OsFileControl(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, op, pArg)
 44973  }
 44974  
 44975  func devsymSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 44976  	return g1.FiSectorSize
 44977  }
 44978  
 44979  func devsymDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 44980  	return g1.FiDeviceChar
 44981  }
 44982  
 44983  func devsymShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 44984  	var p uintptr = pFile
 44985  	return (*struct {
 44986  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 44987  	})(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)
 44988  }
 44989  
 44990  func devsymShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 44991  	var p uintptr = pFile
 44992  	return (*struct {
 44993  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 44994  	})(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)
 44995  }
 44996  
 44997  func devsymShmBarrier(tls *libc.TLS, pFile uintptr) {
 44998  	var p uintptr = pFile
 44999  	(*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)
 45000  }
 45001  
 45002  func devsymShmUnmap(tls *libc.TLS, pFile uintptr, delFlag int32) int32 {
 45003  	var p uintptr = pFile
 45004  	return (*struct {
 45005  		f func(*libc.TLS, uintptr, int32) int32
 45006  	})(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)
 45007  }
 45008  
 45009  func devsymOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45010  	var rc int32
 45011  	var p uintptr = pFile
 45012  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45013  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45014  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45015  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&devsym_io_methods))
 45016  	}
 45017  	return rc
 45018  }
 45019  
 45020  var devsym_io_methods = sqlite3_io_methods{
 45021  	FiVersion:               2,
 45022  	FxClose:                 0,
 45023  	FxRead:                  0,
 45024  	FxWrite:                 0,
 45025  	FxTruncate:              0,
 45026  	FxSync:                  0,
 45027  	FxFileSize:              0,
 45028  	FxLock:                  0,
 45029  	FxUnlock:                0,
 45030  	FxCheckReservedLock:     0,
 45031  	FxFileControl:           0,
 45032  	FxSectorSize:            0,
 45033  	FxDeviceCharacteristics: 0,
 45034  	FxShmMap:                0,
 45035  	FxShmLock:               0,
 45036  	FxShmBarrier:            0,
 45037  	FxShmUnmap:              0,
 45038  }
 45039  
 45040  func devsymDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 45041  	return sqlite3.Xsqlite3OsDelete(tls, g1.FpVfs, zPath, dirSync)
 45042  }
 45043  
 45044  func devsymAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 45045  	return sqlite3.Xsqlite3OsAccess(tls, g1.FpVfs, zPath, flags, pResOut)
 45046  }
 45047  
 45048  func devsymFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 45049  	return sqlite3.Xsqlite3OsFullPathname(tls, g1.FpVfs, zPath, nOut, zOut)
 45050  }
 45051  
 45052  func devsymRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 45053  	return sqlite3.Xsqlite3OsRandomness(tls, g1.FpVfs, nByte, zBufOut)
 45054  }
 45055  
 45056  func devsymSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 45057  	return sqlite3.Xsqlite3OsSleep(tls, g1.FpVfs, nMicro)
 45058  }
 45059  
 45060  func devsymCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 45061  	return (*struct {
 45062  		f func(*libc.TLS, uintptr, uintptr) int32
 45063  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FxCurrentTime})).f(tls, g1.FpVfs, pTimeOut)
 45064  }
 45065  
 45066  func writecrashSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 45067  	var p uintptr = pFile
 45068  	return sqlite3.Xsqlite3OsSectorSize(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45069  }
 45070  
 45071  func writecrashDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 45072  	var p uintptr = pFile
 45073  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal)
 45074  }
 45075  
 45076  func writecrashWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 45077  	var p uintptr = pFile
 45078  	if g1.FnWriteCrash > 0 {
 45079  		g1.FnWriteCrash--
 45080  		if g1.FnWriteCrash == 0 {
 45081  			libc.Xabort(tls)
 45082  		}
 45083  	}
 45084  	return sqlite3.Xsqlite3OsWrite(tls, (*devsym_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 45085  }
 45086  
 45087  func writecrashOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 45088  	var rc int32
 45089  	var p uintptr = pFile
 45090  	(*devsym_file)(unsafe.Pointer(p)).FpReal = p + 1*16
 45091  	rc = sqlite3.Xsqlite3OsOpen(tls, g1.FpVfs, zName, (*devsym_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 45092  	if (*sqlite3_file)(unsafe.Pointer((*devsym_file)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 45093  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&writecrash_io_methods))
 45094  	}
 45095  	return rc
 45096  }
 45097  
 45098  var writecrash_io_methods = sqlite3_io_methods{
 45099  	FiVersion:               2,
 45100  	FxClose:                 0,
 45101  	FxRead:                  0,
 45102  	FxWrite:                 0,
 45103  	FxTruncate:              0,
 45104  	FxSync:                  0,
 45105  	FxFileSize:              0,
 45106  	FxLock:                  0,
 45107  	FxUnlock:                0,
 45108  	FxCheckReservedLock:     0,
 45109  	FxFileControl:           0,
 45110  	FxSectorSize:            0,
 45111  	FxDeviceCharacteristics: 0,
 45112  	FxShmMap:                0,
 45113  	FxShmLock:               0,
 45114  	FxShmBarrier:            0,
 45115  	FxShmUnmap:              0,
 45116  }
 45117  
 45118  var devsym_vfs = sqlite3_vfs{
 45119  	FiVersion:      2,
 45120  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45121  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45122  	FzName:         ts + 30667,
 45123  	FxOpen:         0,
 45124  	FxDelete:       0,
 45125  	FxAccess:       0,
 45126  	FxFullPathname: 0,
 45127  	FxRandomness:   0,
 45128  	FxSleep:        0,
 45129  	FxCurrentTime:  0,
 45130  }
 45131  
 45132  var writecrash_vfs = sqlite3_vfs{
 45133  	FiVersion:      2,
 45134  	FszOsFile:      int32(unsafe.Sizeof(devsym_file{})),
 45135  	FmxPathname:    DEVSYM_MAX_PATHNAME,
 45136  	FzName:         ts + 30674,
 45137  	FxOpen:         0,
 45138  	FxDelete:       0,
 45139  	FxAccess:       0,
 45140  	FxFullPathname: 0,
 45141  	FxRandomness:   0,
 45142  	FxSleep:        0,
 45143  	FxCurrentTime:  0,
 45144  }
 45145  
 45146  func devsym_register(tls *libc.TLS, iDeviceChar int32, iSectorSize int32) {
 45147  	if g1.FpVfs == uintptr(0) {
 45148  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45149  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45150  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45151  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45152  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45153  	}
 45154  	if iDeviceChar >= 0 {
 45155  		g1.FiDeviceChar = iDeviceChar
 45156  	} else {
 45157  		g1.FiDeviceChar = 0
 45158  	}
 45159  	if iSectorSize >= 0 {
 45160  		g1.FiSectorSize = iSectorSize
 45161  	} else {
 45162  		g1.FiSectorSize = 512
 45163  	}
 45164  }
 45165  
 45166  func devsym_unregister(tls *libc.TLS) {
 45167  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&devsym_vfs)))
 45168  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&writecrash_vfs)))
 45169  	g1.FpVfs = uintptr(0)
 45170  	g1.FiDeviceChar = 0
 45171  	g1.FiSectorSize = 0
 45172  }
 45173  
 45174  func devsym_crash_on_write(tls *libc.TLS, nWrite int32) {
 45175  	if g1.FpVfs == uintptr(0) {
 45176  		g1.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 45177  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45178  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 4)) += (*sqlite3_vfs)(unsafe.Pointer(g1.FpVfs)).FszOsFile
 45179  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&devsym_vfs)), 0)
 45180  		sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&writecrash_vfs)), 0)
 45181  	}
 45182  	g1.FnWriteCrash = nWrite
 45183  }
 45184  
 45185  type Tcl_StatBuf = stat
 45186  
 45187  type fs_vtab1 = struct {
 45188  	Fbase sqlite3_vtab
 45189  	Fdb   uintptr
 45190  	FzDb  uintptr
 45191  	FzTbl uintptr
 45192  }
 45193  
 45194  type fs_vtab = fs_vtab1
 45195  type fs_cursor1 = struct {
 45196  	Fbase   sqlite3_vtab_cursor
 45197  	FpStmt  uintptr
 45198  	FzBuf   uintptr
 45199  	FnBuf   int32
 45200  	FnAlloc int32
 45201  }
 45202  
 45203  type fs_cursor = fs_cursor1
 45204  
 45205  type FsdirVtab1 = struct{ Fbase sqlite3_vtab }
 45206  
 45207  type FsdirVtab = FsdirVtab1
 45208  type FsdirCsr1 = struct {
 45209  	Fbase   sqlite3_vtab_cursor
 45210  	FzDir   uintptr
 45211  	FpDir   uintptr
 45212  	FiRowid sqlite3_int64
 45213  	FpEntry uintptr
 45214  }
 45215  
 45216  type FsdirCsr = FsdirCsr1
 45217  
 45218  func fsdirConnect1(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45219  	var pTab uintptr
 45220  
 45221  	if argc != 3 {
 45222  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45223  		return SQLITE_ERROR
 45224  	}
 45225  
 45226  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FsdirVtab{})))
 45227  	if !(pTab != 0) {
 45228  		return SQLITE_NOMEM
 45229  	}
 45230  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FsdirVtab{})))
 45231  
 45232  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45233  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30685)
 45234  
 45235  	return SQLITE_OK
 45236  }
 45237  
 45238  func fsdirDisconnect1(tls *libc.TLS, pVtab uintptr) int32 {
 45239  	sqlite3.Xsqlite3_free(tls, pVtab)
 45240  	return SQLITE_OK
 45241  }
 45242  
 45243  func fsdirBestIndex1(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45244  	var ii int32
 45245  
 45246  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45247  
 45248  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45249  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45250  		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 {
 45251  			var pUsage uintptr
 45252  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45253  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 45254  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45255  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45256  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45257  			break
 45258  		}
 45259  	}
 45260  
 45261  	return SQLITE_OK
 45262  }
 45263  
 45264  func fsdirOpen1(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45265  	var pCur uintptr
 45266  
 45267  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(FsdirCsr{}))+uint64(256)))
 45268  	if pCur == uintptr(0) {
 45269  		return SQLITE_NOMEM
 45270  	}
 45271  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FsdirCsr{})))
 45272  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45273  	return SQLITE_OK
 45274  }
 45275  
 45276  func fsdirClose1(tls *libc.TLS, cur uintptr) int32 {
 45277  	var pCur uintptr = cur
 45278  	if (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir != 0 {
 45279  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FpDir)
 45280  	}
 45281  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCur)).FzDir)
 45282  	sqlite3.Xsqlite3_free(tls, pCur)
 45283  	return SQLITE_OK
 45284  }
 45285  
 45286  func fsdirNext1(tls *libc.TLS, cur uintptr) int32 {
 45287  	var pCsr uintptr = cur
 45288  
 45289  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45290  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry = libc.Xreaddir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45291  		if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry == uintptr(0) {
 45292  			libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45293  			(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45294  		}
 45295  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid++
 45296  	}
 45297  
 45298  	return SQLITE_OK
 45299  }
 45300  
 45301  func fsdirFilter1(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45302  	var pCsr uintptr = pVtabCursor
 45303  	var zDir uintptr
 45304  	var nDir int32
 45305  
 45306  	if idxNum != 1 || argc != 1 {
 45307  		return SQLITE_ERROR
 45308  	}
 45309  
 45310  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 45311  	sqlite3.Xsqlite3_free(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45312  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir != 0 {
 45313  		libc.Xclosedir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir)
 45314  		(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = uintptr(0)
 45315  	}
 45316  
 45317  	zDir = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45318  	nDir = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45319  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir = sqlite3.Xsqlite3_malloc(tls, nDir+1)
 45320  	if (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir == uintptr(0) {
 45321  		return SQLITE_NOMEM
 45322  	}
 45323  	libc.Xmemcpy(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, zDir, uint64(nDir+1))
 45324  
 45325  	(*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir = libc.Xopendir(tls, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir)
 45326  	return fsdirNext1(tls, pVtabCursor)
 45327  }
 45328  
 45329  func fsdirEof1(tls *libc.TLS, cur uintptr) int32 {
 45330  	var pCsr uintptr = cur
 45331  	return libc.Bool32((*FsdirCsr)(unsafe.Pointer(pCsr)).FpDir == uintptr(0))
 45332  }
 45333  
 45334  func fsdirColumn1(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45335  	var pCsr uintptr = cur
 45336  	switch i {
 45337  	case 0:
 45338  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FzDir, -1, uintptr(0))
 45339  		break
 45340  
 45341  	case 1:
 45342  		sqlite3.Xsqlite3_result_text(tls, ctx, (*FsdirCsr)(unsafe.Pointer(pCsr)).FpEntry+24, -1, libc.UintptrFromInt32(-1))
 45343  		break
 45344  
 45345  	default:
 45346  	}
 45347  
 45348  	return SQLITE_OK
 45349  }
 45350  
 45351  func fsdirRowid1(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45352  	var pCsr uintptr = cur
 45353  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*FsdirCsr)(unsafe.Pointer(pCsr)).FiRowid
 45354  	return SQLITE_OK
 45355  }
 45356  
 45357  type FstreeVtab1 = struct {
 45358  	Fbase sqlite3_vtab
 45359  	Fdb   uintptr
 45360  }
 45361  
 45362  type FstreeVtab = FstreeVtab1
 45363  type FstreeCsr1 = struct {
 45364  	Fbase        sqlite3_vtab_cursor
 45365  	FpStmt       uintptr
 45366  	Ffd          int32
 45367  	F__ccgo_pad1 [4]byte
 45368  }
 45369  
 45370  type FstreeCsr = FstreeCsr1
 45371  
 45372  func fstreeConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45373  	var pTab uintptr
 45374  
 45375  	if argc != 3 {
 45376  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45377  		return SQLITE_ERROR
 45378  	}
 45379  
 45380  	pTab = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeVtab{})))
 45381  	if !(pTab != 0) {
 45382  		return SQLITE_NOMEM
 45383  	}
 45384  	libc.Xmemset(tls, pTab, 0, uint64(unsafe.Sizeof(FstreeVtab{})))
 45385  	(*FstreeVtab)(unsafe.Pointer(pTab)).Fdb = db
 45386  
 45387  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pTab
 45388  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30714)
 45389  
 45390  	return SQLITE_OK
 45391  }
 45392  
 45393  func fstreeDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45394  	sqlite3.Xsqlite3_free(tls, pVtab)
 45395  	return SQLITE_OK
 45396  }
 45397  
 45398  func fstreeBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45399  	var ii int32
 45400  
 45401  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45402  		var p uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45403  		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 ||
 45404  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE ||
 45405  			int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ) {
 45406  			var pUsage uintptr
 45407  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45408  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = int32((*sqlite3_index_constraint)(unsafe.Pointer(p)).Fop)
 45409  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45410  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 100000.0
 45411  			return SQLITE_OK
 45412  		}
 45413  	}
 45414  
 45415  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1000000000.0
 45416  	return SQLITE_OK
 45417  }
 45418  
 45419  func fstreeOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45420  	var pCur uintptr
 45421  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(FstreeCsr{})))
 45422  	if pCur == uintptr(0) {
 45423  		return SQLITE_NOMEM
 45424  	}
 45425  	libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(FstreeCsr{})))
 45426  	(*FstreeCsr)(unsafe.Pointer(pCur)).Ffd = -1
 45427  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45428  	return SQLITE_OK
 45429  }
 45430  
 45431  func fstreeCloseFd(tls *libc.TLS, pCsr uintptr) {
 45432  	if (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd >= 0 {
 45433  		libc.Xclose(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd)
 45434  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = -1
 45435  	}
 45436  }
 45437  
 45438  func fstreeClose(tls *libc.TLS, cur uintptr) int32 {
 45439  	var pCsr uintptr = cur
 45440  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45441  	fstreeCloseFd(tls, pCsr)
 45442  	sqlite3.Xsqlite3_free(tls, pCsr)
 45443  	return SQLITE_OK
 45444  }
 45445  
 45446  func fstreeNext(tls *libc.TLS, cur uintptr) int32 {
 45447  	var pCsr uintptr = cur
 45448  	var rc int32
 45449  
 45450  	fstreeCloseFd(tls, pCsr)
 45451  	rc = sqlite3.Xsqlite3_step(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45452  	if rc != SQLITE_ROW {
 45453  		rc = sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45454  		(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 45455  	} else {
 45456  		rc = SQLITE_OK
 45457  		(*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd = libc.Xopen(tls, sqlite3.Xsqlite3_column_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0), O_RDONLY, 0)
 45458  	}
 45459  
 45460  	return rc
 45461  }
 45462  
 45463  func fstreeFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45464  	bp := tls.Alloc(2)
 45465  	defer tls.Free(2)
 45466  
 45467  	var pCsr uintptr = pVtabCursor
 45468  	var pTab uintptr = (*FstreeCsr)(unsafe.Pointer(pCsr)).Fbase.FpVtab
 45469  	var rc int32
 45470  	var zSql uintptr = ts + 30750
 45471  	var zRoot uintptr
 45472  	var nRoot int32
 45473  	var zPrefix uintptr
 45474  	var nPrefix int32
 45475  	var zDir uintptr
 45476  	var nDir int32
 45477  	*(*[2]int8)(unsafe.Pointer(bp)) = [2]int8{int8(0), int8(0)}
 45478  
 45479  	zRoot = ts + 30982
 45480  	nRoot = 1
 45481  	zPrefix = ts + 584
 45482  	nPrefix = 0
 45483  
 45484  	zDir = zRoot
 45485  	nDir = nRoot
 45486  
 45487  	fstreeCloseFd(tls, pCsr)
 45488  	sqlite3.Xsqlite3_finalize(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt)
 45489  	(*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt = uintptr(0)
 45490  	rc = sqlite3.Xsqlite3_prepare_v2(tls, (*FstreeVtab)(unsafe.Pointer(pTab)).Fdb, zSql, -1, pCsr+8, uintptr(0))
 45491  	if rc != SQLITE_OK {
 45492  		return rc
 45493  	}
 45494  
 45495  	if idxNum != 0 {
 45496  		var zQuery uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45497  		switch idxNum {
 45498  		case SQLITE_INDEX_CONSTRAINT_GLOB:
 45499  			*(*int8)(unsafe.Pointer(bp)) = int8('*')
 45500  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('?')
 45501  			break
 45502  			fallthrough
 45503  		case SQLITE_INDEX_CONSTRAINT_LIKE:
 45504  			*(*int8)(unsafe.Pointer(bp)) = int8('_')
 45505  			*(*int8)(unsafe.Pointer(bp + 1)) = int8('%')
 45506  			break
 45507  		}
 45508  
 45509  		if sqlite3.Xsqlite3_strnicmp(tls, zQuery, zPrefix, nPrefix) == 0 {
 45510  			var i int32
 45511  			for i = nPrefix; *(*int8)(unsafe.Pointer(zQuery + uintptr(i))) != 0; i++ {
 45512  				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))) {
 45513  					break
 45514  				}
 45515  				if int32(*(*int8)(unsafe.Pointer(zQuery + uintptr(i)))) == '/' {
 45516  					nDir = i
 45517  				}
 45518  			}
 45519  			zDir = zQuery
 45520  		}
 45521  	}
 45522  	if nDir == 0 {
 45523  		nDir = 1
 45524  	}
 45525  
 45526  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 1, zDir, nDir, libc.UintptrFromInt32(-1))
 45527  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 2, zRoot, nRoot, libc.UintptrFromInt32(-1))
 45528  	sqlite3.Xsqlite3_bind_text(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 3, zPrefix, nPrefix, libc.UintptrFromInt32(-1))
 45529  
 45530  	return fstreeNext(tls, pVtabCursor)
 45531  }
 45532  
 45533  func fstreeEof(tls *libc.TLS, cur uintptr) int32 {
 45534  	var pCsr uintptr = cur
 45535  	return libc.Bool32((*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt == uintptr(0))
 45536  }
 45537  
 45538  func fstreeColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45539  	bp := tls.Alloc(128)
 45540  	defer tls.Free(128)
 45541  
 45542  	var pCsr uintptr = cur
 45543  	if i == 0 {
 45544  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).FpStmt, 0))
 45545  	} else {
 45546  		libc.Xfstat(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, bp)
 45547  
 45548  		if (*stat)(unsafe.Pointer(bp)).Fst_mode&mode_t(0170000) == mode_t(0100000) {
 45549  			if i == 1 {
 45550  				sqlite3.Xsqlite3_result_int64(tls, ctx, (*stat)(unsafe.Pointer(bp)).Fst_size)
 45551  			} else {
 45552  				var nRead int32
 45553  				var aBuf uintptr = sqlite3.Xsqlite3_malloc(tls, int32((*stat)(unsafe.Pointer(bp)).Fst_mode+mode_t(1)))
 45554  				if !(aBuf != 0) {
 45555  					return SQLITE_NOMEM
 45556  				}
 45557  				nRead = int32(libc.Xread(tls, (*FstreeCsr)(unsafe.Pointer(pCsr)).Ffd, aBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_mode)))
 45558  				if mode_t(nRead) != (*stat)(unsafe.Pointer(bp)).Fst_mode {
 45559  					return SQLITE_IOERR
 45560  				}
 45561  				sqlite3.Xsqlite3_result_blob(tls, ctx, aBuf, nRead, libc.UintptrFromInt32(-1))
 45562  				sqlite3.Xsqlite3_free(tls, aBuf)
 45563  			}
 45564  		}
 45565  	}
 45566  
 45567  	return SQLITE_OK
 45568  }
 45569  
 45570  func fstreeRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45571  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 45572  	return SQLITE_OK
 45573  }
 45574  
 45575  func fsConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 45576  	var pVtab uintptr
 45577  	var nByte int32
 45578  	var zTbl uintptr
 45579  	var zDb uintptr = *(*uintptr)(unsafe.Pointer(argv + 1*8))
 45580  
 45581  	if argc != 4 {
 45582  		*(*uintptr)(unsafe.Pointer(pzErr)) = sqlite3.Xsqlite3_mprintf(tls, ts+28324, 0)
 45583  		return SQLITE_ERROR
 45584  	}
 45585  	zTbl = *(*uintptr)(unsafe.Pointer(argv + 3*8))
 45586  
 45587  	nByte = int32(uint64(unsafe.Sizeof(fs_vtab{})) + uint64(int32(libc.Xstrlen(tls, zTbl))) + uint64(1) + uint64(int32(libc.Xstrlen(tls, zDb))) + uint64(1))
 45588  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(nByte))
 45589  	if !(pVtab != 0) {
 45590  		return SQLITE_NOMEM
 45591  	}
 45592  
 45593  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl = pVtab + 1*48
 45594  	(*fs_vtab)(unsafe.Pointer(pVtab)).FzDb = (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl + uintptr(libc.Xstrlen(tls, zTbl)+uint64(1))
 45595  	(*fs_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 45596  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzTbl, zTbl, libc.Xstrlen(tls, zTbl))
 45597  	libc.Xmemcpy(tls, (*fs_vtab)(unsafe.Pointer(pVtab)).FzDb, zDb, libc.Xstrlen(tls, zDb))
 45598  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 45599  	sqlite3.Xsqlite3_declare_vtab(tls, db, ts+30984)
 45600  
 45601  	return SQLITE_OK
 45602  }
 45603  
 45604  func fsDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 45605  	sqlite3.Xsqlite3_free(tls, pVtab)
 45606  	return SQLITE_OK
 45607  }
 45608  
 45609  func fsOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 45610  	var pCur uintptr
 45611  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(fs_cursor{})))
 45612  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 45613  	return SQLITE_OK
 45614  }
 45615  
 45616  func fsClose(tls *libc.TLS, cur uintptr) int32 {
 45617  	var pCur uintptr = cur
 45618  	sqlite3.Xsqlite3_finalize(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45619  	sqlite3.Xsqlite3_free(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf)
 45620  	sqlite3.Xsqlite3_free(tls, pCur)
 45621  	return SQLITE_OK
 45622  }
 45623  
 45624  func fsNext(tls *libc.TLS, cur uintptr) int32 {
 45625  	var pCur uintptr = cur
 45626  	var rc int32
 45627  
 45628  	rc = sqlite3.Xsqlite3_step(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt)
 45629  	if rc == SQLITE_ROW || rc == SQLITE_DONE {
 45630  		rc = SQLITE_OK
 45631  	}
 45632  
 45633  	return rc
 45634  }
 45635  
 45636  func fsFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 45637  	bp := tls.Alloc(32)
 45638  	defer tls.Free(32)
 45639  
 45640  	var rc int32
 45641  	var pCur uintptr = pVtabCursor
 45642  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 45643  
 45644  	if idxNum == 1 {
 45645  		var zStmt uintptr = sqlite3.Xsqlite3_mprintf(tls,
 45646  			ts+31021, libc.VaList(bp, (*fs_vtab)(unsafe.Pointer(p)).FzDb, (*fs_vtab)(unsafe.Pointer(p)).FzTbl))
 45647  		if !(zStmt != 0) {
 45648  			return SQLITE_NOMEM
 45649  		}
 45650  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 45651  		sqlite3.Xsqlite3_free(tls, zStmt)
 45652  		if rc == SQLITE_OK {
 45653  			sqlite3.Xsqlite3_bind_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1, *(*uintptr)(unsafe.Pointer(argv)))
 45654  		}
 45655  	} else {
 45656  		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))
 45657  		if !(zStmt != 0) {
 45658  			return SQLITE_NOMEM
 45659  		}
 45660  		rc = sqlite3.Xsqlite3_prepare_v2(tls, (*fs_vtab)(unsafe.Pointer(p)).Fdb, zStmt, -1, pCur+8, uintptr(0))
 45661  		sqlite3.Xsqlite3_free(tls, zStmt)
 45662  	}
 45663  
 45664  	if rc == SQLITE_OK {
 45665  		rc = fsNext(tls, pVtabCursor)
 45666  	}
 45667  	return rc
 45668  }
 45669  
 45670  func fsColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 45671  	bp := tls.Alloc(128)
 45672  	defer tls.Free(128)
 45673  
 45674  	var pCur uintptr = cur
 45675  
 45676  	if i == 0 {
 45677  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0))
 45678  	} else {
 45679  		var zFile uintptr = sqlite3.Xsqlite3_column_text(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 1)
 45680  
 45681  		var fd int32
 45682  		var n int32
 45683  		fd = libc.Xopen(tls, zFile, O_RDONLY, 0)
 45684  		if fd < 0 {
 45685  			return SQLITE_IOERR
 45686  		}
 45687  		libc.Xfstat(tls, fd, bp)
 45688  
 45689  		if (*stat)(unsafe.Pointer(bp)).Fst_size >= off_t((*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc) {
 45690  			var nNew sqlite3_int64 = (*stat)(unsafe.Pointer(bp)).Fst_size * int64(2)
 45691  			var zNew uintptr
 45692  			if nNew < int64(1024) {
 45693  				nNew = int64(1024)
 45694  			}
 45695  
 45696  			zNew = sqlite3.Xsqlite3Realloc(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64(nNew))
 45697  			if zNew == uintptr(0) {
 45698  				libc.Xclose(tls, fd)
 45699  				return SQLITE_NOMEM
 45700  			}
 45701  			(*fs_cursor)(unsafe.Pointer(pCur)).FzBuf = zNew
 45702  			(*fs_cursor)(unsafe.Pointer(pCur)).FnAlloc = int32(nNew)
 45703  		}
 45704  
 45705  		n = int32(libc.Xread(tls, fd, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, uint64((*stat)(unsafe.Pointer(bp)).Fst_size)))
 45706  		libc.Xclose(tls, fd)
 45707  		if off_t(n) != (*stat)(unsafe.Pointer(bp)).Fst_size {
 45708  			return SQLITE_ERROR
 45709  		}
 45710  		(*fs_cursor)(unsafe.Pointer(pCur)).FnBuf = int32((*stat)(unsafe.Pointer(bp)).Fst_size)
 45711  		*(*int8)(unsafe.Pointer((*fs_cursor)(unsafe.Pointer(pCur)).FzBuf + uintptr((*fs_cursor)(unsafe.Pointer(pCur)).FnBuf))) = int8(0)
 45712  
 45713  		sqlite3.Xsqlite3_result_text(tls, ctx, (*fs_cursor)(unsafe.Pointer(pCur)).FzBuf, -1, libc.UintptrFromInt32(-1))
 45714  	}
 45715  	return SQLITE_OK
 45716  }
 45717  
 45718  func fsRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 45719  	var pCur uintptr = cur
 45720  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite3.Xsqlite3_column_int64(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt, 0)
 45721  	return SQLITE_OK
 45722  }
 45723  
 45724  func fsEof(tls *libc.TLS, cur uintptr) int32 {
 45725  	var pCur uintptr = cur
 45726  	return libc.Bool32(sqlite3.Xsqlite3_data_count(tls, (*fs_cursor)(unsafe.Pointer(pCur)).FpStmt) == 0)
 45727  }
 45728  
 45729  func fsBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 45730  	var ii int32
 45731  
 45732  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 45733  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 45734  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn < 0 && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 &&
 45735  			int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ {
 45736  			var pUsage uintptr
 45737  			pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 45738  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 45739  			(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = 1
 45740  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxNum = 1
 45741  			(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 1.0
 45742  			break
 45743  		}
 45744  	}
 45745  
 45746  	return SQLITE_OK
 45747  }
 45748  
 45749  var fsModule = sqlite3_module{
 45750  	FxCreate:     0,
 45751  	FxConnect:    0,
 45752  	FxBestIndex:  0,
 45753  	FxDisconnect: 0,
 45754  	FxDestroy:    0,
 45755  	FxOpen:       0,
 45756  	FxClose:      0,
 45757  	FxFilter:     0,
 45758  	FxNext:       0,
 45759  	FxEof:        0,
 45760  	FxColumn:     0,
 45761  	FxRowid:      0,
 45762  }
 45763  
 45764  var fsdirModule = sqlite3_module{
 45765  	FxCreate:     0,
 45766  	FxConnect:    0,
 45767  	FxBestIndex:  0,
 45768  	FxDisconnect: 0,
 45769  	FxDestroy:    0,
 45770  	FxOpen:       0,
 45771  	FxClose:      0,
 45772  	FxFilter:     0,
 45773  	FxNext:       0,
 45774  	FxEof:        0,
 45775  	FxColumn:     0,
 45776  	FxRowid:      0,
 45777  }
 45778  
 45779  var fstreeModule = sqlite3_module{
 45780  	FxCreate:     0,
 45781  	FxConnect:    0,
 45782  	FxBestIndex:  0,
 45783  	FxDisconnect: 0,
 45784  	FxDestroy:    0,
 45785  	FxOpen:       0,
 45786  	FxClose:      0,
 45787  	FxFilter:     0,
 45788  	FxNext:       0,
 45789  	FxEof:        0,
 45790  	FxColumn:     0,
 45791  	FxRowid:      0,
 45792  }
 45793  
 45794  func register_fs_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 45795  	bp := tls.Alloc(8)
 45796  	defer tls.Free(8)
 45797  
 45798  	if objc != 2 {
 45799  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 45800  		return TCL_ERROR
 45801  	}
 45802  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 45803  		return TCL_ERROR
 45804  	}
 45805  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31055, uintptr(unsafe.Pointer(&fsModule)), interp)
 45806  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+5325, uintptr(unsafe.Pointer(&fsdirModule)), uintptr(0))
 45807  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+31058, uintptr(unsafe.Pointer(&fstreeModule)), uintptr(0))
 45808  	return TCL_OK
 45809  }
 45810  
 45811  func Sqlitetestfs_Init(tls *libc.TLS, interp uintptr) int32 {
 45812  	var i int32
 45813  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd6))/uint64(unsafe.Sizeof(struct {
 45814  		FzName      uintptr
 45815  		FxProc      uintptr
 45816  		FclientData uintptr
 45817  	}{})); i++ {
 45818  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd6[i].FzName,
 45819  			aObjCmd6[i].FxProc, aObjCmd6[i].FclientData, uintptr(0))
 45820  	}
 45821  	return TCL_OK
 45822  }
 45823  
 45824  var aObjCmd6 = [1]struct {
 45825  	FzName      uintptr
 45826  	FxProc      uintptr
 45827  	FclientData uintptr
 45828  }{
 45829  	{FzName: ts + 31065, FxProc: 0},
 45830  }
 45831  
 45832  func testContextMalloc(tls *libc.TLS, context uintptr, nByte int32) uintptr {
 45833  	var z uintptr = sqlite3.Xsqlite3_malloc(tls, nByte)
 45834  	if !(z != 0) && nByte > 0 {
 45835  		sqlite3.Xsqlite3_result_error_nomem(tls, context)
 45836  	}
 45837  	return z
 45838  }
 45839  
 45840  func randStr(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 45841  	bp := tls.Alloc(1004)
 45842  	defer tls.Free(1004)
 45843  
 45844  	var iMin int32
 45845  	var iMax int32
 45846  	var n int32
 45847  
 45848  	var i int32
 45849  
 45850  	iMin = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45851  	if iMin < 0 {
 45852  		iMin = 0
 45853  	}
 45854  	if uint64(iMin) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 45855  		iMin = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 45856  	}
 45857  	iMax = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 45858  	if iMax < iMin {
 45859  		iMax = iMin
 45860  	}
 45861  	if uint64(iMax) >= uint64(unsafe.Sizeof([1000]uint8{})) {
 45862  		iMax = int32(uint64(unsafe.Sizeof([1000]uint8{})) - uint64(1))
 45863  	}
 45864  	n = iMin
 45865  	if iMax > iMin {
 45866  		sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(int32(0))), bp)
 45867  		*(*int32)(unsafe.Pointer(bp)) &= 0x7fffffff
 45868  		n = n + *(*int32)(unsafe.Pointer(bp))%(iMax+1-iMin)
 45869  	}
 45870  
 45871  	sqlite3.Xsqlite3_randomness(tls, n, bp+4)
 45872  	for i = 0; i < n; i++ {
 45873  		*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))) = zSrc[uint64(*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(i))))%(uint64(unsafe.Sizeof(zSrc))-uint64(1))]
 45874  	}
 45875  	*(*uint8)(unsafe.Pointer(bp + 4 + uintptr(n))) = uint8(0)
 45876  	sqlite3.Xsqlite3_result_text(tls, context, bp+4, n, libc.UintptrFromInt32(-1))
 45877  }
 45878  
 45879  var zSrc = *(*[79]uint8)(unsafe.Pointer(ts + 31084))
 45880  
 45881  var test_destructor_count_var int32 = 0
 45882  
 45883  func destructor(tls *libc.TLS, p uintptr) {
 45884  	var zVal uintptr = p
 45885  
 45886  	zVal--
 45887  	sqlite3.Xsqlite3_free(tls, zVal)
 45888  	test_destructor_count_var--
 45889  }
 45890  
 45891  func test_destructor(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45892  	var zVal uintptr
 45893  	var len int32
 45894  
 45895  	test_destructor_count_var++
 45896  
 45897  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 45898  		return
 45899  	}
 45900  	len = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45901  	zVal = testContextMalloc(tls, pCtx, len+3)
 45902  	if !(zVal != 0) {
 45903  		return
 45904  	}
 45905  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 45906  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 45907  	zVal++
 45908  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 45909  	sqlite3.Xsqlite3_result_text(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 45910  }
 45911  
 45912  func test_destructor16(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45913  	var zVal uintptr
 45914  	var len int32
 45915  
 45916  	test_destructor_count_var++
 45917  
 45918  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 45919  		return
 45920  	}
 45921  	len = sqlite3.Xsqlite3_value_bytes16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45922  	zVal = testContextMalloc(tls, pCtx, len+3)
 45923  	if !(zVal != 0) {
 45924  		return
 45925  	}
 45926  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+1))) = int8(0)
 45927  	*(*int8)(unsafe.Pointer(zVal + uintptr(len+2))) = int8(0)
 45928  	zVal++
 45929  	libc.Xmemcpy(tls, zVal, sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv))), uint64(len))
 45930  	sqlite3.Xsqlite3_result_text16(tls, pCtx, zVal, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{destructor})))
 45931  }
 45932  
 45933  func test_destructor_count(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45934  	sqlite3.Xsqlite3_result_int(tls, pCtx, test_destructor_count_var)
 45935  }
 45936  
 45937  func test_agg_errmsg16_step(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 45938  }
 45939  
 45940  func test_agg_errmsg16_final(tls *libc.TLS, ctx uintptr) {
 45941  	var z uintptr
 45942  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, ctx)
 45943  	sqlite3.Xsqlite3_aggregate_context(tls, ctx, 2048)
 45944  	z = sqlite3.Xsqlite3_errmsg16(tls, db)
 45945  	sqlite3.Xsqlite3_result_text16(tls, ctx, z, -1, libc.UintptrFromInt32(-1))
 45946  }
 45947  
 45948  func free_test_auxdata(tls *libc.TLS, p uintptr) {
 45949  	sqlite3.Xsqlite3_free(tls, p)
 45950  }
 45951  
 45952  func test_auxdata(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45953  	var i int32
 45954  	var zRet uintptr = testContextMalloc(tls, pCtx, nArg*2)
 45955  	if !(zRet != 0) {
 45956  		return
 45957  	}
 45958  	libc.Xmemset(tls, zRet, 0, uint64(nArg*2))
 45959  	for i = 0; i < nArg; i++ {
 45960  		var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 45961  		if z != 0 {
 45962  			var n int32
 45963  			var zAux uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, i)
 45964  			if zAux != 0 {
 45965  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('1')
 45966  
 45967  			} else {
 45968  				*(*int8)(unsafe.Pointer(zRet + uintptr(i*2))) = int8('0')
 45969  			}
 45970  			n = int32(libc.Xstrlen(tls, z)) + 1
 45971  			zAux = testContextMalloc(tls, pCtx, n)
 45972  			if zAux != 0 {
 45973  				libc.Xmemcpy(tls, zAux, z, uint64(n))
 45974  				sqlite3.Xsqlite3_set_auxdata(tls, pCtx, i, zAux, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 45975  			}
 45976  			*(*int8)(unsafe.Pointer(zRet + uintptr(i*2+1))) = int8(' ')
 45977  		}
 45978  	}
 45979  	sqlite3.Xsqlite3_result_text(tls, pCtx, zRet, 2*nArg-1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{free_test_auxdata})))
 45980  }
 45981  
 45982  func test_error(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45983  	sqlite3.Xsqlite3_result_error(tls, pCtx, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv))), -1)
 45984  	if nArg == 2 {
 45985  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))))
 45986  	}
 45987  }
 45988  
 45989  func counterFunc(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 45990  	var pCounter uintptr = sqlite3.Xsqlite3_get_auxdata(tls, pCtx, 0)
 45991  	if pCounter == uintptr(0) {
 45992  		pCounter = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(int32(0))))
 45993  		if pCounter == uintptr(0) {
 45994  			sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 45995  			return
 45996  		}
 45997  		*(*int32)(unsafe.Pointer(pCounter)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 45998  		sqlite3.Xsqlite3_set_auxdata(tls, pCtx, 0, pCounter, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 45999  	} else {
 46000  		*(*int32)(unsafe.Pointer(pCounter))++
 46001  	}
 46002  	sqlite3.Xsqlite3_result_int(tls, pCtx, *(*int32)(unsafe.Pointer(pCounter)))
 46003  }
 46004  
 46005  func test_isolation(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46006  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46007  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46008  	sqlite3.Xsqlite3_value_text16(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46009  	sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46010  	sqlite3.Xsqlite3_result_value(tls, pCtx, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46011  }
 46012  
 46013  func test_eval(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46014  	bp := tls.Alloc(16)
 46015  	defer tls.Free(16)
 46016  
 46017  	var rc int32
 46018  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, pCtx)
 46019  	var zSql uintptr
 46020  
 46021  	zSql = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46022  	rc = sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, -1, bp+8, uintptr(0))
 46023  	if rc == SQLITE_OK {
 46024  		rc = sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46025  		if rc == SQLITE_ROW {
 46026  			sqlite3.Xsqlite3_result_value(tls, pCtx, sqlite3.Xsqlite3_column_value(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0))
 46027  		}
 46028  		rc = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp + 8)))
 46029  	}
 46030  	if rc != 0 {
 46031  		var zErr uintptr
 46032  
 46033  		zErr = sqlite3.Xsqlite3_mprintf(tls, ts+31163, libc.VaList(bp, sqlite3.Xsqlite3_errmsg(tls, db)))
 46034  		sqlite3.Xsqlite3_result_text(tls, pCtx, zErr, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46035  		sqlite3.Xsqlite3_result_error_code(tls, pCtx, rc)
 46036  	}
 46037  }
 46038  
 46039  func testHexChar(tls *libc.TLS, c int8) int32 {
 46040  	if int32(c) >= '0' && int32(c) <= '9' {
 46041  		return int32(c) - '0'
 46042  	} else if int32(c) >= 'a' && int32(c) <= 'f' {
 46043  		return int32(c) - 'a' + 10
 46044  	} else if int32(c) >= 'A' && int32(c) <= 'F' {
 46045  		return int32(c) - 'A' + 10
 46046  	}
 46047  	return 0
 46048  }
 46049  
 46050  func testHexToBin(tls *libc.TLS, zIn uintptr, zOut uintptr) {
 46051  	for *(*int8)(unsafe.Pointer(zIn)) != 0 && *(*int8)(unsafe.Pointer(zIn + 1)) != 0 {
 46052  		*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zOut, 1))) = int8(testHexChar(tls, *(*int8)(unsafe.Pointer(zIn)))<<4 + testHexChar(tls, *(*int8)(unsafe.Pointer(zIn + 1))))
 46053  		zIn += uintptr(2)
 46054  	}
 46055  }
 46056  
 46057  func testHexToUtf16be(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46058  	var n int32
 46059  	var zIn uintptr
 46060  	var zOut uintptr
 46061  
 46062  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46063  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46064  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46065  	if zOut == uintptr(0) {
 46066  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46067  	} else {
 46068  		testHexToBin(tls, zIn, zOut)
 46069  		sqlite3.Xsqlite3_result_text16be(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46070  	}
 46071  }
 46072  
 46073  func testHexToUtf8(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46074  	var n int32
 46075  	var zIn uintptr
 46076  	var zOut uintptr
 46077  
 46078  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46079  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46080  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46081  	if zOut == uintptr(0) {
 46082  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46083  	} else {
 46084  		testHexToBin(tls, zIn, zOut)
 46085  		sqlite3.Xsqlite3_result_text(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46086  	}
 46087  }
 46088  
 46089  func testHexToUtf16le(tls *libc.TLS, pCtx uintptr, nArg int32, argv uintptr) {
 46090  	var n int32
 46091  	var zIn uintptr
 46092  	var zOut uintptr
 46093  
 46094  	n = sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46095  	zIn = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46096  	zOut = sqlite3.Xsqlite3_malloc(tls, n/2)
 46097  	if zOut == uintptr(0) {
 46098  		sqlite3.Xsqlite3_result_error_nomem(tls, pCtx)
 46099  	} else {
 46100  		testHexToBin(tls, zIn, zOut)
 46101  		sqlite3.Xsqlite3_result_text16le(tls, pCtx, zOut, n/2, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 46102  	}
 46103  }
 46104  
 46105  func real2hex(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46106  	bp := tls.Alloc(28)
 46107  	defer tls.Free(28)
 46108  
 46109  	var i int32
 46110  	var bigEndian int32
 46111  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(1)
 46112  	bigEndian = libc.Bool32(int32(*(*uint8)(unsafe.Pointer(bp))) == 0)
 46113  	*(*float64)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46114  	for i = 0; i < 8; i++ {
 46115  		if bigEndian != 0 {
 46116  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46117  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46118  		} else {
 46119  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))>>4)))
 46120  			*(*int8)(unsafe.Pointer(bp + 8 + uintptr(14-i*2+1))) = *(*int8)(unsafe.Pointer(ts + 31194 + uintptr(int32(*(*uint8)(unsafe.Pointer(bp + uintptr(i))))&0xf)))
 46121  		}
 46122  	}
 46123  	*(*int8)(unsafe.Pointer(bp + 8 + 16)) = int8(0)
 46124  	sqlite3.Xsqlite3_result_text(tls, context, bp+8, -1, libc.UintptrFromInt32(-1))
 46125  }
 46126  
 46127  func test_extract(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46128  	bp := tls.Alloc(72)
 46129  	defer tls.Free(72)
 46130  
 46131  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46132  	var pRec uintptr
 46133  	var pEndHdr uintptr
 46134  	var pHdr uintptr
 46135  	var pBody uintptr
 46136  
 46137  	var iIdx int32
 46138  	var iCurrent int32 = 0
 46139  
 46140  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46141  	iIdx = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 46142  
 46143  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp))
 46144  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp))))
 46145  
 46146  	for iCurrent = 0; pHdr < pEndHdr && iCurrent <= iIdx; iCurrent++ {
 46147  		libc.Xmemset(tls, bp+8, 0, uint64(unsafe.Sizeof(Mem{})))
 46148  		(*Mem)(unsafe.Pointer(bp + 8)).Fdb = db
 46149  		(*Mem)(unsafe.Pointer(bp + 8)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46150  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+64))
 46151  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 64))), bp+8)
 46152  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 64)))))
 46153  
 46154  		if iCurrent == iIdx {
 46155  			sqlite3.Xsqlite3_result_value(tls, context, bp+8)
 46156  		}
 46157  
 46158  		if (*Mem)(unsafe.Pointer(bp+8)).FszMalloc != 0 {
 46159  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+8)).FzMalloc)
 46160  		}
 46161  	}
 46162  }
 46163  
 46164  func test_decode(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46165  	bp := tls.Alloc(123)
 46166  	defer tls.Free(123)
 46167  
 46168  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 46169  	var pRec uintptr
 46170  	var pEndHdr uintptr
 46171  	var pHdr uintptr
 46172  	var pBody uintptr
 46173  
 46174  	var pRet uintptr
 46175  
 46176  	pRet = tcl.XTcl_NewObj(tls)
 46177  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 46178  
 46179  	pRec = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46180  
 46181  	pHdr = pRec + uintptr(sqlite3.Xsqlite3GetVarint(tls, pRec, bp+32))
 46182  	pBody = libc.AssignUintptr(&pEndHdr, pRec+uintptr(*(*u64)(unsafe.Pointer(bp + 32))))
 46183  	for pHdr < pEndHdr {
 46184  		var pVal uintptr = uintptr(0)
 46185  
 46186  		libc.Xmemset(tls, bp+40, 0, uint64(unsafe.Sizeof(Mem{})))
 46187  		(*Mem)(unsafe.Pointer(bp + 40)).Fdb = db
 46188  		(*Mem)(unsafe.Pointer(bp + 40)).Fenc = (*sqlite31)(unsafe.Pointer(db)).Fenc
 46189  		pHdr += uintptr(sqlite3.Xsqlite3GetVarint(tls, pHdr, bp+96))
 46190  		sqlite3.Xsqlite3VdbeSerialGet(tls, pBody, u32(*(*u64)(unsafe.Pointer(bp + 96))), bp+40)
 46191  		pBody += uintptr(sqlite3.Xsqlite3VdbeSerialTypeLen(tls, u32(*(*u64)(unsafe.Pointer(bp + 96)))))
 46192  
 46193  		switch sqlite3.Xsqlite3_value_type(tls, bp+40) {
 46194  		case SQLITE_TEXT:
 46195  			pVal = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, bp+40), -1)
 46196  			break
 46197  
 46198  		case SQLITE_BLOB:
 46199  			{
 46200  				*(*[16]int8)(unsafe.Pointer(bp + 107)) = [16]int8{
 46201  					int8('0'), int8('1'), int8('2'), int8('3'), int8('4'), int8('5'), int8('6'), int8('7'),
 46202  					int8('8'), int8('9'), int8('a'), int8('b'), int8('c'), int8('d'), int8('e'), int8('f'),
 46203  				}
 46204  				var n int32 = sqlite3.Xsqlite3_value_bytes(tls, bp+40)
 46205  				var z uintptr = sqlite3.Xsqlite3_value_blob(tls, bp+40)
 46206  				var i int32
 46207  				pVal = tcl.XTcl_NewStringObj(tls, ts+6334, -1)
 46208  				for i = 0; i < n; i++ {
 46209  					*(*int8)(unsafe.Pointer(bp + 104)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))>>4&0x0F)))
 46210  					*(*int8)(unsafe.Pointer(bp + 104 + 1)) = *(*int8)(unsafe.Pointer(bp + 107 + uintptr(int32(*(*u8)(unsafe.Pointer(z + uintptr(i))))&0x0F)))
 46211  					*(*int8)(unsafe.Pointer(bp + 104 + 2)) = int8(0)
 46212  					tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp, bp+104, 0))
 46213  				}
 46214  				tcl.XTcl_AppendStringsToObj(tls, pVal, libc.VaList(bp+16, ts+5624, 0))
 46215  				break
 46216  
 46217  			}
 46218  
 46219  		case SQLITE_FLOAT:
 46220  			pVal = tcl.XTcl_NewDoubleObj(tls, sqlite3.Xsqlite3_value_double(tls, bp+40))
 46221  			break
 46222  
 46223  		case SQLITE_INTEGER:
 46224  			pVal = tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_value_int64(tls, bp+40))
 46225  			break
 46226  
 46227  		case SQLITE_NULL:
 46228  			pVal = tcl.XTcl_NewStringObj(tls, ts+5846, -1)
 46229  			break
 46230  
 46231  		default:
 46232  		}
 46233  
 46234  		tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRet, pVal)
 46235  
 46236  		if (*Mem)(unsafe.Pointer(bp+40)).FszMalloc != 0 {
 46237  			sqlite3.Xsqlite3DbFree(tls, db, (*Mem)(unsafe.Pointer(bp+40)).FzMalloc)
 46238  		}
 46239  	}
 46240  
 46241  	sqlite3.Xsqlite3_result_text(tls, context, tcl.XTcl_GetString(tls, pRet), -1, libc.UintptrFromInt32(-1))
 46242  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 46243  		var _objPtr uintptr = pRet
 46244  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 46245  			tcl.XTclFreeObj(tls, _objPtr)
 46246  		}
 46247  	}
 46248  }
 46249  
 46250  func test_zeroblob(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46251  	var nZero int32 = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 46252  	sqlite3.Xsqlite3_result_zeroblob(tls, context, nZero)
 46253  }
 46254  
 46255  func test_getsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46256  	sqlite3.Xsqlite3_result_int(tls, context, int32(sqlite3.Xsqlite3_value_subtype(tls, *(*uintptr)(unsafe.Pointer(argv)))))
 46257  }
 46258  
 46259  func test_frombind(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46260  	var m sqlite3_uint64 = uint64(0)
 46261  	var i int32
 46262  	for i = 0; i < argc && i < 63; i++ {
 46263  		if sqlite3.Xsqlite3_value_frombind(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8))) != 0 {
 46264  			m = m | uint64(1)<<i
 46265  		}
 46266  	}
 46267  	sqlite3.Xsqlite3_result_int64(tls, context, sqlite3_int64(m))
 46268  }
 46269  
 46270  func test_setsubtype(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 46271  	sqlite3.Xsqlite3_result_value(tls, context, *(*uintptr)(unsafe.Pointer(argv)))
 46272  	sqlite3.Xsqlite3_result_subtype(tls, context, uint32(sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 46273  }
 46274  
 46275  func registerTestFunctions(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 46276  	var i int32
 46277  
 46278  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aFuncs))/uint64(unsafe.Sizeof(struct {
 46279  		FzName       uintptr
 46280  		FnArg        int8
 46281  		F__ccgo_pad1 [3]byte
 46282  		FeTextRep    uint32
 46283  		FxFunc       uintptr
 46284  	}{})); i++ {
 46285  		sqlite3.Xsqlite3_create_function(tls, db, aFuncs[i].FzName, int32(aFuncs[i].FnArg),
 46286  			int32(aFuncs[i].FeTextRep), uintptr(0), aFuncs[i].FxFunc, uintptr(0), uintptr(0))
 46287  	}
 46288  
 46289  	sqlite3.Xsqlite3_create_function(tls, db, ts+31211, 0, SQLITE_ANY, uintptr(0), uintptr(0),
 46290  		*(*uintptr)(unsafe.Pointer(&struct {
 46291  			f func(*libc.TLS, uintptr, int32, uintptr)
 46292  		}{test_agg_errmsg16_step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{test_agg_errmsg16_final})))
 46293  
 46294  	return SQLITE_OK
 46295  }
 46296  
 46297  var aFuncs = [20]struct {
 46298  	FzName       uintptr
 46299  	FnArg        int8
 46300  	F__ccgo_pad1 [3]byte
 46301  	FeTextRep    uint32
 46302  	FxFunc       uintptr
 46303  }{
 46304  	{FzName: ts + 31229, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46305  	{FzName: ts + 31237, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46306  	{FzName: ts + 31253, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46307  	{FzName: ts + 31271, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46308  	{FzName: ts + 31286, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46309  	{FzName: ts + 31301, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46310  	{FzName: ts + 31313, FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46311  	{FzName: ts + 31335, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46312  	{FzName: ts + 31348, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46313  	{FzName: ts + 31348, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46314  	{FzName: ts + 31359, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46315  	{FzName: ts + 31369, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46316  	{FzName: ts + 31384, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46317  	{FzName: ts + 31397, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46318  	{FzName: ts + 31406, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46319  	{FzName: ts + 31418, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46320  	{FzName: ts + 31431, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8 | SQLITE_DETERMINISTIC), FxFunc: 0},
 46321  	{FzName: ts + 31445, FnArg: int8(1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46322  	{FzName: ts + 31461, FnArg: int8(2), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46323  	{FzName: ts + 31477, FnArg: int8(-1), FeTextRep: uint32(SQLITE_UTF8), FxFunc: 0},
 46324  }
 46325  
 46326  func autoinstall_test_funcs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46327  	var rc int32 = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46328  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46329  	}{registerTestFunctions})))
 46330  	if rc == SQLITE_OK {
 46331  		rc = sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46332  			f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46333  		}{Md5_Register})))
 46334  	}
 46335  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 46336  	return TCL_OK
 46337  }
 46338  
 46339  func tStep(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 46340  }
 46341  
 46342  func tFinal(tls *libc.TLS, a uintptr) {
 46343  }
 46344  
 46345  func abuse_create_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46346  	bp := tls.Alloc(24)
 46347  	defer tls.Free(24)
 46348  
 46349  	var rc int32
 46350  	var mxArg int32
 46351  
 46352  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0) {
 46353  		goto __1
 46354  	}
 46355  	return TCL_ERROR
 46356  __1:
 46357  	;
 46358  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46359  		f func(*libc.TLS, uintptr, int32, uintptr)
 46360  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46361  		f func(*libc.TLS, uintptr, int32, uintptr)
 46362  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46363  	if !(rc != SQLITE_MISUSE) {
 46364  		goto __2
 46365  	}
 46366  	goto abuse_err
 46367  __2:
 46368  	;
 46369  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46370  		f func(*libc.TLS, uintptr, int32, uintptr)
 46371  	}{tStep})), *(*uintptr)(unsafe.Pointer(&struct {
 46372  		f func(*libc.TLS, uintptr, int32, uintptr)
 46373  	}{tStep})), uintptr(0))
 46374  	if !(rc != SQLITE_MISUSE) {
 46375  		goto __3
 46376  	}
 46377  	goto abuse_err
 46378  __3:
 46379  	;
 46380  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46381  		f func(*libc.TLS, uintptr, int32, uintptr)
 46382  	}{tStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tFinal})))
 46383  	if !(rc != SQLITE_MISUSE) {
 46384  		goto __4
 46385  	}
 46386  	goto abuse_err
 46387  __4:
 46388  	;
 46389  	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})))
 46390  	if !(rc != SQLITE_MISUSE) {
 46391  		goto __5
 46392  	}
 46393  	goto abuse_err
 46394  __5:
 46395  	;
 46396  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 1, SQLITE_UTF8, uintptr(0), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46397  		f func(*libc.TLS, uintptr, int32, uintptr)
 46398  	}{tStep})), uintptr(0))
 46399  	if !(rc != SQLITE_MISUSE) {
 46400  		goto __6
 46401  	}
 46402  	goto abuse_err
 46403  __6:
 46404  	;
 46405  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, -2, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46406  		f func(*libc.TLS, uintptr, int32, uintptr)
 46407  	}{tStep})), uintptr(0), uintptr(0))
 46408  	if !(rc != SQLITE_MISUSE) {
 46409  		goto __7
 46410  	}
 46411  	goto abuse_err
 46412  __7:
 46413  	;
 46414  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), ts+31491, 128, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46415  		f func(*libc.TLS, uintptr, int32, uintptr)
 46416  	}{tStep})), uintptr(0), uintptr(0))
 46417  	if !(rc != SQLITE_MISUSE) {
 46418  		goto __8
 46419  	}
 46420  	goto abuse_err
 46421  __8:
 46422  	;
 46423  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46424  		ts+31494,
 46425  		1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46426  			f func(*libc.TLS, uintptr, int32, uintptr)
 46427  		}{tStep})), uintptr(0), uintptr(0))
 46428  	if !(rc != SQLITE_MISUSE) {
 46429  		goto __9
 46430  	}
 46431  	goto abuse_err
 46432  __9:
 46433  	;
 46434  	sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, 10000)
 46435  	mxArg = sqlite3.Xsqlite3_limit(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), SQLITE_LIMIT_FUNCTION_ARG, -1)
 46436  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp + 16)),
 46437  		ts+31751,
 46438  		mxArg, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46439  			f func(*libc.TLS, uintptr, int32, uintptr)
 46440  		}{tStep})), uintptr(0), uintptr(0))
 46441  	if !(rc != SQLITE_OK) {
 46442  		goto __10
 46443  	}
 46444  	goto abuse_err
 46445  __10:
 46446  	;
 46447  	return TCL_OK
 46448  
 46449  abuse_err:
 46450  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32007,
 46451  		uintptr(0)))
 46452  	return TCL_ERROR
 46453  }
 46454  
 46455  func rankfunc(tls *libc.TLS, pCtx uintptr, nVal int32, apVal uintptr) {
 46456  	var aMatchinfo uintptr
 46457  	var nMatchinfo int32
 46458  	var nCol int32
 46459  	var nPhrase int32
 46460  	var iPhrase int32
 46461  	var score float64
 46462  	var nHitCount int32
 46463  	var nGlobalHitCount int32
 46464  	var weight float64
 46465  	var iCol int32
 46466  
 46467  	var aPhraseinfo uintptr
 46468  	nCol = 0
 46469  	nPhrase = 0
 46470  	score = 0.0
 46471  
 46472  	if !(nVal < 1) {
 46473  		goto __1
 46474  	}
 46475  	goto wrong_number_args
 46476  __1:
 46477  	;
 46478  	aMatchinfo = sqlite3.Xsqlite3_value_blob(tls, *(*uintptr)(unsafe.Pointer(apVal)))
 46479  	nMatchinfo = int32(uint64(sqlite3.Xsqlite3_value_bytes(tls, *(*uintptr)(unsafe.Pointer(apVal)))) / uint64(unsafe.Sizeof(int32(0))))
 46480  	if !(nMatchinfo >= 2) {
 46481  		goto __2
 46482  	}
 46483  	nPhrase = *(*int32)(unsafe.Pointer(aMatchinfo))
 46484  	nCol = *(*int32)(unsafe.Pointer(aMatchinfo + 1*4))
 46485  __2:
 46486  	;
 46487  	if !(nMatchinfo != 2+3*nCol*nPhrase) {
 46488  		goto __3
 46489  	}
 46490  	sqlite3.Xsqlite3_result_error(tls, pCtx,
 46491  		ts+32050, -1)
 46492  	return
 46493  __3:
 46494  	;
 46495  	if !(nVal != 1+nCol) {
 46496  		goto __4
 46497  	}
 46498  	goto wrong_number_args
 46499  __4:
 46500  	;
 46501  	iPhrase = 0
 46502  __5:
 46503  	if !(iPhrase < nPhrase) {
 46504  		goto __7
 46505  	}
 46506  
 46507  	aPhraseinfo = aMatchinfo + uintptr(2+iPhrase*nCol*3)*4
 46508  	iCol = 0
 46509  __8:
 46510  	if !(iCol < nCol) {
 46511  		goto __10
 46512  	}
 46513  	nHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol)*4))
 46514  	nGlobalHitCount = *(*int32)(unsafe.Pointer(aPhraseinfo + uintptr(3*iCol+1)*4))
 46515  	weight = sqlite3.Xsqlite3_value_double(tls, *(*uintptr)(unsafe.Pointer(apVal + uintptr(iCol+1)*8)))
 46516  	if !(nHitCount > 0) {
 46517  		goto __11
 46518  	}
 46519  	score = score + float64(nHitCount)/float64(nGlobalHitCount)*weight
 46520  __11:
 46521  	;
 46522  	goto __9
 46523  __9:
 46524  	iCol++
 46525  	goto __8
 46526  	goto __10
 46527  __10:
 46528  	;
 46529  	goto __6
 46530  __6:
 46531  	iPhrase++
 46532  	goto __5
 46533  	goto __7
 46534  __7:
 46535  	;
 46536  	sqlite3.Xsqlite3_result_double(tls, pCtx, score)
 46537  	return
 46538  
 46539  wrong_number_args:
 46540  	sqlite3.Xsqlite3_result_error(tls, pCtx, ts+32099, -1)
 46541  }
 46542  
 46543  func install_fts3_rank_function(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46544  	bp := tls.Alloc(8)
 46545  	defer tls.Free(8)
 46546  
 46547  	if objc != 2 {
 46548  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 46549  		return TCL_ERROR
 46550  	}
 46551  
 46552  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 46553  		return TCL_ERROR
 46554  	}
 46555  	sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+32144, -1, SQLITE_UTF8, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 46556  		f func(*libc.TLS, uintptr, int32, uintptr)
 46557  	}{rankfunc})), uintptr(0), uintptr(0))
 46558  	return TCL_OK
 46559  }
 46560  
 46561  func Sqlitetest_func_Init(tls *libc.TLS, interp uintptr) int32 {
 46562  	var i int32
 46563  
 46564  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd7))/uint64(unsafe.Sizeof(struct {
 46565  		FzName uintptr
 46566  		FxProc uintptr
 46567  	}{})); i++ {
 46568  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd7[i].FzName, aObjCmd7[i].FxProc, uintptr(0), uintptr(0))
 46569  	}
 46570  	sqlite3.Xsqlite3_initialize(tls)
 46571  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46572  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46573  	}{registerTestFunctions})))
 46574  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 46575  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 46576  	}{Md5_Register})))
 46577  	return TCL_OK
 46578  }
 46579  
 46580  var aObjCmd7 = [3]struct {
 46581  	FzName uintptr
 46582  	FxProc uintptr
 46583  }{
 46584  	{FzName: ts + 32149, FxProc: 0},
 46585  	{FzName: ts + 32176, FxProc: 0},
 46586  	{FzName: ts + 32198, FxProc: 0},
 46587  }
 46588  
 46589  func sqlite3TestBinToHex(tls *libc.TLS, zBuf uintptr, N int32) {
 46590  	bp := tls.Alloc(17)
 46591  	defer tls.Free(17)
 46592  
 46593  	*(*[17]uint8)(unsafe.Pointer(bp)) = *(*[17]uint8)(unsafe.Pointer(ts + 32225))
 46594  	var i int32
 46595  	var j int32
 46596  	var c uint8
 46597  	i = N * 2
 46598  	*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = uint8(0)
 46599  	for j = N - 1; j >= 0; j-- {
 46600  		c = *(*uint8)(unsafe.Pointer(zBuf + uintptr(j)))
 46601  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)&0xf)))
 46602  		*(*uint8)(unsafe.Pointer(zBuf + uintptr(libc.PostDecInt32(&i, 1)))) = *(*uint8)(unsafe.Pointer(bp + uintptr(int32(c)>>4)))
 46603  	}
 46604  
 46605  }
 46606  
 46607  func sqlite3TestHexToBin(tls *libc.TLS, zIn uintptr, N int32, aOut uintptr) int32 {
 46608  	bp := tls.Alloc(256)
 46609  	defer tls.Free(256)
 46610  
 46611  	*(*[256]uint8)(unsafe.Pointer(bp)) = [256]uint8{
 46612  		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),
 46613  		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),
 46614  		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),
 46615  		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),
 46616  		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),
 46617  		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),
 46618  		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),
 46619  		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),
 46620  		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),
 46621  		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),
 46622  		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),
 46623  		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),
 46624  		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),
 46625  		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),
 46626  		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),
 46627  		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),
 46628  	}
 46629  	var i int32
 46630  	var j int32
 46631  	var hi int32 = 1
 46632  	var c uint8
 46633  
 46634  	for i = libc.AssignInt32(&j, 0); i < N; i++ {
 46635  		c = *(*uint8)(unsafe.Pointer(bp + uintptr(*(*uint8)(unsafe.Pointer(zIn + uintptr(i))))))
 46636  		if int32(c) == 0 {
 46637  			continue
 46638  		}
 46639  		if hi != 0 {
 46640  			*(*uint8)(unsafe.Pointer(aOut + uintptr(j))) = uint8((int32(c) - 1) << 4)
 46641  			hi = 0
 46642  		} else {
 46643  			*(*uint8)(unsafe.Pointer(aOut + uintptr(libc.PostIncInt32(&j, 1)))) |= uint8(int32(c) - 1)
 46644  			hi = 1
 46645  		}
 46646  	}
 46647  	return j
 46648  }
 46649  
 46650  func hexio_read(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46651  	bp := tls.Alloc(48)
 46652  	defer tls.Free(48)
 46653  
 46654  	var got int32
 46655  	var zFile uintptr
 46656  	var zBuf uintptr
 46657  	var in uintptr
 46658  
 46659  	if objc != 4 {
 46660  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32242)
 46661  		return TCL_ERROR
 46662  	}
 46663  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 46664  		return TCL_ERROR
 46665  	}
 46666  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+44) != 0 {
 46667  		return TCL_ERROR
 46668  	}
 46669  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46670  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp + 44))*2+1)
 46671  	if zBuf == uintptr(0) {
 46672  		return TCL_ERROR
 46673  	}
 46674  	in = libc.Xfopen(tls, zFile, ts+4402)
 46675  	if in == uintptr(0) {
 46676  		in = libc.Xfopen(tls, zFile, ts+32262)
 46677  	}
 46678  	if in == uintptr(0) {
 46679  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32264, zFile, 0))
 46680  		return TCL_ERROR
 46681  	}
 46682  	libc.Xfseek(tls, in, int64(*(*int32)(unsafe.Pointer(bp + 40))), SEEK_SET)
 46683  	got = int32(libc.Xfread(tls, zBuf, uint64(1), uint64(*(*int32)(unsafe.Pointer(bp + 44))), in))
 46684  	libc.Xfclose(tls, in)
 46685  	if got < 0 {
 46686  		got = 0
 46687  	}
 46688  	sqlite3TestBinToHex(tls, zBuf, got)
 46689  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, zBuf, 0))
 46690  	sqlite3.Xsqlite3_free(tls, zBuf)
 46691  	return TCL_OK
 46692  }
 46693  
 46694  func hexio_write(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46695  	bp := tls.Alloc(32)
 46696  	defer tls.Free(32)
 46697  
 46698  	var nOut int32
 46699  	var written int32
 46700  	var zFile uintptr
 46701  	var zIn uintptr
 46702  	var aOut uintptr
 46703  	var out uintptr
 46704  
 46705  	if objc != 4 {
 46706  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32288)
 46707  		return TCL_ERROR
 46708  	}
 46709  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+24) != 0 {
 46710  		return TCL_ERROR
 46711  	}
 46712  	zFile = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 46713  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+28)
 46714  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp + 28))/2)
 46715  	if aOut == uintptr(0) {
 46716  		return TCL_ERROR
 46717  	}
 46718  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp + 28)), aOut)
 46719  	out = libc.Xfopen(tls, zFile, ts+32312)
 46720  	if out == uintptr(0) {
 46721  		out = libc.Xfopen(tls, zFile, ts+32316)
 46722  	}
 46723  	if out == uintptr(0) {
 46724  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32319, zFile, 0))
 46725  		return TCL_ERROR
 46726  	}
 46727  	libc.Xfseek(tls, out, int64(*(*int32)(unsafe.Pointer(bp + 24))), SEEK_SET)
 46728  	written = int32(libc.Xfwrite(tls, aOut, uint64(1), uint64(nOut), out))
 46729  	sqlite3.Xsqlite3_free(tls, aOut)
 46730  	libc.Xfclose(tls, out)
 46731  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, written))
 46732  	return TCL_OK
 46733  }
 46734  
 46735  func hexio_get_int(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46736  	bp := tls.Alloc(8)
 46737  	defer tls.Free(8)
 46738  
 46739  	var val int32
 46740  
 46741  	var nOut int32
 46742  	var zIn uintptr
 46743  	var aOut uintptr
 46744  
 46745  	if objc != 2 {
 46746  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32344)
 46747  		return TCL_ERROR
 46748  	}
 46749  	zIn = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 46750  	aOut = sqlite3.Xsqlite3_malloc(tls, 1+*(*int32)(unsafe.Pointer(bp))/2)
 46751  	if aOut == uintptr(0) {
 46752  		return TCL_ERROR
 46753  	}
 46754  	nOut = sqlite3TestHexToBin(tls, zIn, *(*int32)(unsafe.Pointer(bp)), aOut)
 46755  	if nOut >= 4 {
 46756  		libc.Xmemcpy(tls, bp+4, aOut, uint64(4))
 46757  	} else {
 46758  		libc.Xmemset(tls, bp+4, 0, uint64(unsafe.Sizeof([4]uint8{})))
 46759  		libc.Xmemcpy(tls, bp+4+uintptr(4-nOut), aOut, uint64(nOut))
 46760  	}
 46761  	sqlite3.Xsqlite3_free(tls, aOut)
 46762  	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)))
 46763  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, val))
 46764  	return TCL_OK
 46765  }
 46766  
 46767  func hexio_render_int16(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46768  	bp := tls.Alloc(14)
 46769  	defer tls.Free(14)
 46770  
 46771  	if objc != 2 {
 46772  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 46773  		return TCL_ERROR
 46774  	}
 46775  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 46776  		return TCL_ERROR
 46777  	}
 46778  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 46779  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 46780  	sqlite3TestBinToHex(tls, bp+4, 2)
 46781  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 4))
 46782  	return TCL_OK
 46783  }
 46784  
 46785  func hexio_render_int32(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46786  	bp := tls.Alloc(14)
 46787  	defer tls.Free(14)
 46788  
 46789  	if objc != 2 {
 46790  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2413)
 46791  		return TCL_ERROR
 46792  	}
 46793  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 46794  		return TCL_ERROR
 46795  	}
 46796  	*(*uint8)(unsafe.Pointer(bp + 4)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 24)
 46797  	*(*uint8)(unsafe.Pointer(bp + 4 + 1)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 16)
 46798  	*(*uint8)(unsafe.Pointer(bp + 4 + 2)) = uint8(*(*int32)(unsafe.Pointer(bp)) >> 8)
 46799  	*(*uint8)(unsafe.Pointer(bp + 4 + 3)) = uint8(*(*int32)(unsafe.Pointer(bp)))
 46800  	sqlite3TestBinToHex(tls, bp+4, 4)
 46801  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, bp+4, 8))
 46802  	return TCL_OK
 46803  }
 46804  
 46805  func utf8_to_utf8(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46806  	bp := tls.Alloc(16)
 46807  	defer tls.Free(16)
 46808  
 46809  	tcl.XTcl_AppendResult(tls, interp,
 46810  		libc.VaList(bp, ts+32352, 0))
 46811  	return TCL_ERROR
 46812  }
 46813  
 46814  func getFts3Varint(tls *libc.TLS, p uintptr, v uintptr) int32 {
 46815  	var q uintptr = p
 46816  	var x sqlite_uint64 = uint64(0)
 46817  	var y sqlite_uint64 = uint64(1)
 46818  	for int32(*(*uint8)(unsafe.Pointer(q)))&0x80 == 0x80 {
 46819  		x = x + y*sqlite_uint64(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))&0x7f)
 46820  		y <<= 7
 46821  	}
 46822  	x = x + y*sqlite_uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))))
 46823  	*(*sqlite_int64)(unsafe.Pointer(v)) = sqlite_int64(x)
 46824  	return int32((int64(q) - int64(p)) / 1)
 46825  }
 46826  
 46827  func putFts3Varint(tls *libc.TLS, p uintptr, v sqlite_int64) int32 {
 46828  	var q uintptr = p
 46829  	var vu sqlite_uint64 = sqlite_uint64(v)
 46830  	for __ccgo := true; __ccgo; __ccgo = vu != uint64(0) {
 46831  		*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) = uint8(vu&uint64(0x7f) | uint64(0x80))
 46832  		vu >>= 7
 46833  	}
 46834  	*(*uint8)(unsafe.Pointer(q + libc.UintptrFromInt32(-1))) &= uint8(0x7f)
 46835  
 46836  	return int32((int64(q) - int64(p)) / 1)
 46837  }
 46838  
 46839  func read_fts3varint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46840  	bp := tls.Alloc(16)
 46841  	defer tls.Free(16)
 46842  
 46843  	var zBlob uintptr
 46844  
 46845  	var nVal int32
 46846  
 46847  	if objc != 3 {
 46848  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32406)
 46849  		return TCL_ERROR
 46850  	}
 46851  	zBlob = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp)
 46852  
 46853  	nVal = getFts3Varint(tls, zBlob, bp+8)
 46854  	tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(bp + 8))), 0)
 46855  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nVal))
 46856  	return TCL_OK
 46857  }
 46858  
 46859  func make_fts3record(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 46860  	bp := tls.Alloc(28)
 46861  	defer tls.Free(28)
 46862  
 46863  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 46864  	*(*int32)(unsafe.Pointer(bp)) = 0
 46865  	var aOut uintptr = uintptr(0)
 46866  	var nOut int32 = 0
 46867  	var nAlloc int32 = 0
 46868  	var i int32
 46869  
 46870  	if objc != 2 {
 46871  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32419)
 46872  		return TCL_ERROR
 46873  	}
 46874  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, bp+8) != 0 {
 46875  		return TCL_ERROR
 46876  	}
 46877  
 46878  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 46879  		if TCL_OK == tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+16) {
 46880  			if nOut+10 > nAlloc {
 46881  				var nNew int32
 46882  				if nAlloc != 0 {
 46883  					nNew = nAlloc * 2
 46884  				} else {
 46885  					nNew = 128
 46886  				}
 46887  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 46888  				if aNew == uintptr(0) {
 46889  					sqlite3.Xsqlite3_free(tls, aOut)
 46890  					return TCL_ERROR
 46891  				}
 46892  				aOut = aNew
 46893  				nAlloc = nNew
 46894  			}
 46895  			nOut = nOut + putFts3Varint(tls, aOut+uintptr(nOut), *(*sqlite3_int64)(unsafe.Pointer(bp + 16)))
 46896  		} else {
 46897  			*(*int32)(unsafe.Pointer(bp + 24)) = 0
 46898  			var zVal uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), bp+24)
 46899  			for nOut+*(*int32)(unsafe.Pointer(bp + 24)) > nAlloc {
 46900  				var nNew int32
 46901  				if nAlloc != 0 {
 46902  					nNew = nAlloc * 2
 46903  				} else {
 46904  					nNew = 128
 46905  				}
 46906  				var aNew uintptr = sqlite3.Xsqlite3_realloc(tls, aOut, nNew)
 46907  				if aNew == uintptr(0) {
 46908  					sqlite3.Xsqlite3_free(tls, aOut)
 46909  					return TCL_ERROR
 46910  				}
 46911  				aOut = aNew
 46912  				nAlloc = nNew
 46913  			}
 46914  			libc.Xmemcpy(tls, aOut+uintptr(nOut), zVal, uint64(*(*int32)(unsafe.Pointer(bp + 24))))
 46915  			nOut = nOut + *(*int32)(unsafe.Pointer(bp + 24))
 46916  		}
 46917  	}
 46918  
 46919  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewByteArrayObj(tls, aOut, nOut))
 46920  	sqlite3.Xsqlite3_free(tls, aOut)
 46921  	return TCL_OK
 46922  }
 46923  
 46924  func Sqlitetest_hexio_Init(tls *libc.TLS, interp uintptr) int32 {
 46925  	var i int32
 46926  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd8))/uint64(unsafe.Sizeof(struct {
 46927  		FzName uintptr
 46928  		FxProc uintptr
 46929  	}{})); i++ {
 46930  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd8[i].FzName, aObjCmd8[i].FxProc, uintptr(0), uintptr(0))
 46931  	}
 46932  	return TCL_OK
 46933  }
 46934  
 46935  var aObjCmd8 = [8]struct {
 46936  	FzName uintptr
 46937  	FxProc uintptr
 46938  }{
 46939  	{FzName: ts + 32424, FxProc: 0},
 46940  	{FzName: ts + 32435, FxProc: 0},
 46941  	{FzName: ts + 32447, FxProc: 0},
 46942  	{FzName: ts + 32461, FxProc: 0},
 46943  	{FzName: ts + 32480, FxProc: 0},
 46944  	{FzName: ts + 32499, FxProc: 0},
 46945  	{FzName: ts + 32512, FxProc: 0},
 46946  	{FzName: ts + 32528, FxProc: 0},
 46947  }
 46948  
 46949  type Wrapped = struct {
 46950  	Fpcache      sqlite3_pcache_methods2
 46951  	Fmem         sqlite3_mem_methods
 46952  	Fmutex       sqlite3_mutex_methods
 46953  	Fmem_init    int32
 46954  	Fmem_fail    int32
 46955  	Fmutex_init  int32
 46956  	Fmutex_fail  int32
 46957  	Fpcache_init int32
 46958  	Fpcache_fail int32
 46959  }
 46960  
 46961  var wrapped Wrapped
 46962  
 46963  func wrMemInit(tls *libc.TLS, pAppData uintptr) int32 {
 46964  	var rc int32
 46965  	if wrapped.Fmem_fail != 0 {
 46966  		rc = SQLITE_ERROR
 46967  	} else {
 46968  		rc = (*struct {
 46969  			f func(*libc.TLS, uintptr) int32
 46970  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxInit})).f(tls, wrapped.Fmem.FpAppData)
 46971  	}
 46972  	if rc == SQLITE_OK {
 46973  		wrapped.Fmem_init = 1
 46974  	}
 46975  	return rc
 46976  }
 46977  
 46978  func wrMemShutdown(tls *libc.TLS, pAppData uintptr) {
 46979  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxShutdown})).f(tls, wrapped.Fmem.FpAppData)
 46980  	wrapped.Fmem_init = 0
 46981  }
 46982  
 46983  func wrMemMalloc(tls *libc.TLS, n int32) uintptr {
 46984  	return (*struct {
 46985  		f func(*libc.TLS, int32) uintptr
 46986  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxMalloc})).f(tls, n)
 46987  }
 46988  
 46989  func wrMemFree(tls *libc.TLS, p uintptr) {
 46990  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxFree})).f(tls, p)
 46991  }
 46992  
 46993  func wrMemRealloc(tls *libc.TLS, p uintptr, n int32) uintptr {
 46994  	return (*struct {
 46995  		f func(*libc.TLS, uintptr, int32) uintptr
 46996  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRealloc})).f(tls, p, n)
 46997  }
 46998  
 46999  func wrMemSize(tls *libc.TLS, p uintptr) int32 {
 47000  	return (*struct {
 47001  		f func(*libc.TLS, uintptr) int32
 47002  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxSize})).f(tls, p)
 47003  }
 47004  
 47005  func wrMemRoundup(tls *libc.TLS, n int32) int32 {
 47006  	return (*struct{ f func(*libc.TLS, int32) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmem.FxRoundup})).f(tls, n)
 47007  }
 47008  
 47009  func wrMutexInit(tls *libc.TLS) int32 {
 47010  	var rc int32
 47011  	if wrapped.Fmutex_fail != 0 {
 47012  		rc = SQLITE_ERROR
 47013  	} else {
 47014  		rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexInit})).f(tls)
 47015  	}
 47016  	if rc == SQLITE_OK {
 47017  		wrapped.Fmutex_init = 1
 47018  	}
 47019  	return rc
 47020  }
 47021  
 47022  func wrMutexEnd(tls *libc.TLS) int32 {
 47023  	(*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnd})).f(tls)
 47024  	wrapped.Fmutex_init = 0
 47025  	return SQLITE_OK
 47026  }
 47027  
 47028  func wrMutexAlloc(tls *libc.TLS, e int32) uintptr {
 47029  	return (*struct {
 47030  		f func(*libc.TLS, int32) uintptr
 47031  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexAlloc})).f(tls, e)
 47032  }
 47033  
 47034  func wrMutexFree(tls *libc.TLS, p uintptr) {
 47035  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexFree})).f(tls, p)
 47036  }
 47037  
 47038  func wrMutexEnter(tls *libc.TLS, p uintptr) {
 47039  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexEnter})).f(tls, p)
 47040  }
 47041  
 47042  func wrMutexTry(tls *libc.TLS, p uintptr) int32 {
 47043  	return (*struct {
 47044  		f func(*libc.TLS, uintptr) int32
 47045  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexTry})).f(tls, p)
 47046  }
 47047  
 47048  func wrMutexLeave(tls *libc.TLS, p uintptr) {
 47049  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexLeave})).f(tls, p)
 47050  }
 47051  
 47052  func wrMutexHeld(tls *libc.TLS, p uintptr) int32 {
 47053  	return (*struct {
 47054  		f func(*libc.TLS, uintptr) int32
 47055  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexHeld})).f(tls, p)
 47056  }
 47057  
 47058  func wrMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 47059  	return (*struct {
 47060  		f func(*libc.TLS, uintptr) int32
 47061  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fmutex.FxMutexNotheld})).f(tls, p)
 47062  }
 47063  
 47064  func wrPCacheInit(tls *libc.TLS, pArg uintptr) int32 {
 47065  	var rc int32
 47066  	if wrapped.Fpcache_fail != 0 {
 47067  		rc = SQLITE_ERROR
 47068  	} else {
 47069  		rc = (*struct {
 47070  			f func(*libc.TLS, uintptr) int32
 47071  		})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxInit})).f(tls, wrapped.Fpcache.FpArg)
 47072  	}
 47073  	if rc == SQLITE_OK {
 47074  		wrapped.Fpcache_init = 1
 47075  	}
 47076  	return rc
 47077  }
 47078  
 47079  func wrPCacheShutdown(tls *libc.TLS, pArg uintptr) {
 47080  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxShutdown})).f(tls, wrapped.Fpcache.FpArg)
 47081  	wrapped.Fpcache_init = 0
 47082  }
 47083  
 47084  func wrPCacheCreate(tls *libc.TLS, a int32, b int32, c int32) uintptr {
 47085  	return (*struct {
 47086  		f func(*libc.TLS, int32, int32, int32) uintptr
 47087  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCreate})).f(tls, a, b, c)
 47088  }
 47089  
 47090  func wrPCacheCachesize(tls *libc.TLS, p uintptr, n int32) {
 47091  	(*struct {
 47092  		f func(*libc.TLS, uintptr, int32)
 47093  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxCachesize})).f(tls, p, n)
 47094  }
 47095  
 47096  func wrPCachePagecount(tls *libc.TLS, p uintptr) int32 {
 47097  	return (*struct {
 47098  		f func(*libc.TLS, uintptr) int32
 47099  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxPagecount})).f(tls, p)
 47100  }
 47101  
 47102  func wrPCacheFetch(tls *libc.TLS, p uintptr, a uint32, b int32) uintptr {
 47103  	return (*struct {
 47104  		f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47105  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxFetch})).f(tls, p, a, b)
 47106  }
 47107  
 47108  func wrPCacheUnpin(tls *libc.TLS, p uintptr, a uintptr, b int32) {
 47109  	(*struct {
 47110  		f func(*libc.TLS, uintptr, uintptr, int32)
 47111  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxUnpin})).f(tls, p, a, b)
 47112  }
 47113  
 47114  func wrPCacheRekey(tls *libc.TLS, p uintptr, a uintptr, b uint32, c uint32) {
 47115  	(*struct {
 47116  		f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47117  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxRekey})).f(tls, p, a, b, c)
 47118  }
 47119  
 47120  func wrPCacheTruncate(tls *libc.TLS, p uintptr, a uint32) {
 47121  	(*struct {
 47122  		f func(*libc.TLS, uintptr, uint32)
 47123  	})(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxTruncate})).f(tls, p, a)
 47124  }
 47125  
 47126  func wrPCacheDestroy(tls *libc.TLS, p uintptr) {
 47127  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{wrapped.Fpcache.FxDestroy})).f(tls, p)
 47128  }
 47129  
 47130  func installInitWrappers(tls *libc.TLS) {
 47131  	bp := tls.Alloc(288)
 47132  	defer tls.Free(288)
 47133  
 47134  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 48)) = sqlite3_mutex_methods{
 47135  		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 {
 47136  			f func(*libc.TLS, int32) uintptr
 47137  		}{wrMutexAlloc})),
 47138  		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 {
 47139  			f func(*libc.TLS, uintptr) int32
 47140  		}{wrMutexTry})),
 47141  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMutexLeave})), FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 47142  			f func(*libc.TLS, uintptr) int32
 47143  		}{wrMutexHeld})), FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 47144  			f func(*libc.TLS, uintptr) int32
 47145  		}{wrMutexNotheld})),
 47146  	}
 47147  	*(*sqlite3_pcache_methods2)(unsafe.Pointer(bp + 184)) = sqlite3_pcache_methods2{
 47148  		FiVersion: 1,
 47149  		FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47150  			f func(*libc.TLS, uintptr) int32
 47151  		}{wrPCacheInit})), FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheShutdown})), FxCreate: *(*uintptr)(unsafe.Pointer(&struct {
 47152  			f func(*libc.TLS, int32, int32, int32) uintptr
 47153  		}{wrPCacheCreate})),
 47154  		FxCachesize: *(*uintptr)(unsafe.Pointer(&struct {
 47155  			f func(*libc.TLS, uintptr, int32)
 47156  		}{wrPCacheCachesize})), FxPagecount: *(*uintptr)(unsafe.Pointer(&struct {
 47157  			f func(*libc.TLS, uintptr) int32
 47158  		}{wrPCachePagecount})), FxFetch: *(*uintptr)(unsafe.Pointer(&struct {
 47159  			f func(*libc.TLS, uintptr, uint32, int32) uintptr
 47160  		}{wrPCacheFetch})),
 47161  		FxUnpin: *(*uintptr)(unsafe.Pointer(&struct {
 47162  			f func(*libc.TLS, uintptr, uintptr, int32)
 47163  		}{wrPCacheUnpin})), FxRekey: *(*uintptr)(unsafe.Pointer(&struct {
 47164  			f func(*libc.TLS, uintptr, uintptr, uint32, uint32)
 47165  		}{wrPCacheRekey})), FxTruncate: *(*uintptr)(unsafe.Pointer(&struct {
 47166  			f func(*libc.TLS, uintptr, uint32)
 47167  		}{wrPCacheTruncate})),
 47168  		FxDestroy: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrPCacheDestroy})),
 47169  	}
 47170  	*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 120)) = sqlite3_mem_methods{
 47171  		FxMalloc: *(*uintptr)(unsafe.Pointer(&struct {
 47172  			f func(*libc.TLS, int32) uintptr
 47173  		}{wrMemMalloc})), FxFree: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemFree})), FxRealloc: *(*uintptr)(unsafe.Pointer(&struct {
 47174  			f func(*libc.TLS, uintptr, int32) uintptr
 47175  		}{wrMemRealloc})),
 47176  		FxSize: *(*uintptr)(unsafe.Pointer(&struct {
 47177  			f func(*libc.TLS, uintptr) int32
 47178  		}{wrMemSize})), FxRoundup: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{wrMemRoundup})), FxInit: *(*uintptr)(unsafe.Pointer(&struct {
 47179  			f func(*libc.TLS, uintptr) int32
 47180  		}{wrMemInit})),
 47181  		FxShutdown: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{wrMemShutdown})),
 47182  	}
 47183  
 47184  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&wrapped)), 0, uint64(unsafe.Sizeof(wrapped)))
 47185  
 47186  	sqlite3.Xsqlite3_shutdown(tls)
 47187  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47188  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47189  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47190  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+24, bp+48))
 47191  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+120))
 47192  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+40, bp+184))
 47193  }
 47194  
 47195  func init_wrapper_install(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47196  	bp := tls.Alloc(24)
 47197  	defer tls.Free(24)
 47198  
 47199  	var i int32
 47200  	installInitWrappers(tls)
 47201  	for i = 1; i < objc; i++ {
 47202  		var z uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)))
 47203  		if libc.Xstrcmp(tls, z, ts+32544) == 0 {
 47204  			wrapped.Fmem_fail = 1
 47205  		} else if libc.Xstrcmp(tls, z, ts+29150) == 0 {
 47206  			wrapped.Fmutex_fail = 1
 47207  		} else if libc.Xstrcmp(tls, z, ts+32548) == 0 {
 47208  			wrapped.Fpcache_fail = 1
 47209  		} else {
 47210  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32555, z, ts+11945))
 47211  			return TCL_ERROR
 47212  		}
 47213  	}
 47214  	return TCL_OK
 47215  }
 47216  
 47217  func init_wrapper_uninstall(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47218  	bp := tls.Alloc(24)
 47219  	defer tls.Free(24)
 47220  
 47221  	if objc != 1 {
 47222  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47223  		return TCL_ERROR
 47224  	}
 47225  
 47226  	sqlite3.Xsqlite3_shutdown(tls)
 47227  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp, uintptr(unsafe.Pointer(&wrapped))+168))
 47228  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, uintptr(unsafe.Pointer(&wrapped))+104))
 47229  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&wrapped))))
 47230  	return TCL_OK
 47231  }
 47232  
 47233  func init_wrapper_clear(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47234  	if objc != 1 {
 47235  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47236  		return TCL_ERROR
 47237  	}
 47238  
 47239  	wrapped.Fmem_fail = 0
 47240  	wrapped.Fmutex_fail = 0
 47241  	wrapped.Fpcache_fail = 0
 47242  	return TCL_OK
 47243  }
 47244  
 47245  func init_wrapper_query(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47246  	var pRet uintptr
 47247  
 47248  	if objc != 1 {
 47249  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 47250  		return TCL_ERROR
 47251  	}
 47252  
 47253  	pRet = tcl.XTcl_NewObj(tls)
 47254  	if wrapped.Fmutex_init != 0 {
 47255  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+29150, -1))
 47256  	}
 47257  	if wrapped.Fmem_init != 0 {
 47258  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32544, -1))
 47259  	}
 47260  	if wrapped.Fpcache_init != 0 {
 47261  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, ts+32548, -1))
 47262  	}
 47263  
 47264  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 47265  	return TCL_OK
 47266  }
 47267  
 47268  func Sqlitetest_init_Init(tls *libc.TLS, interp uintptr) int32 {
 47269  	var i int32
 47270  
 47271  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd9))/uint64(unsafe.Sizeof(struct {
 47272  		FzName uintptr
 47273  		FxProc uintptr
 47274  	}{})); i++ {
 47275  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd9[i].FzName, aObjCmd9[i].FxProc, uintptr(0), uintptr(0))
 47276  	}
 47277  
 47278  	return TCL_OK
 47279  }
 47280  
 47281  var aObjCmd9 = [4]struct {
 47282  	FzName uintptr
 47283  	FxProc uintptr
 47284  }{
 47285  	{FzName: ts + 32575, FxProc: 0},
 47286  	{FzName: ts + 32596, FxProc: 0},
 47287  	{FzName: ts + 32615, FxProc: 0},
 47288  	{FzName: ts + 32638, FxProc: 0},
 47289  }
 47290  
 47291  type sqlite3_intarray1 = struct {
 47292  	Fn           int32
 47293  	F__ccgo_pad1 [4]byte
 47294  	Fa           uintptr
 47295  	FxFree       uintptr
 47296  }
 47297  
 47298  type sqlite3_intarray = sqlite3_intarray1
 47299  
 47300  type intarray_vtab1 = struct {
 47301  	Fbase     sqlite3_vtab
 47302  	FpContent uintptr
 47303  }
 47304  
 47305  type intarray_vtab = intarray_vtab1
 47306  type intarray_cursor1 = struct {
 47307  	Fbase        sqlite3_vtab_cursor
 47308  	Fi           int32
 47309  	F__ccgo_pad1 [4]byte
 47310  }
 47311  
 47312  type intarray_cursor = intarray_cursor1
 47313  
 47314  func intarrayFree(tls *libc.TLS, p uintptr) {
 47315  	if (*sqlite3_intarray)(unsafe.Pointer(p)).FxFree != 0 {
 47316  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(p)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(p)).Fa)
 47317  	}
 47318  	sqlite3.Xsqlite3_free(tls, p)
 47319  }
 47320  
 47321  func intarrayDestroy(tls *libc.TLS, p uintptr) int32 {
 47322  	var pVtab uintptr = p
 47323  	sqlite3.Xsqlite3_free(tls, pVtab)
 47324  	return 0
 47325  }
 47326  
 47327  func intarrayCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 47328  	var rc int32 = SQLITE_NOMEM
 47329  	var pVtab uintptr = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_vtab{})))
 47330  
 47331  	if pVtab != 0 {
 47332  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(intarray_vtab{})))
 47333  		(*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent = pAux
 47334  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+32657)
 47335  	}
 47336  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 47337  	return rc
 47338  }
 47339  
 47340  func intarrayOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 47341  	var rc int32 = SQLITE_NOMEM
 47342  	var pCur uintptr
 47343  	pCur = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(intarray_cursor{})))
 47344  	if pCur != 0 {
 47345  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(intarray_cursor{})))
 47346  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 47347  		rc = SQLITE_OK
 47348  	}
 47349  	return rc
 47350  }
 47351  
 47352  func intarrayClose(tls *libc.TLS, cur uintptr) int32 {
 47353  	var pCur uintptr = cur
 47354  	sqlite3.Xsqlite3_free(tls, pCur)
 47355  	return SQLITE_OK
 47356  }
 47357  
 47358  func intarrayColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 47359  	var pCur uintptr = cur
 47360  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47361  	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 {
 47362  		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)))
 47363  	}
 47364  	return SQLITE_OK
 47365  }
 47366  
 47367  func intarrayRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 47368  	var pCur uintptr = cur
 47369  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*intarray_cursor)(unsafe.Pointer(pCur)).Fi)
 47370  	return SQLITE_OK
 47371  }
 47372  
 47373  func intarrayEof(tls *libc.TLS, cur uintptr) int32 {
 47374  	var pCur uintptr = cur
 47375  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 47376  	return libc.Bool32((*intarray_cursor)(unsafe.Pointer(pCur)).Fi >= (*sqlite3_intarray)(unsafe.Pointer((*intarray_vtab)(unsafe.Pointer(pVtab)).FpContent)).Fn)
 47377  }
 47378  
 47379  func intarrayNext(tls *libc.TLS, cur uintptr) int32 {
 47380  	var pCur uintptr = cur
 47381  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi++
 47382  	return SQLITE_OK
 47383  }
 47384  
 47385  func intarrayFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 47386  	var pCur uintptr = pVtabCursor
 47387  	(*intarray_cursor)(unsafe.Pointer(pCur)).Fi = 0
 47388  	return SQLITE_OK
 47389  }
 47390  
 47391  func intarrayBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 47392  	return SQLITE_OK
 47393  }
 47394  
 47395  var intarrayModule = sqlite3_module{
 47396  	FxCreate:     0,
 47397  	FxConnect:    0,
 47398  	FxBestIndex:  0,
 47399  	FxDisconnect: 0,
 47400  	FxDestroy:    0,
 47401  	FxOpen:       0,
 47402  	FxClose:      0,
 47403  	FxFilter:     0,
 47404  	FxNext:       0,
 47405  	FxEof:        0,
 47406  	FxColumn:     0,
 47407  	FxRowid:      0,
 47408  }
 47409  
 47410  func sqlite3_intarray_create(tls *libc.TLS, db uintptr, zName uintptr, ppReturn uintptr) int32 {
 47411  	bp := tls.Alloc(16)
 47412  	defer tls.Free(16)
 47413  
 47414  	var rc int32 = SQLITE_OK
 47415  	var p uintptr
 47416  
 47417  	*(*uintptr)(unsafe.Pointer(ppReturn)) = libc.AssignUintptr(&p, sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_intarray{}))))
 47418  	if p == uintptr(0) {
 47419  		return SQLITE_NOMEM
 47420  	}
 47421  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(sqlite3_intarray{})))
 47422  	rc = sqlite3.Xsqlite3_create_module_v2(tls, db, zName, uintptr(unsafe.Pointer(&intarrayModule)), p,
 47423  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{intarrayFree})))
 47424  	if rc == SQLITE_OK {
 47425  		var zSql uintptr
 47426  		zSql = sqlite3.Xsqlite3_mprintf(tls, ts+32699,
 47427  			libc.VaList(bp, zName, zName))
 47428  		rc = sqlite3.Xsqlite3_exec(tls, db, zSql, uintptr(0), uintptr(0), uintptr(0))
 47429  		sqlite3.Xsqlite3_free(tls, zSql)
 47430  	}
 47431  	return rc
 47432  }
 47433  
 47434  func sqlite3_intarray_bind(tls *libc.TLS, pIntArray uintptr, nElements int32, aElements uintptr, xFree uintptr) int32 {
 47435  	if (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree != 0 {
 47436  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree})).f(tls, (*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa)
 47437  	}
 47438  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fn = nElements
 47439  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).Fa = aElements
 47440  	(*sqlite3_intarray)(unsafe.Pointer(pIntArray)).FxFree = xFree
 47441  	return SQLITE_OK
 47442  }
 47443  
 47444  func test_intarray_create(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47445  	bp := tls.Alloc(148)
 47446  	defer tls.Free(148)
 47447  
 47448  	var zName uintptr
 47449  
 47450  	var rc int32 = SQLITE_OK
 47451  
 47452  	if objc != 3 {
 47453  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 47454  		return TCL_ERROR
 47455  	}
 47456  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 47457  		return TCL_ERROR
 47458  	}
 47459  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 47460  	rc = sqlite3_intarray_create(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), zName, bp+40)
 47461  	if rc != SQLITE_OK {
 47462  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 47463  		return TCL_ERROR
 47464  	}
 47465  	sqlite3TestMakePointerStr(tls, interp, bp+48, *(*uintptr)(unsafe.Pointer(bp + 40)))
 47466  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, bp+48, uintptr(0)))
 47467  	return TCL_OK
 47468  }
 47469  
 47470  func test_intarray_bind(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 47471  	bp := tls.Alloc(40)
 47472  	defer tls.Free(40)
 47473  
 47474  	var pArray uintptr
 47475  	var rc int32 = SQLITE_OK
 47476  	var i int32
 47477  	var n int32
 47478  	var a uintptr
 47479  
 47480  	if objc < 2 {
 47481  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32737)
 47482  		return TCL_ERROR
 47483  	}
 47484  	pArray = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 47485  	n = objc - 2
 47486  	a = sqlite3.Xsqlite3_malloc64(tls, uint64(unsafe.Sizeof(sqlite3_int64(0)))*uint64(n))
 47487  	if a == uintptr(0) {
 47488  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32746, uintptr(0)))
 47489  		return TCL_ERROR
 47490  	}
 47491  	for i = 0; i < n; i++ {
 47492  		*(*Tcl_WideInt)(unsafe.Pointer(bp + 32)) = int64(0)
 47493  		tcl.XTcl_GetWideIntFromObj(tls, uintptr(0), *(*uintptr)(unsafe.Pointer(objv + uintptr(i+2)*8)), bp+32)
 47494  		*(*sqlite3_int64)(unsafe.Pointer(a + uintptr(i)*8)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 32))
 47495  	}
 47496  	rc = sqlite3_intarray_bind(tls, pArray, n, a, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 47497  	if rc != SQLITE_OK {
 47498  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0)))
 47499  		return TCL_ERROR
 47500  	}
 47501  	return TCL_OK
 47502  }
 47503  
 47504  func Sqlitetestintarray_Init(tls *libc.TLS, interp uintptr) int32 {
 47505  	var i int32
 47506  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd10))/uint64(unsafe.Sizeof(struct {
 47507  		FzName      uintptr
 47508  		FxProc      uintptr
 47509  		FclientData uintptr
 47510  	}{})); i++ {
 47511  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd10[i].FzName,
 47512  			aObjCmd10[i].FxProc, aObjCmd10[i].FclientData, uintptr(0))
 47513  	}
 47514  	return TCL_OK
 47515  }
 47516  
 47517  var aObjCmd10 = [2]struct {
 47518  	FzName      uintptr
 47519  	FxProc      uintptr
 47520  	FclientData uintptr
 47521  }{
 47522  	{FzName: ts + 32759, FxProc: 0},
 47523  	{FzName: ts + 32783, FxProc: 0},
 47524  }
 47525  
 47526  type jt_file1 = struct {
 47527  	Fbase        sqlite3_file
 47528  	FzName       uintptr
 47529  	Fflags       int32
 47530  	FeLock       int32
 47531  	FnPage       u32
 47532  	FnPagesize   u32
 47533  	FpWritable   uintptr
 47534  	FaCksum      uintptr
 47535  	FnSync       int32
 47536  	F__ccgo_pad1 [4]byte
 47537  	FiMaxOff     sqlite3_int64
 47538  	FpNext       uintptr
 47539  	FpReal       uintptr
 47540  }
 47541  
 47542  type jt_file = jt_file1
 47543  
 47544  var jt_vfs = sqlite3_vfs{
 47545  	FiVersion:          2,
 47546  	FszOsFile:          int32(unsafe.Sizeof(jt_file{})),
 47547  	FmxPathname:        JT_MAX_PATHNAME,
 47548  	FzName:             ts + 32805,
 47549  	FxOpen:             0,
 47550  	FxDelete:           0,
 47551  	FxAccess:           0,
 47552  	FxFullPathname:     0,
 47553  	FxDlOpen:           0,
 47554  	FxDlError:          0,
 47555  	FxDlSym:            0,
 47556  	FxDlClose:          0,
 47557  	FxRandomness:       0,
 47558  	FxSleep:            0,
 47559  	FxCurrentTime:      0,
 47560  	FxGetLastError:     0,
 47561  	FxCurrentTimeInt64: 0,
 47562  }
 47563  
 47564  var jt_io_methods = sqlite3_io_methods{
 47565  	FiVersion:               1,
 47566  	FxClose:                 0,
 47567  	FxRead:                  0,
 47568  	FxWrite:                 0,
 47569  	FxTruncate:              0,
 47570  	FxSync:                  0,
 47571  	FxFileSize:              0,
 47572  	FxLock:                  0,
 47573  	FxUnlock:                0,
 47574  	FxCheckReservedLock:     0,
 47575  	FxFileControl:           0,
 47576  	FxSectorSize:            0,
 47577  	FxDeviceCharacteristics: 0,
 47578  }
 47579  
 47580  type JtGlobal = struct {
 47581  	FpVfs  uintptr
 47582  	FpList uintptr
 47583  }
 47584  
 47585  var g2 = JtGlobal{}
 47586  
 47587  func enterJtMutex(tls *libc.TLS) {
 47588  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 47589  }
 47590  
 47591  func leaveJtMutex(tls *libc.TLS) {
 47592  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_STATIC_PRNG))
 47593  }
 47594  
 47595  func stop_ioerr_simulation(tls *libc.TLS, piSave uintptr, piSave2 uintptr) {
 47596  	*(*int32)(unsafe.Pointer(piSave)) = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 47597  	*(*int32)(unsafe.Pointer(piSave2)) = sqlite3.Xsqlite3_io_error_hit
 47598  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(-1))
 47599  	sqlite3.Xsqlite3_io_error_hit = 0
 47600  }
 47601  
 47602  func start_ioerr_simulation(tls *libc.TLS, iSave int32, iSave2 int32) {
 47603  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, iSave)
 47604  	sqlite3.Xsqlite3_io_error_hit = iSave2
 47605  }
 47606  
 47607  func closeTransaction(tls *libc.TLS, p uintptr) {
 47608  	sqlite3.Xsqlite3BitvecDestroy(tls, (*jt_file)(unsafe.Pointer(p)).FpWritable)
 47609  	sqlite3.Xsqlite3_free(tls, (*jt_file)(unsafe.Pointer(p)).FaCksum)
 47610  	(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 47611  	(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 47612  	(*jt_file)(unsafe.Pointer(p)).FnSync = 0
 47613  }
 47614  
 47615  func jtClose(tls *libc.TLS, pFile uintptr) int32 {
 47616  	var pp uintptr
 47617  	var p uintptr = pFile
 47618  
 47619  	closeTransaction(tls, p)
 47620  	enterJtMutex(tls)
 47621  	if (*jt_file)(unsafe.Pointer(p)).FzName != 0 {
 47622  		for pp = uintptr(unsafe.Pointer(&g2)) + 8; *(*uintptr)(unsafe.Pointer(pp)) != p; pp = *(*uintptr)(unsafe.Pointer(pp)) + 64 {
 47623  		}
 47624  		*(*uintptr)(unsafe.Pointer(pp)) = (*jt_file)(unsafe.Pointer(p)).FpNext
 47625  	}
 47626  	leaveJtMutex(tls)
 47627  	sqlite3.Xsqlite3OsClose(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 47628  	return SQLITE_OK
 47629  }
 47630  
 47631  func jtRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47632  	var p uintptr = pFile
 47633  	return sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 47634  }
 47635  
 47636  func locateDatabaseHandle(tls *libc.TLS, zJournal uintptr, noLock int32) uintptr {
 47637  	var pMain uintptr = uintptr(0)
 47638  	enterJtMutex(tls)
 47639  	for pMain = g2.FpList; pMain != 0; pMain = (*jt_file)(unsafe.Pointer(pMain)).FpNext {
 47640  		var nName int32 = int32(libc.Xstrlen(tls, zJournal) - libc.Xstrlen(tls, ts+32808))
 47641  		if (*jt_file)(unsafe.Pointer(pMain)).Fflags&SQLITE_OPEN_MAIN_DB != 0 &&
 47642  			int32(libc.Xstrlen(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName)) == nName &&
 47643  			0 == libc.Xmemcmp(tls, (*jt_file)(unsafe.Pointer(pMain)).FzName, zJournal, uint64(nName)) &&
 47644  			((*jt_file)(unsafe.Pointer(pMain)).FeLock >= SQLITE_LOCK_RESERVED || noLock != 0) {
 47645  			break
 47646  		}
 47647  	}
 47648  	leaveJtMutex(tls)
 47649  	return pMain
 47650  }
 47651  
 47652  func decodeUint32(tls *libc.TLS, z uintptr) u32 {
 47653  	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))))
 47654  }
 47655  
 47656  func genCksum(tls *libc.TLS, z uintptr, n int32) u32 {
 47657  	var i int32
 47658  	var cksum u32 = u32(0)
 47659  	for i = 0; i < n; i++ {
 47660  		cksum = cksum + u32(*(*uint8)(unsafe.Pointer(z + uintptr(i)))) + cksum<<3
 47661  	}
 47662  	return cksum
 47663  }
 47664  
 47665  func decodeJournalHdr(tls *libc.TLS, zBuf uintptr, pnRec uintptr, pnPage uintptr, pnSector uintptr, pnPagesize uintptr) int32 {
 47666  	bp := tls.Alloc(8)
 47667  	defer tls.Free(8)
 47668  
 47669  	*(*[8]uint8)(unsafe.Pointer(bp)) = [8]uint8{uint8(0xd9), uint8(0xd5), uint8(0x05), uint8(0xf9), uint8(0x20), uint8(0xa1), uint8(0x63), uint8(0xd7)}
 47670  	if libc.Xmemcmp(tls, bp, zBuf, uint64(8)) != 0 {
 47671  		return SQLITE_ERROR
 47672  	}
 47673  	if pnRec != 0 {
 47674  		*(*u32)(unsafe.Pointer(pnRec)) = decodeUint32(tls, zBuf+8)
 47675  	}
 47676  	if pnPage != 0 {
 47677  		*(*u32)(unsafe.Pointer(pnPage)) = decodeUint32(tls, zBuf+16)
 47678  	}
 47679  	if pnSector != 0 {
 47680  		*(*u32)(unsafe.Pointer(pnSector)) = decodeUint32(tls, zBuf+20)
 47681  	}
 47682  	if pnPagesize != 0 {
 47683  		*(*u32)(unsafe.Pointer(pnPagesize)) = decodeUint32(tls, zBuf+24)
 47684  	}
 47685  	return SQLITE_OK
 47686  }
 47687  
 47688  func openTransaction(tls *libc.TLS, pMain uintptr, pJournal uintptr) int32 {
 47689  	bp := tls.Alloc(8)
 47690  	defer tls.Free(8)
 47691  
 47692  	var aData uintptr
 47693  	var p uintptr = (*jt_file)(unsafe.Pointer(pMain)).FpReal
 47694  	var rc int32 = SQLITE_OK
 47695  
 47696  	closeTransaction(tls, pMain)
 47697  	aData = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47698  	(*jt_file)(unsafe.Pointer(pMain)).FpWritable = sqlite3.Xsqlite3BitvecCreate(tls, (*jt_file)(unsafe.Pointer(pMain)).FnPage)
 47699  	(*jt_file)(unsafe.Pointer(pMain)).FaCksum = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(u32(0)))*uint64((*jt_file)(unsafe.Pointer(pMain)).FnPage+u32(1))))
 47700  	(*jt_file)(unsafe.Pointer(pJournal)).FiMaxOff = int64(0)
 47701  
 47702  	if !(int32((*jt_file)(unsafe.Pointer(pMain)).FpWritable) != 0) || !(int32((*jt_file)(unsafe.Pointer(pMain)).FaCksum) != 0) || !(aData != 0) {
 47703  		rc = SQLITE_IOERR | int32(12)<<8
 47704  	} else if (*jt_file)(unsafe.Pointer(pMain)).FnPage > u32(0) {
 47705  		var iTrunk u32
 47706  
 47707  		stop_ioerr_simulation(tls, bp, bp+4)
 47708  
 47709  		rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), int64(0))
 47710  		if rc == SQLITE_OK {
 47711  			var nDbsize u32 = decodeUint32(tls, aData+28)
 47712  			if nDbsize > u32(0) && libc.Xmemcmp(tls, aData+24, aData+92, uint64(4)) == 0 {
 47713  				var iPg u32
 47714  				for iPg = nDbsize + u32(1); iPg <= (*jt_file)(unsafe.Pointer(pMain)).FnPage; iPg++ {
 47715  					sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, iPg)
 47716  				}
 47717  			}
 47718  		}
 47719  		iTrunk = decodeUint32(tls, aData+32)
 47720  		for rc == SQLITE_OK && iTrunk > u32(0) {
 47721  			var nLeaf u32
 47722  			var iLeaf u32
 47723  			var iOff sqlite3_int64 = i64(iTrunk-u32(1)) * i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 47724  			rc = sqlite3.Xsqlite3OsRead(tls, p, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 47725  			nLeaf = decodeUint32(tls, aData+4)
 47726  			for iLeaf = u32(0); rc == SQLITE_OK && iLeaf < nLeaf; iLeaf++ {
 47727  				var pgno u32 = decodeUint32(tls, aData+uintptr(u32(8)+u32(4)*iLeaf))
 47728  				sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 47729  			}
 47730  			iTrunk = decodeUint32(tls, aData)
 47731  		}
 47732  
 47733  		if rc == SQLITE_OK {
 47734  			var ii int32
 47735  			for ii = 0; rc == SQLITE_OK && ii < int32((*jt_file)(unsafe.Pointer(pMain)).FnPage); ii++ {
 47736  				var iOff i64 = i64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize) * i64(ii)
 47737  				if iOff == i64(sqlite3.Xsqlite3PendingByte) {
 47738  					continue
 47739  				}
 47740  				rc = sqlite3.Xsqlite3OsRead(tls, (*jt_file)(unsafe.Pointer(pMain)).FpReal, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff)
 47741  				*(*u32)(unsafe.Pointer((*jt_file)(unsafe.Pointer(pMain)).FaCksum + uintptr(ii)*4)) = genCksum(tls, aData, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47742  				if ii+1 == int32((*jt_file)(unsafe.Pointer(pMain)).FnPage) && rc == SQLITE_IOERR|int32(2)<<8 {
 47743  					rc = SQLITE_OK
 47744  				}
 47745  			}
 47746  		}
 47747  
 47748  		start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 47749  	}
 47750  
 47751  	sqlite3.Xsqlite3_free(tls, aData)
 47752  	return rc
 47753  }
 47754  
 47755  func readJournalFile(tls *libc.TLS, p uintptr, pMain uintptr) int32 {
 47756  	bp := tls.Alloc(52)
 47757  	defer tls.Free(52)
 47758  
 47759  	var rc int32
 47760  
 47761  	var pReal uintptr
 47762  	var iOff sqlite3_int64
 47763  	var iSize sqlite3_int64
 47764  	var aPage uintptr
 47765  
 47766  	var cksum u32
 47767  	_ = cksum
 47768  	var pgno u32
 47769  
 47770  	var ii u32
 47771  	rc = SQLITE_OK
 47772  	pReal = (*jt_file)(unsafe.Pointer(p)).FpReal
 47773  	iOff = int64(0)
 47774  	iSize = (*jt_file)(unsafe.Pointer(p)).FiMaxOff
 47775  
 47776  	aPage = sqlite3.Xsqlite3_malloc(tls, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47777  	if !!(aPage != 0) {
 47778  		goto __1
 47779  	}
 47780  	return SQLITE_IOERR | int32(12)<<8
 47781  __1:
 47782  	;
 47783  	stop_ioerr_simulation(tls, bp, bp+4)
 47784  
 47785  __2:
 47786  	if !(rc == SQLITE_OK && iOff < iSize) {
 47787  		goto __3
 47788  	}
 47789  
 47790  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 47791  	if !(rc != SQLITE_OK ||
 47792  		decodeJournalHdr(tls, bp+8, bp+36, bp+40, bp+44, bp+48) != 0) {
 47793  		goto __4
 47794  	}
 47795  	goto finish_rjf
 47796  __4:
 47797  	;
 47798  	iOff = iOff + sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))
 47799  
 47800  	if !(*(*u32)(unsafe.Pointer(bp + 36)) == u32(0)) {
 47801  		goto __5
 47802  	}
 47803  
 47804  	if !(iSize >= iOff+sqlite3_int64(*(*u32)(unsafe.Pointer(bp + 44)))) {
 47805  		goto __6
 47806  	}
 47807  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 28, iOff)
 47808  	if !(rc != SQLITE_OK || 0 == decodeJournalHdr(tls, bp+8, uintptr(0), uintptr(0), uintptr(0), uintptr(0))) {
 47809  		goto __7
 47810  	}
 47811  	goto __2
 47812  __7:
 47813  	;
 47814  __6:
 47815  	;
 47816  	*(*u32)(unsafe.Pointer(bp + 36)) = u32((iSize - iOff) / sqlite3_int64((*jt_file)(unsafe.Pointer(pMain)).FnPagesize+u32(8)))
 47817  __5:
 47818  	;
 47819  	ii = u32(0)
 47820  __8:
 47821  	if !(rc == SQLITE_OK && ii < *(*u32)(unsafe.Pointer(bp + 36)) && iOff < iSize) {
 47822  		goto __10
 47823  	}
 47824  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, bp+8, 4, iOff)
 47825  	if !(rc == SQLITE_OK) {
 47826  		goto __11
 47827  	}
 47828  	pgno = decodeUint32(tls, bp+8)
 47829  	if !(pgno > u32(0) && pgno <= (*jt_file)(unsafe.Pointer(pMain)).FnPage) {
 47830  		goto __12
 47831  	}
 47832  	if !(0 == sqlite3.Xsqlite3BitvecTest(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)) {
 47833  		goto __13
 47834  	}
 47835  	rc = sqlite3.Xsqlite3OsRead(tls, pReal, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize), iOff+int64(4))
 47836  	if !(rc == SQLITE_OK) {
 47837  		goto __14
 47838  	}
 47839  	cksum = genCksum(tls, aPage, int32((*jt_file)(unsafe.Pointer(pMain)).FnPagesize))
 47840  
 47841  __14:
 47842  	;
 47843  __13:
 47844  	;
 47845  	sqlite3.Xsqlite3BitvecSet(tls, (*jt_file)(unsafe.Pointer(pMain)).FpWritable, pgno)
 47846  __12:
 47847  	;
 47848  	iOff = iOff + sqlite3_int64(u32(8)+(*jt_file)(unsafe.Pointer(pMain)).FnPagesize)
 47849  __11:
 47850  	;
 47851  	goto __9
 47852  __9:
 47853  	ii++
 47854  	goto __8
 47855  	goto __10
 47856  __10:
 47857  	;
 47858  	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)))
 47859  	goto __2
 47860  __3:
 47861  	;
 47862  finish_rjf:
 47863  	start_ioerr_simulation(tls, *(*int32)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 4)))
 47864  	sqlite3.Xsqlite3_free(tls, aPage)
 47865  	if !(rc == SQLITE_IOERR|int32(2)<<8) {
 47866  		goto __15
 47867  	}
 47868  	rc = SQLITE_OK
 47869  __15:
 47870  	;
 47871  	return rc
 47872  }
 47873  
 47874  func jtWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 47875  	var rc int32
 47876  	var p uintptr = pFile
 47877  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 47878  		if iOfst == int64(0) {
 47879  			var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47880  
 47881  			if iAmt == 28 {
 47882  				closeTransaction(tls, pMain)
 47883  			} else if iAmt != 12 {
 47884  				var z uintptr = zBuf
 47885  				(*jt_file)(unsafe.Pointer(pMain)).FnPage = decodeUint32(tls, z+16)
 47886  				(*jt_file)(unsafe.Pointer(pMain)).FnPagesize = decodeUint32(tls, z+24)
 47887  				if SQLITE_OK != libc.AssignInt32(&rc, openTransaction(tls, pMain, p)) {
 47888  					return rc
 47889  				}
 47890  			}
 47891  		}
 47892  		if (*jt_file)(unsafe.Pointer(p)).FiMaxOff < iOfst+sqlite_int64(iAmt) {
 47893  			(*jt_file)(unsafe.Pointer(p)).FiMaxOff = iOfst + sqlite_int64(iAmt)
 47894  		}
 47895  	}
 47896  
 47897  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 47898  		if iAmt < int32((*jt_file)(unsafe.Pointer(p)).FnPagesize) &&
 47899  			(*jt_file)(unsafe.Pointer(p)).FnPagesize%u32(iAmt) == u32(0) &&
 47900  			iOfst >= sqlite_int64(sqlite3.Xsqlite3PendingByte+512) &&
 47901  			iOfst+sqlite_int64(iAmt) <= sqlite_int64(u32(sqlite3.Xsqlite3PendingByte)+(*jt_file)(unsafe.Pointer(p)).FnPagesize) {
 47902  		} else {
 47903  			var pgno u32 = u32(iOfst/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1))
 47904  			_ = pgno
 47905  
 47906  		}
 47907  	}
 47908  
 47909  	rc = sqlite3.Xsqlite3OsWrite(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, zBuf, iAmt, iOfst)
 47910  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && iAmt == 12 {
 47911  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47912  		var rc2 int32 = readJournalFile(tls, p, pMain)
 47913  		if rc == SQLITE_OK {
 47914  			rc = rc2
 47915  		}
 47916  	}
 47917  	return rc
 47918  }
 47919  
 47920  func jtTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 47921  	var p uintptr = pFile
 47922  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 && size == int64(0) {
 47923  		var pMain uintptr = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47924  		closeTransaction(tls, pMain)
 47925  	}
 47926  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_DB != 0 && (*jt_file)(unsafe.Pointer(p)).FpWritable != 0 {
 47927  		var pgno u32
 47928  		var locking_page u32 = u32(sqlite3.Xsqlite3PendingByte)/(*jt_file)(unsafe.Pointer(p)).FnPagesize + u32(1)
 47929  		_ = locking_page
 47930  		for pgno = u32(size/sqlite_int64((*jt_file)(unsafe.Pointer(p)).FnPagesize) + int64(1)); pgno <= (*jt_file)(unsafe.Pointer(p)).FnPage; pgno++ {
 47931  		}
 47932  	}
 47933  	return sqlite3.Xsqlite3OsTruncate(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, size)
 47934  }
 47935  
 47936  func jtSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 47937  	var p uintptr = pFile
 47938  
 47939  	if (*jt_file)(unsafe.Pointer(p)).Fflags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 47940  		var rc int32
 47941  		var pMain uintptr
 47942  
 47943  		pMain = locateDatabaseHandle(tls, (*jt_file)(unsafe.Pointer(p)).FzName, 0)
 47944  
 47945  		if pMain != 0 && (*jt_file)(unsafe.Pointer(pMain)).FpWritable != 0 {
 47946  			(*jt_file)(unsafe.Pointer(pMain)).FnSync++
 47947  			rc = readJournalFile(tls, p, pMain)
 47948  			if rc != SQLITE_OK {
 47949  				return rc
 47950  			}
 47951  		}
 47952  	}
 47953  
 47954  	return sqlite3.Xsqlite3OsSync(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, flags)
 47955  }
 47956  
 47957  func jtFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 47958  	var p uintptr = pFile
 47959  	return sqlite3.Xsqlite3OsFileSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pSize)
 47960  }
 47961  
 47962  func jtLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 47963  	var rc int32
 47964  	var p uintptr = pFile
 47965  	rc = sqlite3.Xsqlite3OsLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 47966  	if rc == SQLITE_OK && eLock > (*jt_file)(unsafe.Pointer(p)).FeLock {
 47967  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 47968  	}
 47969  	return rc
 47970  }
 47971  
 47972  func jtUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 47973  	var rc int32
 47974  	var p uintptr = pFile
 47975  	rc = sqlite3.Xsqlite3OsUnlock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, eLock)
 47976  	if rc == SQLITE_OK && eLock < (*jt_file)(unsafe.Pointer(p)).FeLock {
 47977  		(*jt_file)(unsafe.Pointer(p)).FeLock = eLock
 47978  	}
 47979  	return rc
 47980  }
 47981  
 47982  func jtCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 47983  	var p uintptr = pFile
 47984  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*jt_file)(unsafe.Pointer(p)).FpReal, pResOut)
 47985  }
 47986  
 47987  func jtFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 47988  	var p uintptr = pFile
 47989  	return (*struct {
 47990  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 47991  	})(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)
 47992  }
 47993  
 47994  func jtSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 47995  	var p uintptr = pFile
 47996  	return sqlite3.Xsqlite3OsSectorSize(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 47997  }
 47998  
 47999  func jtDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 48000  	var p uintptr = pFile
 48001  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*jt_file)(unsafe.Pointer(p)).FpReal)
 48002  }
 48003  
 48004  func jtOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 48005  	var rc int32
 48006  	var p uintptr = pFile
 48007  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(0)
 48008  	(*jt_file)(unsafe.Pointer(p)).FpReal = p + 1*80
 48009  	(*sqlite3_file)(unsafe.Pointer((*jt_file)(unsafe.Pointer(p)).FpReal)).FpMethods = uintptr(0)
 48010  	rc = sqlite3.Xsqlite3OsOpen(tls, g2.FpVfs, zName, (*jt_file)(unsafe.Pointer(p)).FpReal, flags, pOutFlags)
 48011  
 48012  	if rc == SQLITE_OK {
 48013  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&jt_io_methods))
 48014  		(*jt_file)(unsafe.Pointer(p)).FeLock = 0
 48015  		(*jt_file)(unsafe.Pointer(p)).FzName = zName
 48016  		(*jt_file)(unsafe.Pointer(p)).Fflags = flags
 48017  		(*jt_file)(unsafe.Pointer(p)).FpNext = uintptr(0)
 48018  		(*jt_file)(unsafe.Pointer(p)).FpWritable = uintptr(0)
 48019  		(*jt_file)(unsafe.Pointer(p)).FaCksum = uintptr(0)
 48020  		enterJtMutex(tls)
 48021  		if zName != 0 {
 48022  			(*jt_file)(unsafe.Pointer(p)).FpNext = g2.FpList
 48023  			g2.FpList = p
 48024  		}
 48025  		leaveJtMutex(tls)
 48026  	}
 48027  	return rc
 48028  }
 48029  
 48030  func jtDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 48031  	var nPath int32 = int32(libc.Xstrlen(tls, zPath))
 48032  	if nPath > 8 && 0 == libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nPath-8)) {
 48033  		var pMain uintptr = locateDatabaseHandle(tls, zPath, 0)
 48034  		if pMain != 0 {
 48035  			closeTransaction(tls, pMain)
 48036  		}
 48037  	}
 48038  
 48039  	return sqlite3.Xsqlite3OsDelete(tls, g2.FpVfs, zPath, dirSync)
 48040  }
 48041  
 48042  func jtAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 48043  	return sqlite3.Xsqlite3OsAccess(tls, g2.FpVfs, zPath, flags, pResOut)
 48044  }
 48045  
 48046  func jtFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 48047  	return sqlite3.Xsqlite3OsFullPathname(tls, g2.FpVfs, zPath, nOut, zOut)
 48048  }
 48049  
 48050  func jtDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 48051  	return (*struct {
 48052  		f func(*libc.TLS, uintptr, uintptr) uintptr
 48053  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlOpen})).f(tls, g2.FpVfs, zPath)
 48054  }
 48055  
 48056  func jtDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 48057  	(*struct {
 48058  		f func(*libc.TLS, uintptr, int32, uintptr)
 48059  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlError})).f(tls, g2.FpVfs, nByte, zErrMsg)
 48060  }
 48061  
 48062  func jtDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 48063  	return (*struct {
 48064  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 48065  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlSym})).f(tls, g2.FpVfs, p, zSym)
 48066  }
 48067  
 48068  func jtDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 48069  	(*struct {
 48070  		f func(*libc.TLS, uintptr, uintptr)
 48071  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxDlClose})).f(tls, g2.FpVfs, pHandle)
 48072  }
 48073  
 48074  func jtRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 48075  	return sqlite3.Xsqlite3OsRandomness(tls, g2.FpVfs, nByte, zBufOut)
 48076  }
 48077  
 48078  func jtSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 48079  	return sqlite3.Xsqlite3OsSleep(tls, g2.FpVfs, nMicro)
 48080  }
 48081  
 48082  func jtCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48083  	return (*struct {
 48084  		f func(*libc.TLS, uintptr, uintptr) int32
 48085  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTime})).f(tls, g2.FpVfs, pTimeOut)
 48086  }
 48087  
 48088  func jtCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 48089  	return (*struct {
 48090  		f func(*libc.TLS, uintptr, uintptr) int32
 48091  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64})).f(tls, g2.FpVfs, pTimeOut)
 48092  }
 48093  
 48094  func jtGetLastError(tls *libc.TLS, pVfs uintptr, n int32, z uintptr) int32 {
 48095  	return (*struct {
 48096  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 48097  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxGetLastError})).f(tls, g2.FpVfs, n, z)
 48098  }
 48099  
 48100  func jt_register(tls *libc.TLS, zWrap uintptr, isDefault int32) int32 {
 48101  	g2.FpVfs = sqlite3.Xsqlite3_vfs_find(tls, zWrap)
 48102  	if g2.FpVfs == uintptr(0) {
 48103  		return SQLITE_ERROR
 48104  	}
 48105  	jt_vfs.FszOsFile = int32(uint64(unsafe.Sizeof(jt_file{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FszOsFile))
 48106  	if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FiVersion == 1 {
 48107  		jt_vfs.FiVersion = 1
 48108  	} else if (*sqlite3_vfs)(unsafe.Pointer(g2.FpVfs)).FxCurrentTimeInt64 == uintptr(0) {
 48109  		jt_vfs.FxCurrentTimeInt64 = uintptr(0)
 48110  	}
 48111  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&jt_vfs)), isDefault)
 48112  	return SQLITE_OK
 48113  }
 48114  
 48115  func jt_unregister(tls *libc.TLS) {
 48116  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&jt_vfs)))
 48117  }
 48118  
 48119  type MemFault = struct {
 48120  	FiCountdown   int32
 48121  	FnRepeat      int32
 48122  	FnBenign      int32
 48123  	FnFail        int32
 48124  	FnOkBefore    int32
 48125  	FnOkAfter     int32
 48126  	Fenable       u8
 48127  	F__ccgo_pad1  [3]byte
 48128  	FisInstalled  int32
 48129  	FisBenignMode int32
 48130  	F__ccgo_pad2  [4]byte
 48131  	Fm            sqlite3_mem_methods
 48132  }
 48133  
 48134  var memfault MemFault
 48135  
 48136  func sqlite3Fault(tls *libc.TLS) {
 48137  	cnt1++
 48138  }
 48139  
 48140  var cnt1 int32 = 0
 48141  
 48142  func sqlite3FirstFault(tls *libc.TLS) {
 48143  	cnt2++
 48144  }
 48145  
 48146  var cnt2 int32 = 0
 48147  
 48148  func faultsimStep(tls *libc.TLS) int32 {
 48149  	if !(int32(memfault.Fenable) != 0) {
 48150  		memfault.FnOkAfter++
 48151  		return 0
 48152  	}
 48153  	if memfault.FiCountdown > 0 {
 48154  		memfault.FiCountdown--
 48155  		memfault.FnOkBefore++
 48156  		return 0
 48157  	}
 48158  	if memfault.FnFail == 0 {
 48159  		sqlite3FirstFault(tls)
 48160  	}
 48161  	sqlite3Fault(tls)
 48162  	memfault.FnFail++
 48163  	if memfault.FisBenignMode > 0 {
 48164  		memfault.FnBenign++
 48165  	}
 48166  	memfault.FnRepeat--
 48167  	if memfault.FnRepeat <= 0 {
 48168  		memfault.Fenable = u8(0)
 48169  	}
 48170  	return 1
 48171  }
 48172  
 48173  func faultsimMalloc(tls *libc.TLS, n int32) uintptr {
 48174  	var p uintptr = uintptr(0)
 48175  	if !(faultsimStep(tls) != 0) {
 48176  		p = (*struct {
 48177  			f func(*libc.TLS, int32) uintptr
 48178  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxMalloc})).f(tls, n)
 48179  	}
 48180  	return p
 48181  }
 48182  
 48183  func faultsimRealloc(tls *libc.TLS, pOld uintptr, n int32) uintptr {
 48184  	var p uintptr = uintptr(0)
 48185  	if !(faultsimStep(tls) != 0) {
 48186  		p = (*struct {
 48187  			f func(*libc.TLS, uintptr, int32) uintptr
 48188  		})(unsafe.Pointer(&struct{ uintptr }{memfault.Fm.FxRealloc})).f(tls, pOld, n)
 48189  	}
 48190  	return p
 48191  }
 48192  
 48193  func faultsimConfig(tls *libc.TLS, nDelay int32, nRepeat int32) {
 48194  	memfault.FiCountdown = nDelay
 48195  	memfault.FnRepeat = nRepeat
 48196  	memfault.FnBenign = 0
 48197  	memfault.FnFail = 0
 48198  	memfault.FnOkBefore = 0
 48199  	memfault.FnOkAfter = 0
 48200  	memfault.Fenable = u8(libc.Bool32(nDelay >= 0))
 48201  
 48202  	memfault.FisBenignMode = 0
 48203  }
 48204  
 48205  func faultsimFailures(tls *libc.TLS) int32 {
 48206  	return memfault.FnFail
 48207  }
 48208  
 48209  func faultsimBenignFailures(tls *libc.TLS) int32 {
 48210  	return memfault.FnBenign
 48211  }
 48212  
 48213  func faultsimPending(tls *libc.TLS) int32 {
 48214  	if memfault.Fenable != 0 {
 48215  		return memfault.FiCountdown
 48216  	} else {
 48217  		return -1
 48218  	}
 48219  	return int32(0)
 48220  }
 48221  
 48222  func faultsimBeginBenign(tls *libc.TLS) {
 48223  	memfault.FisBenignMode++
 48224  }
 48225  
 48226  func faultsimEndBenign(tls *libc.TLS) {
 48227  	memfault.FisBenignMode--
 48228  }
 48229  
 48230  func faultsimInstall(tls *libc.TLS, install int32) int32 {
 48231  	bp := tls.Alloc(200)
 48232  	defer tls.Free(200)
 48233  
 48234  	var rc int32
 48235  
 48236  	install = func() int32 {
 48237  		if install != 0 {
 48238  			return 1
 48239  		}
 48240  		return 0
 48241  	}()
 48242  
 48243  	if install == memfault.FisInstalled {
 48244  		return SQLITE_ERROR
 48245  	}
 48246  
 48247  	if install != 0 {
 48248  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp, uintptr(unsafe.Pointer(&memfault))+40))
 48249  
 48250  		if rc == SQLITE_OK {
 48251  			*(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)) = memfault.Fm
 48252  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxMalloc = *(*uintptr)(unsafe.Pointer(&struct {
 48253  				f func(*libc.TLS, int32) uintptr
 48254  			}{faultsimMalloc}))
 48255  			(*sqlite3_mem_methods)(unsafe.Pointer(bp + 72)).FxRealloc = *(*uintptr)(unsafe.Pointer(&struct {
 48256  				f func(*libc.TLS, uintptr, int32) uintptr
 48257  			}{faultsimRealloc}))
 48258  			rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+8, bp+72))
 48259  		}
 48260  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48261  			libc.VaList(bp+16, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimBeginBenign})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) }{faultsimEndBenign}))))
 48262  	} else {
 48263  		libc.Xmemset(tls, bp+136, 0, uint64(unsafe.Sizeof(sqlite3_mem_methods{})))
 48264  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+32, bp+136))
 48265  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMALLOC, libc.VaList(bp+40, bp+136))
 48266  
 48267  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MALLOC, libc.VaList(bp+48, uintptr(unsafe.Pointer(&memfault))+40))
 48268  		sqlite3.Xsqlite3_test_control(tls, SQLITE_TESTCTRL_BENIGN_MALLOC_HOOKS,
 48269  			libc.VaList(bp+56, uintptr(0), uintptr(0)))
 48270  	}
 48271  
 48272  	if rc == SQLITE_OK {
 48273  		memfault.FisInstalled = 1
 48274  	}
 48275  	return rc
 48276  }
 48277  
 48278  func pointerToText(tls *libc.TLS, p uintptr, z uintptr) {
 48279  	bp := tls.Alloc(20)
 48280  	defer tls.Free(20)
 48281  	*(*uintptr)(unsafe.Pointer(bp + 8)) = p
 48282  
 48283  	var i int32
 48284  	var k int32
 48285  
 48286  	if *(*uintptr)(unsafe.Pointer(bp + 8)) == uintptr(0) {
 48287  		libc.Xstrcpy(tls, z, ts+14193)
 48288  		return
 48289  	}
 48290  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48291  		libc.Xmemcpy(tls, bp, bp+8, uint64(unsafe.Sizeof(uintptr(0))))
 48292  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48293  		libc.Xmemcpy(tls, bp+16, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48294  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = sqlite3_uint64(*(*uint32)(unsafe.Pointer(bp + 16)))
 48295  	} else {
 48296  	}
 48297  	i = 0
 48298  	k = int32(uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) - uint64(1))
 48299  __1:
 48300  	if !(uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2)) {
 48301  		goto __3
 48302  	}
 48303  	{
 48304  		*(*int8)(unsafe.Pointer(z + uintptr(k))) = zHex[*(*sqlite3_uint64)(unsafe.Pointer(bp))&uint64(0xf)]
 48305  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) >>= 4
 48306  
 48307  	}
 48308  	goto __2
 48309  __2:
 48310  	i++
 48311  	k--
 48312  	goto __1
 48313  	goto __3
 48314  __3:
 48315  	;
 48316  	*(*int8)(unsafe.Pointer(z + 16)) = int8(0)
 48317  }
 48318  
 48319  var zHex = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 48320  
 48321  func hexToInt(tls *libc.TLS, h int32) int32 {
 48322  	if h >= '0' && h <= '9' {
 48323  		return h - '0'
 48324  	} else if h >= 'a' && h <= 'f' {
 48325  		return h - 'a' + 10
 48326  	} else {
 48327  		return -1
 48328  	}
 48329  	return int32(0)
 48330  }
 48331  
 48332  func textToPointer(tls *libc.TLS, z uintptr, pp uintptr) int32 {
 48333  	bp := tls.Alloc(12)
 48334  	defer tls.Free(12)
 48335  
 48336  	*(*sqlite3_uint64)(unsafe.Pointer(bp)) = uint64(0)
 48337  	var i int32
 48338  
 48339  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(uintptr(0)))*uint64(2) && *(*int8)(unsafe.Pointer(z)) != 0; i++ {
 48340  		var v int32
 48341  		v = hexToInt(tls, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))))
 48342  		if v < 0 {
 48343  			return TCL_ERROR
 48344  		}
 48345  		*(*sqlite3_uint64)(unsafe.Pointer(bp)) = *(*sqlite3_uint64)(unsafe.Pointer(bp))*uint64(16) + sqlite3_uint64(v)
 48346  	}
 48347  	if int32(*(*int8)(unsafe.Pointer(z))) != 0 {
 48348  		return TCL_ERROR
 48349  	}
 48350  	if uint64(unsafe.Sizeof(sqlite3_uint64(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48351  		libc.Xmemcpy(tls, pp, bp, uint64(unsafe.Sizeof(sqlite3_uint64(0))))
 48352  	} else if uint64(unsafe.Sizeof(uint32(0))) == uint64(unsafe.Sizeof(uintptr(0))) {
 48353  		*(*uint32)(unsafe.Pointer(bp + 8)) = uint32(*(*sqlite3_uint64)(unsafe.Pointer(bp)))
 48354  		libc.Xmemcpy(tls, pp, bp+8, uint64(unsafe.Sizeof(uint32(0))))
 48355  	} else {
 48356  	}
 48357  	return TCL_OK
 48358  }
 48359  
 48360  func test_malloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48361  	bp := tls.Alloc(120)
 48362  	defer tls.Free(120)
 48363  
 48364  	var p uintptr
 48365  
 48366  	if objc != 2 {
 48367  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32817)
 48368  		return TCL_ERROR
 48369  	}
 48370  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48371  		return TCL_ERROR
 48372  	}
 48373  	p = sqlite3.Xsqlite3_malloc(tls, int32(uint32(*(*int32)(unsafe.Pointer(bp + 16)))))
 48374  	pointerToText(tls, p, bp+20)
 48375  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+20, uintptr(0)))
 48376  	return TCL_OK
 48377  }
 48378  
 48379  func test_realloc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48380  	bp := tls.Alloc(156)
 48381  	defer tls.Free(156)
 48382  
 48383  	var p uintptr
 48384  
 48385  	if objc != 3 {
 48386  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32824)
 48387  		return TCL_ERROR
 48388  	}
 48389  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+40) != 0 {
 48390  		return TCL_ERROR
 48391  	}
 48392  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+48) != 0 {
 48393  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48394  		return TCL_ERROR
 48395  	}
 48396  	p = sqlite3.Xsqlite3_realloc(tls, *(*uintptr)(unsafe.Pointer(bp + 48)), int32(uint32(*(*int32)(unsafe.Pointer(bp + 40)))))
 48397  	pointerToText(tls, p, bp+56)
 48398  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, bp+56, uintptr(0)))
 48399  	return TCL_OK
 48400  }
 48401  
 48402  func test_free(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48403  	bp := tls.Alloc(32)
 48404  	defer tls.Free(32)
 48405  
 48406  	if objc != 2 {
 48407  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32851)
 48408  		return TCL_ERROR
 48409  	}
 48410  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+24) != 0 {
 48411  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48412  		return TCL_ERROR
 48413  	}
 48414  	sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 48415  	return TCL_OK
 48416  }
 48417  
 48418  func test_memset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48419  	bp := tls.Alloc(172)
 48420  	defer tls.Free(172)
 48421  
 48422  	var i int32
 48423  	var zHex uintptr
 48424  	var zOut uintptr
 48425  
 48426  	if objc != 4 {
 48427  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32857)
 48428  		return TCL_ERROR
 48429  	}
 48430  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 48431  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48432  		return TCL_ERROR
 48433  	}
 48434  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 48435  		return TCL_ERROR
 48436  	}
 48437  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 48438  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 48439  		return TCL_ERROR
 48440  	}
 48441  	zHex = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+68)
 48442  	if uint64(*(*int32)(unsafe.Pointer(bp + 68))) > uint64(unsafe.Sizeof([100]int8{}))*uint64(2) {
 48443  		*(*int32)(unsafe.Pointer(bp + 68)) = int32(uint64(unsafe.Sizeof([100]int8{})) * uint64(2))
 48444  	}
 48445  	*(*int32)(unsafe.Pointer(bp + 68)) = sqlite3TestHexToBin(tls, zHex, *(*int32)(unsafe.Pointer(bp + 68)), bp+72)
 48446  	if *(*int32)(unsafe.Pointer(bp + 68)) == 0 {
 48447  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, ts+32896, uintptr(0)))
 48448  		return TCL_ERROR
 48449  	}
 48450  	zOut = *(*uintptr)(unsafe.Pointer(bp + 56))
 48451  	for i = 0; i < *(*int32)(unsafe.Pointer(bp + 64)); i++ {
 48452  		*(*int8)(unsafe.Pointer(zOut + uintptr(i))) = *(*int8)(unsafe.Pointer(bp + 72 + uintptr(i%*(*int32)(unsafe.Pointer(bp + 68)))))
 48453  	}
 48454  	return TCL_OK
 48455  }
 48456  
 48457  func test_memget(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48458  	bp := tls.Alloc(168)
 48459  	defer tls.Free(168)
 48460  
 48461  	var n int32
 48462  	var zBin uintptr
 48463  
 48464  	if objc != 3 {
 48465  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32904)
 48466  		return TCL_ERROR
 48467  	}
 48468  	if textToPointer(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+56) != 0 {
 48469  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+32837, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), uintptr(0)))
 48470  		return TCL_ERROR
 48471  	}
 48472  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+64) != 0 {
 48473  		return TCL_ERROR
 48474  	}
 48475  	if *(*int32)(unsafe.Pointer(bp + 64)) <= 0 {
 48476  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+32874, uintptr(0)))
 48477  		return TCL_ERROR
 48478  	}
 48479  	zBin = *(*uintptr)(unsafe.Pointer(bp + 56))
 48480  	for *(*int32)(unsafe.Pointer(bp + 64)) > 0 {
 48481  		if uint64(*(*int32)(unsafe.Pointer(bp + 64))) > (uint64(unsafe.Sizeof([100]int8{}))-uint64(1))/uint64(2) {
 48482  			n = int32((uint64(unsafe.Sizeof([100]int8{})) - uint64(1)) / uint64(2))
 48483  		} else {
 48484  			n = *(*int32)(unsafe.Pointer(bp + 64))
 48485  		}
 48486  		libc.Xmemcpy(tls, bp+68, zBin, uint64(n))
 48487  		zBin += uintptr(n)
 48488  		*(*int32)(unsafe.Pointer(bp + 64)) -= n
 48489  		sqlite3TestBinToHex(tls, bp+68, n)
 48490  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+68, uintptr(0)))
 48491  	}
 48492  	return TCL_OK
 48493  }
 48494  
 48495  func test_memory_used(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48496  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_used(tls)))
 48497  	return TCL_OK
 48498  }
 48499  
 48500  func test_memory_highwater(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48501  	bp := tls.Alloc(4)
 48502  	defer tls.Free(4)
 48503  
 48504  	*(*int32)(unsafe.Pointer(bp)) = 0
 48505  	if objc != 1 && objc != 2 {
 48506  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32917)
 48507  		return TCL_ERROR
 48508  	}
 48509  	if objc == 2 {
 48510  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48511  			return TCL_ERROR
 48512  		}
 48513  	}
 48514  	tcl.XTcl_SetObjResult(tls, interp,
 48515  		tcl.XTcl_NewWideIntObj(tls, sqlite3.Xsqlite3_memory_highwater(tls, *(*int32)(unsafe.Pointer(bp)))))
 48516  	return TCL_OK
 48517  }
 48518  
 48519  func test_memdebug_backtrace(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48520  	bp := tls.Alloc(4)
 48521  	defer tls.Free(4)
 48522  
 48523  	if objc != 2 {
 48524  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32925)
 48525  		return TCL_ERROR
 48526  	}
 48527  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 48528  		return TCL_ERROR
 48529  	}
 48530  	return TCL_OK
 48531  }
 48532  
 48533  func test_memdebug_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48534  	if objc != 2 {
 48535  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 48536  		return TCL_ERROR
 48537  	}
 48538  	return TCL_OK
 48539  }
 48540  
 48541  func test_memdebug_malloc_count(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48542  	var nMalloc int32 = -1
 48543  	if objc != 1 {
 48544  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48545  		return TCL_ERROR
 48546  	}
 48547  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nMalloc))
 48548  	return TCL_OK
 48549  }
 48550  
 48551  func test_memdebug_fail(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48552  	bp := tls.Alloc(36)
 48553  	defer tls.Free(36)
 48554  
 48555  	var ii int32
 48556  
 48557  	*(*int32)(unsafe.Pointer(bp + 32)) = 1
 48558  	var pBenignCnt uintptr = uintptr(0)
 48559  	var nBenign int32
 48560  	var nFail int32 = 0
 48561  
 48562  	if objc < 2 {
 48563  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32939)
 48564  		return TCL_ERROR
 48565  	}
 48566  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+24) != 0 {
 48567  		return TCL_ERROR
 48568  	}
 48569  
 48570  	for ii = 2; ii < objc; ii = ii + 2 {
 48571  		var zOption uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii)*8)), bp+28)
 48572  		var zErr uintptr = uintptr(0)
 48573  
 48574  		if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32957, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 48575  			if ii == objc-1 {
 48576  				zErr = ts + 12638
 48577  			} else {
 48578  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8)), bp+32) != 0 {
 48579  					return TCL_ERROR
 48580  				}
 48581  			}
 48582  		} else if *(*int32)(unsafe.Pointer(bp + 28)) > 1 && libc.Xstrncmp(tls, zOption, ts+32965, uint64(*(*int32)(unsafe.Pointer(bp + 28)))) == 0 {
 48583  			if ii == objc-1 {
 48584  				zErr = ts + 12638
 48585  			} else {
 48586  				pBenignCnt = *(*uintptr)(unsafe.Pointer(objv + uintptr(ii+1)*8))
 48587  			}
 48588  		} else {
 48589  			zErr = ts + 12444
 48590  		}
 48591  
 48592  		if zErr != 0 {
 48593  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, zErr, zOption, 0))
 48594  			return TCL_ERROR
 48595  		}
 48596  	}
 48597  
 48598  	nBenign = faultsimBenignFailures(tls)
 48599  	nFail = faultsimFailures(tls)
 48600  	faultsimConfig(tls, *(*int32)(unsafe.Pointer(bp + 24)), *(*int32)(unsafe.Pointer(bp + 32)))
 48601  
 48602  	if pBenignCnt != 0 {
 48603  		tcl.XTcl_ObjSetVar2(tls, interp, pBenignCnt, uintptr(0), tcl.XTcl_NewIntObj(tls, nBenign), 0)
 48604  	}
 48605  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nFail))
 48606  	return TCL_OK
 48607  }
 48608  
 48609  func test_memdebug_pending(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48610  	var nPending int32
 48611  	if objc != 1 {
 48612  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 48613  		return TCL_ERROR
 48614  	}
 48615  	nPending = faultsimPending(tls)
 48616  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, nPending))
 48617  	return TCL_OK
 48618  }
 48619  
 48620  var sqlite3_memdebug_title_count int32 = 0
 48621  
 48622  func test_memdebug_settitle(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48623  	sqlite3_memdebug_title_count++
 48624  	if objc != 2 {
 48625  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32976)
 48626  		return TCL_ERROR
 48627  	}
 48628  	return TCL_OK
 48629  }
 48630  
 48631  var aMallocLog Tcl_HashTable
 48632  var mallocLogEnabled int32 = 0
 48633  
 48634  type MallocLog1 = struct {
 48635  	FnCall int32
 48636  	FnByte int32
 48637  }
 48638  
 48639  type MallocLog = MallocLog1
 48640  
 48641  func test_memdebug_log_clear(tls *libc.TLS) {
 48642  	bp := tls.Alloc(24)
 48643  	defer tls.Free(24)
 48644  
 48645  	var pEntry uintptr
 48646  	for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp) {
 48647  		var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 48648  		tcl.XTcl_Free(tls, pLog)
 48649  	}
 48650  	tcl.XTcl_DeleteHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)))
 48651  	tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 48652  		if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 48653  			return uint64(1)
 48654  		}
 48655  		return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 48656  	}()))
 48657  }
 48658  
 48659  func test_memdebug_log(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48660  	bp := tls.Alloc(128)
 48661  	defer tls.Free(128)
 48662  
 48663  	if !(isInit != 0) {
 48664  		tcl.XTcl_InitHashTable(tls, uintptr(unsafe.Pointer(&aMallocLog)), int32(uint64(10)*func() uint64 {
 48665  			if uint64(unsafe.Sizeof(int32(0))) >= uint64(unsafe.Sizeof(uintptr(0))) {
 48666  				return uint64(1)
 48667  			}
 48668  			return uint64(unsafe.Sizeof(uintptr(0))) / uint64(unsafe.Sizeof(int32(0)))
 48669  		}()))
 48670  		isInit = 1
 48671  	}
 48672  
 48673  	if objc < 2 {
 48674  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 48675  	}
 48676  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&MB_strs)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp) != 0 {
 48677  		return TCL_ERROR
 48678  	}
 48679  
 48680  	switch uint32(*(*int32)(unsafe.Pointer(bp))) {
 48681  	case uint32(0):
 48682  		mallocLogEnabled = 1
 48683  		break
 48684  	case uint32(1):
 48685  		mallocLogEnabled = 0
 48686  		break
 48687  	case uint32(2):
 48688  		{
 48689  			var pEntry uintptr
 48690  			var pRet uintptr = tcl.XTcl_NewObj(tls)
 48691  
 48692  			for pEntry = tcl.XTcl_FirstHashEntry(tls, uintptr(unsafe.Pointer(&aMallocLog)), bp+8); pEntry != 0; pEntry = tcl.XTcl_NextHashEntry(tls, bp+8) {
 48693  				var pLog uintptr = (*Tcl_HashEntry)(unsafe.Pointer(pEntry)).FclientData
 48694  				var aKey uintptr = func() uintptr {
 48695  					if (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == 1 || (*Tcl_HashTable)(unsafe.Pointer(uintptr(unsafe.Pointer(&aMallocLog)))).FkeyType == -1 {
 48696  						return *(*uintptr)(unsafe.Pointer(pEntry + 32))
 48697  					}
 48698  					return pEntry + 32
 48699  				}()
 48700  				var ii int32
 48701  
 48702  				*(*uintptr)(unsafe.Pointer(bp + 32)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnCall)
 48703  				*(*uintptr)(unsafe.Pointer(bp + 32 + 1*8)) = tcl.XTcl_NewIntObj(tls, (*MallocLog)(unsafe.Pointer(pLog)).FnByte)
 48704  				for ii = 0; ii < MALLOC_LOG_FRAMES; ii++ {
 48705  					*(*uintptr)(unsafe.Pointer(bp + 32 + uintptr(ii+2)*8)) = tcl.XTcl_NewWideIntObj(tls, *(*Tcl_WideInt)(unsafe.Pointer(aKey + uintptr(ii)*8)))
 48706  				}
 48707  
 48708  				tcl.XTcl_ListObjAppendElement(tls, interp, pRet,
 48709  					tcl.XTcl_NewListObj(tls, MALLOC_LOG_FRAMES+2, bp+32))
 48710  			}
 48711  
 48712  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 48713  			break
 48714  
 48715  		}
 48716  	case uint32(3):
 48717  		{
 48718  			test_memdebug_log_clear(tls)
 48719  			break
 48720  
 48721  		}
 48722  
 48723  	case uint32(4):
 48724  		{
 48725  			break
 48726  
 48727  		}
 48728  	}
 48729  
 48730  	return TCL_OK
 48731  }
 48732  
 48733  var isInit int32 = 0
 48734  var MB_strs = [5]uintptr{ts + 32998, ts + 33004, ts + 33009, ts + 33014, ts + 33020}
 48735  
 48736  func test_config_pagecache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48737  	bp := tls.Alloc(56)
 48738  	defer tls.Free(56)
 48739  
 48740  	var pRes uintptr
 48741  	if objc != 3 {
 48742  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33025)
 48743  		return TCL_ERROR
 48744  	}
 48745  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+48) != 0 {
 48746  		return TCL_ERROR
 48747  	}
 48748  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+52) != 0 {
 48749  		return TCL_ERROR
 48750  	}
 48751  	libc.Xfree(tls, buf1)
 48752  	buf1 = uintptr(0)
 48753  
 48754  	pRes = tcl.XTcl_NewObj(tls)
 48755  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszPage))
 48756  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pRes, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnPage))
 48757  	tcl.XTcl_SetObjResult(tls, interp, pRes)
 48758  
 48759  	if *(*int32)(unsafe.Pointer(bp + 48)) < 0 {
 48760  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp, uintptr(0), 0, 0))
 48761  	} else {
 48762  		buf1 = libc.Xmalloc(tls, uint64(*(*int32)(unsafe.Pointer(bp + 48))**(*int32)(unsafe.Pointer(bp + 52))))
 48763  		sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PAGECACHE, libc.VaList(bp+24, buf1, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 48764  	}
 48765  	return TCL_OK
 48766  }
 48767  
 48768  var buf1 uintptr = uintptr(0)
 48769  
 48770  func test_alt_pcache(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48771  	bp := tls.Alloc(32)
 48772  	defer tls.Free(32)
 48773  
 48774  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 48775  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 48776  	*(*int32)(unsafe.Pointer(bp + 28)) = 0
 48777  	if objc < 2 || objc > 5 {
 48778  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 48779  			ts+33032)
 48780  		return TCL_ERROR
 48781  	}
 48782  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48783  		return TCL_ERROR
 48784  	}
 48785  	if objc >= 3 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 48786  		return TCL_ERROR
 48787  	}
 48788  	if objc >= 4 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 {
 48789  		return TCL_ERROR
 48790  	}
 48791  	if objc >= 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 48792  		return TCL_ERROR
 48793  	}
 48794  	if *(*int32)(unsafe.Pointer(bp + 20)) < 0 || *(*int32)(unsafe.Pointer(bp + 20)) > 100 {
 48795  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+33079,
 48796  			uintptr(0)))
 48797  		return TCL_ERROR
 48798  	}
 48799  	installTestPCache(tls, *(*int32)(unsafe.Pointer(bp + 16)), uint32(*(*int32)(unsafe.Pointer(bp + 20))), uint32(*(*int32)(unsafe.Pointer(bp + 24))),
 48800  		uint32(*(*int32)(unsafe.Pointer(bp + 28))))
 48801  	return TCL_OK
 48802  }
 48803  
 48804  func test_config_memstatus(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48805  	bp := tls.Alloc(12)
 48806  	defer tls.Free(12)
 48807  
 48808  	var rc int32
 48809  	if objc != 2 {
 48810  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 48811  		return TCL_ERROR
 48812  	}
 48813  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48814  		return TCL_ERROR
 48815  	}
 48816  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MEMSTATUS, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48817  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 48818  	return TCL_OK
 48819  }
 48820  
 48821  func test_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48822  	bp := tls.Alloc(24)
 48823  	defer tls.Free(24)
 48824  
 48825  	var pRet uintptr
 48826  	if objc != 3 {
 48827  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33122)
 48828  		return TCL_ERROR
 48829  	}
 48830  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16) != 0 {
 48831  		return TCL_ERROR
 48832  	}
 48833  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+20) != 0 {
 48834  		return TCL_ERROR
 48835  	}
 48836  	pRet = tcl.XTcl_NewObj(tls)
 48837  	tcl.XTcl_ListObjAppendElement(tls,
 48838  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FszLookaside))
 48839  	tcl.XTcl_ListObjAppendElement(tls,
 48840  		interp, pRet, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3Config.FnLookaside))
 48841  	sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_LOOKASIDE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 16)), *(*int32)(unsafe.Pointer(bp + 20))))
 48842  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 48843  	return TCL_OK
 48844  }
 48845  
 48846  func test_db_config_lookaside(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48847  	bp := tls.Alloc(84)
 48848  	defer tls.Free(84)
 48849  
 48850  	var rc int32
 48851  
 48852  	if objc != 5 {
 48853  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33133)
 48854  		return TCL_ERROR
 48855  	}
 48856  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+64) != 0 {
 48857  		return TCL_ERROR
 48858  	}
 48859  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+72) != 0 {
 48860  		return TCL_ERROR
 48861  	}
 48862  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+76) != 0 {
 48863  		return TCL_ERROR
 48864  	}
 48865  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+80) != 0 {
 48866  		return TCL_ERROR
 48867  	}
 48868  	if *(*int32)(unsafe.Pointer(bp + 72)) == 0 {
 48869  		rc = sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 64)), SQLITE_DBCONFIG_LOOKASIDE, libc.VaList(bp, uintptr(0), *(*int32)(unsafe.Pointer(bp + 76)), *(*int32)(unsafe.Pointer(bp + 80))))
 48870  	} else if *(*int32)(unsafe.Pointer(bp + 72)) >= 1 && *(*int32)(unsafe.Pointer(bp + 72)) <= 2 && uint64(*(*int32)(unsafe.Pointer(bp + 76))**(*int32)(unsafe.Pointer(bp + 80))) <= uint64(unsafe.Sizeof([10000]int8{})) {
 48871  		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 + 72)))*10000, *(*int32)(unsafe.Pointer(bp + 76)), *(*int32)(unsafe.Pointer(bp + 80))))
 48872  	} else {
 48873  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+33150, uintptr(0)))
 48874  		return TCL_ERROR
 48875  	}
 48876  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 48877  	return TCL_OK
 48878  }
 48879  
 48880  var azBuf [2][10000]int8
 48881  
 48882  func test_config_heap(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48883  	bp := tls.Alloc(56)
 48884  	defer tls.Free(56)
 48885  
 48886  	var rc int32
 48887  
 48888  	var aArg uintptr = objv + 1*8
 48889  	var nArg int32 = objc - 1
 48890  
 48891  	if nArg != 2 {
 48892  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33188)
 48893  		return TCL_ERROR
 48894  	}
 48895  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+48) != 0 {
 48896  		return TCL_ERROR
 48897  	}
 48898  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg + 1*8)), bp+52) != 0 {
 48899  		return TCL_ERROR
 48900  	}
 48901  
 48902  	if *(*int32)(unsafe.Pointer(bp + 48)) == 0 {
 48903  		libc.Xfree(tls, zBuf)
 48904  		zBuf = uintptr(0)
 48905  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp, uintptr(0), 0, 0))
 48906  	} else {
 48907  		zBuf = libc.Xrealloc(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp + 48))))
 48908  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_HEAP, libc.VaList(bp+24, zBuf, *(*int32)(unsafe.Pointer(bp + 48)), *(*int32)(unsafe.Pointer(bp + 52))))
 48909  	}
 48910  
 48911  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48912  	return TCL_OK
 48913  }
 48914  
 48915  var zBuf uintptr
 48916  
 48917  func test_config_heap_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48918  	bp := tls.Alloc(12)
 48919  	defer tls.Free(12)
 48920  
 48921  	var rc int32
 48922  
 48923  	var aArg uintptr = objv + 1*8
 48924  	var nArg int32 = objc - 1
 48925  
 48926  	if nArg != 1 {
 48927  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+16219)
 48928  		return TCL_ERROR
 48929  	}
 48930  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(aArg)), bp+8) != 0 {
 48931  		return TCL_ERROR
 48932  	}
 48933  
 48934  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_WIN32_HEAPSIZE, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48935  
 48936  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48937  	return TCL_OK
 48938  }
 48939  
 48940  func test_config_error(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48941  	bp := tls.Alloc(40)
 48942  	defer tls.Free(40)
 48943  
 48944  	if objc != 2 && objc != 1 {
 48945  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33204)
 48946  		return TCL_ERROR
 48947  	}
 48948  	if objc == 2 {
 48949  		if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+32) != 0 {
 48950  			return TCL_ERROR
 48951  		}
 48952  		if sqlite3.Xsqlite3_db_config(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 99999, 0) != SQLITE_ERROR {
 48953  			tcl.XTcl_AppendResult(tls, interp,
 48954  				libc.VaList(bp, ts+33209,
 48955  					uintptr(0)))
 48956  			return TCL_ERROR
 48957  		}
 48958  	} else {
 48959  		if sqlite3.Xsqlite3_config(tls, 99999, 0) != SQLITE_ERROR {
 48960  			tcl.XTcl_AppendResult(tls, interp,
 48961  				libc.VaList(bp+16, ts+33267,
 48962  					uintptr(0)))
 48963  			return TCL_ERROR
 48964  		}
 48965  	}
 48966  	return TCL_OK
 48967  }
 48968  
 48969  func test_config_uri(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48970  	bp := tls.Alloc(12)
 48971  	defer tls.Free(12)
 48972  
 48973  	var rc int32
 48974  
 48975  	if objc != 2 {
 48976  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 48977  		return TCL_ERROR
 48978  	}
 48979  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 48980  		return TCL_ERROR
 48981  	}
 48982  
 48983  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_URI, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 48984  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 48985  
 48986  	return TCL_OK
 48987  }
 48988  
 48989  func test_config_cis(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 48990  	bp := tls.Alloc(12)
 48991  	defer tls.Free(12)
 48992  
 48993  	var rc int32
 48994  
 48995  	if objc != 2 {
 48996  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 48997  		return TCL_ERROR
 48998  	}
 48999  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49000  		return TCL_ERROR
 49001  	}
 49002  
 49003  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_COVERING_INDEX_SCAN, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49004  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49005  
 49006  	return TCL_OK
 49007  }
 49008  
 49009  func test_config_pmasz(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49010  	bp := tls.Alloc(12)
 49011  	defer tls.Free(12)
 49012  
 49013  	var rc int32
 49014  
 49015  	if objc != 2 {
 49016  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+10152)
 49017  		return TCL_ERROR
 49018  	}
 49019  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+8) != 0 {
 49020  		return TCL_ERROR
 49021  	}
 49022  
 49023  	rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PMASZ, libc.VaList(bp, *(*int32)(unsafe.Pointer(bp + 8))))
 49024  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49025  
 49026  	return TCL_OK
 49027  }
 49028  
 49029  func test_dump_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49030  	if objc != 2 {
 49031  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 49032  		return TCL_ERROR
 49033  	}
 49034  
 49035  	switch int32(clientData) {
 49036  	case 3:
 49037  		{
 49038  		}
 49039  		fallthrough
 49040  	case 5:
 49041  		{
 49042  		}
 49043  	}
 49044  	return TCL_OK
 49045  }
 49046  
 49047  func test_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49048  	bp := tls.Alloc(16)
 49049  	defer tls.Free(16)
 49050  
 49051  	var rc int32
 49052  
 49053  	var i int32
 49054  	*(*int32)(unsafe.Pointer(bp)) = 0
 49055  
 49056  	var zOpName uintptr
 49057  	var pResult uintptr
 49058  	if objc != 3 {
 49059  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33318)
 49060  		return TCL_ERROR
 49061  	}
 49062  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 49063  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49064  		FzName       uintptr
 49065  		Fop          int32
 49066  		F__ccgo_pad1 [4]byte
 49067  	}{}))); i++ {
 49068  		if libc.Xstrcmp(tls, aOp1[i].FzName, zOpName) == 0 {
 49069  			*(*int32)(unsafe.Pointer(bp)) = aOp1[i].Fop
 49070  			break
 49071  		}
 49072  	}
 49073  	if i >= int32(uint64(unsafe.Sizeof(aOp1))/uint64(unsafe.Sizeof(struct {
 49074  		FzName       uintptr
 49075  		Fop          int32
 49076  		F__ccgo_pad1 [4]byte
 49077  	}{}))) {
 49078  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49079  			return TCL_ERROR
 49080  		}
 49081  	}
 49082  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+4) != 0 {
 49083  		return TCL_ERROR
 49084  	}
 49085  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49086  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 49087  	rc = sqlite3.Xsqlite3_status(tls, *(*int32)(unsafe.Pointer(bp)), bp+8, bp+12, *(*int32)(unsafe.Pointer(bp + 4)))
 49088  	pResult = tcl.XTcl_NewObj(tls)
 49089  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49090  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 8))))
 49091  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 12))))
 49092  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49093  	return TCL_OK
 49094  }
 49095  
 49096  var aOp1 = [10]struct {
 49097  	FzName       uintptr
 49098  	Fop          int32
 49099  	F__ccgo_pad1 [4]byte
 49100  }{
 49101  	{FzName: ts + 33338},
 49102  	{FzName: ts + 33364, Fop: SQLITE_STATUS_MALLOC_SIZE},
 49103  	{FzName: ts + 33390, Fop: SQLITE_STATUS_PAGECACHE_USED},
 49104  	{FzName: ts + 33419, Fop: SQLITE_STATUS_PAGECACHE_OVERFLOW},
 49105  	{FzName: ts + 33452, Fop: SQLITE_STATUS_PAGECACHE_SIZE},
 49106  	{FzName: ts + 33481, Fop: SQLITE_STATUS_SCRATCH_USED},
 49107  	{FzName: ts + 33508, Fop: SQLITE_STATUS_SCRATCH_OVERFLOW},
 49108  	{FzName: ts + 33539, Fop: SQLITE_STATUS_SCRATCH_SIZE},
 49109  	{FzName: ts + 33566, Fop: SQLITE_STATUS_PARSER_STACK},
 49110  	{FzName: ts + 33593, Fop: SQLITE_STATUS_MALLOC_COUNT},
 49111  }
 49112  
 49113  func test_db_status(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49114  	bp := tls.Alloc(24)
 49115  	defer tls.Free(24)
 49116  
 49117  	var rc int32
 49118  
 49119  	var i int32
 49120  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 49121  
 49122  	var zOpName uintptr
 49123  
 49124  	var pResult uintptr
 49125  	if objc != 4 {
 49126  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33620)
 49127  		return TCL_ERROR
 49128  	}
 49129  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 49130  		return TCL_ERROR
 49131  	}
 49132  	zOpName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 49133  	if libc.Xmemcmp(tls, zOpName, ts+33643, uint64(7)) == 0 {
 49134  		zOpName += uintptr(7)
 49135  	}
 49136  	if libc.Xmemcmp(tls, zOpName, ts+33651, uint64(9)) == 0 {
 49137  		zOpName += uintptr(9)
 49138  	}
 49139  	for i = 0; i < int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49140  		FzName       uintptr
 49141  		Fop          int32
 49142  		F__ccgo_pad1 [4]byte
 49143  	}{}))); i++ {
 49144  		if libc.Xstrcmp(tls, aOp2[i].FzName, zOpName) == 0 {
 49145  			*(*int32)(unsafe.Pointer(bp + 8)) = aOp2[i].Fop
 49146  			break
 49147  		}
 49148  	}
 49149  	if i >= int32(uint64(unsafe.Sizeof(aOp2))/uint64(unsafe.Sizeof(struct {
 49150  		FzName       uintptr
 49151  		Fop          int32
 49152  		F__ccgo_pad1 [4]byte
 49153  	}{}))) {
 49154  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+8) != 0 {
 49155  			return TCL_ERROR
 49156  		}
 49157  	}
 49158  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+12) != 0 {
 49159  		return TCL_ERROR
 49160  	}
 49161  	*(*int32)(unsafe.Pointer(bp + 16)) = 0
 49162  	*(*int32)(unsafe.Pointer(bp + 20)) = 0
 49163  	rc = sqlite3.Xsqlite3_db_status(tls, *(*uintptr)(unsafe.Pointer(bp)), *(*int32)(unsafe.Pointer(bp + 8)), bp+16, bp+20, *(*int32)(unsafe.Pointer(bp + 12)))
 49164  	pResult = tcl.XTcl_NewObj(tls)
 49165  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, rc))
 49166  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 16))))
 49167  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pResult, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(bp + 20))))
 49168  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 49169  	return TCL_OK
 49170  }
 49171  
 49172  var aOp2 = [13]struct {
 49173  	FzName       uintptr
 49174  	Fop          int32
 49175  	F__ccgo_pad1 [4]byte
 49176  }{
 49177  	{FzName: ts + 33661},
 49178  	{FzName: ts + 33676, Fop: SQLITE_DBSTATUS_CACHE_USED},
 49179  	{FzName: ts + 33687, Fop: SQLITE_DBSTATUS_SCHEMA_USED},
 49180  	{FzName: ts + 33699, Fop: SQLITE_DBSTATUS_STMT_USED},
 49181  	{FzName: ts + 33709, Fop: SQLITE_DBSTATUS_LOOKASIDE_HIT},
 49182  	{FzName: ts + 33723, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE},
 49183  	{FzName: ts + 33743, Fop: SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL},
 49184  	{FzName: ts + 33763, Fop: SQLITE_DBSTATUS_CACHE_HIT},
 49185  	{FzName: ts + 33773, Fop: SQLITE_DBSTATUS_CACHE_MISS},
 49186  	{FzName: ts + 33784, Fop: SQLITE_DBSTATUS_CACHE_WRITE},
 49187  	{FzName: ts + 33796, Fop: SQLITE_DBSTATUS_DEFERRED_FKS},
 49188  	{FzName: ts + 33809, Fop: SQLITE_DBSTATUS_CACHE_USED_SHARED},
 49189  	{FzName: ts + 33827, Fop: SQLITE_DBSTATUS_CACHE_SPILL},
 49190  }
 49191  
 49192  func test_install_malloc_faultsim(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49193  	bp := tls.Alloc(4)
 49194  	defer tls.Free(4)
 49195  
 49196  	var rc int32
 49197  
 49198  	if objc != 2 {
 49199  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 49200  		return TCL_ERROR
 49201  	}
 49202  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) {
 49203  		return TCL_ERROR
 49204  	}
 49205  	rc = faultsimInstall(tls, *(*int32)(unsafe.Pointer(bp)))
 49206  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49207  	return TCL_OK
 49208  }
 49209  
 49210  func test_install_memsys3(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49211  	var rc int32 = SQLITE_MISUSE
 49212  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 49213  	return TCL_OK
 49214  }
 49215  
 49216  func test_vfs_oom_test(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 49217  	bp := tls.Alloc(4)
 49218  	defer tls.Free(4)
 49219  
 49220  	if objc > 2 {
 49221  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+33839)
 49222  		return TCL_ERROR
 49223  	} else if objc == 2 {
 49224  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp) != 0 {
 49225  			return TCL_ERROR
 49226  		}
 49227  		sqlite3.Xsqlite3_memdebug_vfs_oom_test = *(*int32)(unsafe.Pointer(bp))
 49228  	}
 49229  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, sqlite3.Xsqlite3_memdebug_vfs_oom_test))
 49230  	return TCL_OK
 49231  }
 49232  
 49233  func Sqlitetest_malloc_Init(tls *libc.TLS, interp uintptr) int32 {
 49234  	var i int32
 49235  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd11))/uint64(unsafe.Sizeof(struct {
 49236  		FzName       uintptr
 49237  		FxProc       uintptr
 49238  		FclientData  int32
 49239  		F__ccgo_pad1 [4]byte
 49240  	}{})); i++ {
 49241  		var c ClientData = uintptr(intptr_t(aObjCmd11[i].FclientData))
 49242  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd11[i].FzName, aObjCmd11[i].FxProc, c, uintptr(0))
 49243  	}
 49244  	return TCL_OK
 49245  }
 49246  
 49247  var aObjCmd11 = [32]struct {
 49248  	FzName       uintptr
 49249  	FxProc       uintptr
 49250  	FclientData  int32
 49251  	F__ccgo_pad1 [4]byte
 49252  }{
 49253  	{FzName: ts + 28095, FxProc: 0},
 49254  	{FzName: ts + 28110, FxProc: 0},
 49255  	{FzName: ts + 33849, FxProc: 0},
 49256  	{FzName: ts + 33862, FxProc: 0},
 49257  	{FzName: ts + 33869, FxProc: 0},
 49258  	{FzName: ts + 33876, FxProc: 0},
 49259  	{FzName: ts + 33896, FxProc: 0},
 49260  	{FzName: ts + 33921, FxProc: 0},
 49261  	{FzName: ts + 33948, FxProc: 0},
 49262  	{FzName: ts + 33970, FxProc: 0},
 49263  	{FzName: ts + 33992, FxProc: 0},
 49264  	{FzName: ts + 34017, FxProc: 0},
 49265  	{FzName: ts + 34043, FxProc: 0},
 49266  	{FzName: ts + 34073, FxProc: 0},
 49267  	{FzName: ts + 34094, FxProc: 0},
 49268  	{FzName: ts + 34119, FxProc: 0},
 49269  	{FzName: ts + 34145, FxProc: 0},
 49270  	{FzName: ts + 34160, FxProc: 0},
 49271  	{FzName: ts + 34178, FxProc: 0},
 49272  	{FzName: ts + 34202, FxProc: 0},
 49273  	{FzName: ts + 34222, FxProc: 0},
 49274  	{FzName: ts + 34247, FxProc: 0},
 49275  	{FzName: ts + 34272, FxProc: 0},
 49276  	{FzName: ts + 34297, FxProc: 0},
 49277  	{FzName: ts + 34318, FxProc: 0},
 49278  	{FzName: ts + 34337, FxProc: 0},
 49279  	{FzName: ts + 34356, FxProc: 0},
 49280  	{FzName: ts + 34377, FxProc: 0},
 49281  	{FzName: ts + 34405, FxProc: 0, FclientData: 3},
 49282  	{FzName: ts + 34426, FxProc: 0, FclientData: 5},
 49283  	{FzName: ts + 34447, FxProc: 0},
 49284  	{FzName: ts + 34471, FxProc: 0},
 49285  }
 49286  
 49287  type MD5Context1 = struct {
 49288  	FisInit int32
 49289  	Fbuf    [4]uint32
 49290  	Fbits   [2]uint32
 49291  	Fin     [64]uint8
 49292  }
 49293  
 49294  type MD5Context = MD5Context1
 49295  
 49296  func byteReverse(tls *libc.TLS, buf uintptr, longs uint32) {
 49297  	var t uint32
 49298  	for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&longs, 1) != 0 {
 49299  		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))))
 49300  		*(*uint32)(unsafe.Pointer(buf)) = t
 49301  		buf += uintptr(4)
 49302  	}
 49303  }
 49304  
 49305  func MD5Transform(tls *libc.TLS, buf uintptr, in uintptr) {
 49306  	var a uint32
 49307  	var b uint32
 49308  	var c uint32
 49309  	var d uint32
 49310  
 49311  	a = *(*uint32)(unsafe.Pointer(buf))
 49312  	b = *(*uint32)(unsafe.Pointer(buf + 1*4))
 49313  	c = *(*uint32)(unsafe.Pointer(buf + 2*4))
 49314  	d = *(*uint32)(unsafe.Pointer(buf + 3*4))
 49315  
 49316  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xd76aa478)
 49317  	a = a<<7 | a>>(32-7)
 49318  	a = a + b
 49319  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xe8c7b756)
 49320  	d = d<<12 | d>>(32-12)
 49321  	d = d + a
 49322  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x242070db))
 49323  	c = c<<17 | c>>(32-17)
 49324  	c = c + d
 49325  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xc1bdceee)
 49326  	b = b<<22 | b>>(32-22)
 49327  	b = b + c
 49328  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf57c0faf)
 49329  	a = a<<7 | a>>(32-7)
 49330  	a = a + b
 49331  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + uint32(0x4787c62a))
 49332  	d = d<<12 | d>>(32-12)
 49333  	d = d + a
 49334  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa8304613)
 49335  	c = c<<17 | c>>(32-17)
 49336  	c = c + d
 49337  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xfd469501)
 49338  	b = b<<22 | b>>(32-22)
 49339  	b = b + c
 49340  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x698098d8))
 49341  	a = a<<7 | a>>(32-7)
 49342  	a = a + b
 49343  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0x8b44f7af)
 49344  	d = d<<12 | d>>(32-12)
 49345  	d = d + a
 49346  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffff5bb1)
 49347  	c = c<<17 | c>>(32-17)
 49348  	c = c + d
 49349  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0x895cd7be)
 49350  	b = b<<22 | b>>(32-22)
 49351  	b = b + c
 49352  	a = a + (d ^ b&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x6b901122))
 49353  	a = a<<7 | a>>(32-7)
 49354  	a = a + b
 49355  	d = d + (c ^ a&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xfd987193)
 49356  	d = d<<12 | d>>(32-12)
 49357  	d = d + a
 49358  	c = c + (b ^ d&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xa679438e)
 49359  	c = c<<17 | c>>(32-17)
 49360  	c = c + d
 49361  	b = b + (a ^ c&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x49b40821))
 49362  	b = b<<22 | b>>(32-22)
 49363  	b = b + c
 49364  
 49365  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xf61e2562)
 49366  	a = a<<5 | a>>(32-5)
 49367  	a = a + b
 49368  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xc040b340)
 49369  	d = d<<9 | d>>(32-9)
 49370  	d = d + a
 49371  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x265e5a51))
 49372  	c = c<<14 | c>>(32-14)
 49373  	c = c + d
 49374  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in)) + 0xe9b6c7aa)
 49375  	b = b<<20 | b>>(32-20)
 49376  	b = b + c
 49377  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xd62f105d)
 49378  	a = a<<5 | a>>(32-5)
 49379  	a = a + b
 49380  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + uint32(0x02441453))
 49381  	d = d<<9 | d>>(32-9)
 49382  	d = d + a
 49383  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xd8a1e681)
 49384  	c = c<<14 | c>>(32-14)
 49385  	c = c + d
 49386  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xe7d3fbc8)
 49387  	b = b<<20 | b>>(32-20)
 49388  	b = b + c
 49389  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 9*4)) + uint32(0x21e1cde6))
 49390  	a = a<<5 | a>>(32-5)
 49391  	a = a + b
 49392  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xc33707d6)
 49393  	d = d<<9 | d>>(32-9)
 49394  	d = d + a
 49395  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xf4d50d87)
 49396  	c = c<<14 | c>>(32-14)
 49397  	c = c + d
 49398  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x455a14ed))
 49399  	b = b<<20 | b>>(32-20)
 49400  	b = b + c
 49401  	a = a + (c ^ d&(b^c) + *(*uint32)(unsafe.Pointer(in + 13*4)) + 0xa9e3e905)
 49402  	a = a<<5 | a>>(32-5)
 49403  	a = a + b
 49404  	d = d + (b ^ c&(a^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xfcefa3f8)
 49405  	d = d<<9 | d>>(32-9)
 49406  	d = d + a
 49407  	c = c + (a ^ b&(d^a) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x676f02d9))
 49408  	c = c<<14 | c>>(32-14)
 49409  	c = c + d
 49410  	b = b + (d ^ a&(c^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0x8d2a4c8a)
 49411  	b = b<<20 | b>>(32-20)
 49412  	b = b + c
 49413  
 49414  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfffa3942)
 49415  	a = a<<4 | a>>(32-4)
 49416  	a = a + b
 49417  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 8*4)) + 0x8771f681)
 49418  	d = d<<11 | d>>(32-11)
 49419  	d = d + a
 49420  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 11*4)) + uint32(0x6d9d6122))
 49421  	c = c<<16 | c>>(32-16)
 49422  	c = c + d
 49423  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xfde5380c)
 49424  	b = b<<23 | b>>(32-23)
 49425  	b = b + c
 49426  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0xa4beea44)
 49427  	a = a<<4 | a>>(32-4)
 49428  	a = a + b
 49429  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 4*4)) + uint32(0x4bdecfa9))
 49430  	d = d<<11 | d>>(32-11)
 49431  	d = d + a
 49432  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 7*4)) + 0xf6bb4b60)
 49433  	c = c<<16 | c>>(32-16)
 49434  	c = c + d
 49435  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xbebfbc70)
 49436  	b = b<<23 | b>>(32-23)
 49437  	b = b + c
 49438  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x289b7ec6))
 49439  	a = a<<4 | a>>(32-4)
 49440  	a = a + b
 49441  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in)) + 0xeaa127fa)
 49442  	d = d<<11 | d>>(32-11)
 49443  	d = d + a
 49444  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0xd4ef3085)
 49445  	c = c<<16 | c>>(32-16)
 49446  	c = c + d
 49447  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 6*4)) + uint32(0x04881d05))
 49448  	b = b<<23 | b>>(32-23)
 49449  	b = b + c
 49450  	a = a + (b ^ c ^ d + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xd9d4d039)
 49451  	a = a<<4 | a>>(32-4)
 49452  	a = a + b
 49453  	d = d + (a ^ b ^ c + *(*uint32)(unsafe.Pointer(in + 12*4)) + 0xe6db99e5)
 49454  	d = d<<11 | d>>(32-11)
 49455  	d = d + a
 49456  	c = c + (d ^ a ^ b + *(*uint32)(unsafe.Pointer(in + 15*4)) + uint32(0x1fa27cf8))
 49457  	c = c<<16 | c>>(32-16)
 49458  	c = c + d
 49459  	b = b + (c ^ d ^ a + *(*uint32)(unsafe.Pointer(in + 2*4)) + 0xc4ac5665)
 49460  	b = b<<23 | b>>(32-23)
 49461  	b = b + c
 49462  
 49463  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in)) + 0xf4292244)
 49464  	a = a<<6 | a>>(32-6)
 49465  	a = a + b
 49466  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 7*4)) + uint32(0x432aff97))
 49467  	d = d<<10 | d>>(32-10)
 49468  	d = d + a
 49469  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 14*4)) + 0xab9423a7)
 49470  	c = c<<15 | c>>(32-15)
 49471  	c = c + d
 49472  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 5*4)) + 0xfc93a039)
 49473  	b = b<<21 | b>>(32-21)
 49474  	b = b + c
 49475  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 12*4)) + uint32(0x655b59c3))
 49476  	a = a<<6 | a>>(32-6)
 49477  	a = a + b
 49478  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 3*4)) + 0x8f0ccc92)
 49479  	d = d<<10 | d>>(32-10)
 49480  	d = d + a
 49481  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 10*4)) + 0xffeff47d)
 49482  	c = c<<15 | c>>(32-15)
 49483  	c = c + d
 49484  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 1*4)) + 0x85845dd1)
 49485  	b = b<<21 | b>>(32-21)
 49486  	b = b + c
 49487  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 8*4)) + uint32(0x6fa87e4f))
 49488  	a = a<<6 | a>>(32-6)
 49489  	a = a + b
 49490  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 15*4)) + 0xfe2ce6e0)
 49491  	d = d<<10 | d>>(32-10)
 49492  	d = d + a
 49493  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 6*4)) + 0xa3014314)
 49494  	c = c<<15 | c>>(32-15)
 49495  	c = c + d
 49496  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 13*4)) + uint32(0x4e0811a1))
 49497  	b = b<<21 | b>>(32-21)
 49498  	b = b + c
 49499  	a = a + (c ^ (b | ^d) + *(*uint32)(unsafe.Pointer(in + 4*4)) + 0xf7537e82)
 49500  	a = a<<6 | a>>(32-6)
 49501  	a = a + b
 49502  	d = d + (b ^ (a | ^c) + *(*uint32)(unsafe.Pointer(in + 11*4)) + 0xbd3af235)
 49503  	d = d<<10 | d>>(32-10)
 49504  	d = d + a
 49505  	c = c + (a ^ (d | ^b) + *(*uint32)(unsafe.Pointer(in + 2*4)) + uint32(0x2ad7d2bb))
 49506  	c = c<<15 | c>>(32-15)
 49507  	c = c + d
 49508  	b = b + (d ^ (c | ^a) + *(*uint32)(unsafe.Pointer(in + 9*4)) + 0xeb86d391)
 49509  	b = b<<21 | b>>(32-21)
 49510  	b = b + c
 49511  
 49512  	*(*uint32)(unsafe.Pointer(buf)) += a
 49513  	*(*uint32)(unsafe.Pointer(buf + 1*4)) += b
 49514  	*(*uint32)(unsafe.Pointer(buf + 2*4)) += c
 49515  	*(*uint32)(unsafe.Pointer(buf + 3*4)) += d
 49516  }
 49517  
 49518  func MD5Init(tls *libc.TLS, ctx uintptr) {
 49519  	(*MD5Context)(unsafe.Pointer(ctx)).FisInit = 1
 49520  	*(*uint32)(unsafe.Pointer(ctx + 4)) = uint32(0x67452301)
 49521  	*(*uint32)(unsafe.Pointer(ctx + 4 + 1*4)) = 0xefcdab89
 49522  	*(*uint32)(unsafe.Pointer(ctx + 4 + 2*4)) = 0x98badcfe
 49523  	*(*uint32)(unsafe.Pointer(ctx + 4 + 3*4)) = uint32(0x10325476)
 49524  	*(*uint32)(unsafe.Pointer(ctx + 20)) = uint32(0)
 49525  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) = uint32(0)
 49526  }
 49527  
 49528  func MD5Update(tls *libc.TLS, ctx uintptr, buf uintptr, len uint32) {
 49529  	var t uint32
 49530  
 49531  	t = *(*uint32)(unsafe.Pointer(ctx + 20))
 49532  	if libc.AssignPtrUint32(ctx+20, t+len<<3) < t {
 49533  		*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4))++
 49534  	}
 49535  	*(*uint32)(unsafe.Pointer(ctx + 20 + 1*4)) += len >> 29
 49536  
 49537  	t = t >> 3 & uint32(0x3f)
 49538  
 49539  	if t != 0 {
 49540  		var p uintptr = ctx + 28 + uintptr(t)
 49541  
 49542  		t = uint32(64) - t
 49543  		if len < t {
 49544  			libc.Xmemcpy(tls, p, buf, uint64(len))
 49545  			return
 49546  		}
 49547  		libc.Xmemcpy(tls, p, buf, uint64(t))
 49548  		byteReverse(tls, ctx+28, uint32(16))
 49549  		MD5Transform(tls, ctx+4, ctx+28)
 49550  		buf += uintptr(t)
 49551  		len = len - t
 49552  	}
 49553  
 49554  	for len >= uint32(64) {
 49555  		libc.Xmemcpy(tls, ctx+28, buf, uint64(64))
 49556  		byteReverse(tls, ctx+28, uint32(16))
 49557  		MD5Transform(tls, ctx+4, ctx+28)
 49558  		buf += uintptr(64)
 49559  		len = len - uint32(64)
 49560  	}
 49561  
 49562  	libc.Xmemcpy(tls, ctx+28, buf, uint64(len))
 49563  }
 49564  
 49565  func MD5Final(tls *libc.TLS, digest uintptr, ctx uintptr) {
 49566  	var count uint32
 49567  	var p uintptr
 49568  
 49569  	count = *(*uint32)(unsafe.Pointer(ctx + 20)) >> 3 & uint32(0x3F)
 49570  
 49571  	p = ctx + 28 + uintptr(count)
 49572  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = uint8(0x80)
 49573  
 49574  	count = uint32(64-1) - count
 49575  
 49576  	if count < uint32(8) {
 49577  		libc.Xmemset(tls, p, 0, uint64(count))
 49578  		byteReverse(tls, ctx+28, uint32(16))
 49579  		MD5Transform(tls, ctx+4, ctx+28)
 49580  
 49581  		libc.Xmemset(tls, ctx+28, 0, uint64(56))
 49582  	} else {
 49583  		libc.Xmemset(tls, p, 0, uint64(count-uint32(8)))
 49584  	}
 49585  	byteReverse(tls, ctx+28, uint32(14))
 49586  
 49587  	libc.Xmemcpy(tls, ctx+28+uintptr(14*4), ctx+20, uint64(8))
 49588  
 49589  	MD5Transform(tls, ctx+4, ctx+28)
 49590  	byteReverse(tls, ctx+4, uint32(4))
 49591  	libc.Xmemcpy(tls, digest, ctx+4, uint64(16))
 49592  }
 49593  
 49594  func MD5DigestToBase16(tls *libc.TLS, digest uintptr, zBuf uintptr) {
 49595  	var i int32
 49596  	var j int32
 49597  
 49598  	for j = libc.AssignInt32(&i, 0); i < 16; i++ {
 49599  		var a int32 = int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))
 49600  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a>>4&0xf]
 49601  		*(*int8)(unsafe.Pointer(zBuf + uintptr(libc.PostIncInt32(&j, 1)))) = zEncode[a&0xf]
 49602  	}
 49603  	*(*int8)(unsafe.Pointer(zBuf + uintptr(j))) = int8(0)
 49604  }
 49605  
 49606  var zEncode = *(*[17]int8)(unsafe.Pointer(ts + 31194))
 49607  
 49608  func MD5DigestToBase10x8(tls *libc.TLS, digest uintptr, zDigest uintptr) {
 49609  	bp := tls.Alloc(8)
 49610  	defer tls.Free(8)
 49611  
 49612  	var i int32
 49613  	var j int32
 49614  	var x uint32
 49615  	for i = libc.AssignInt32(&j, 0); i < 16; i = i + 2 {
 49616  		x = uint32(int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i))))*256 + int32(*(*uint8)(unsafe.Pointer(digest + uintptr(i+1)))))
 49617  		if i > 0 {
 49618  			*(*int8)(unsafe.Pointer(zDigest + uintptr(libc.PostIncInt32(&j, 1)))) = int8('-')
 49619  		}
 49620  		sqlite3.Xsqlite3_snprintf(tls, 50-j, zDigest+uintptr(j), ts+34501, libc.VaList(bp, x))
 49621  		j = j + 5
 49622  	}
 49623  	*(*int8)(unsafe.Pointer(zDigest + uintptr(j))) = int8(0)
 49624  }
 49625  
 49626  func md5_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 49627  	bp := tls.Alloc(206)
 49628  	defer tls.Free(206)
 49629  
 49630  	var converter uintptr
 49631  
 49632  	if argc != 2 {
 49633  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 49634  			ts+15307, uintptr(0)))
 49635  		return TCL_ERROR
 49636  	}
 49637  	MD5Init(tls, bp+48)
 49638  	MD5Update(tls, bp+48, *(*uintptr)(unsafe.Pointer(argv + 1*8)), uint32(libc.Xstrlen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))))
 49639  	MD5Final(tls, bp+140, bp+48)
 49640  	converter = cd
 49641  	(*struct {
 49642  		f func(*libc.TLS, uintptr, uintptr)
 49643  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+140, bp+156)
 49644  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, bp+156, uintptr(0)))
 49645  	return TCL_OK
 49646  }
 49647  
 49648  func md5file_cmd(tls *libc.TLS, cd uintptr, interp uintptr, argc int32, argv uintptr) int32 {
 49649  	bp := tls.Alloc(10428)
 49650  	defer tls.Free(10428)
 49651  
 49652  	var in uintptr
 49653  	var ofst int32
 49654  	var amt int32
 49655  
 49656  	var converter uintptr
 49657  
 49658  	if argc != 2 && argc != 4 {
 49659  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949, *(*uintptr)(unsafe.Pointer(argv)),
 49660  			ts+34506, uintptr(0)))
 49661  		return TCL_ERROR
 49662  	}
 49663  	if argc == 4 {
 49664  		ofst = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 2*8)))
 49665  		amt = libc.Xatoi(tls, *(*uintptr)(unsafe.Pointer(argv + 3*8)))
 49666  	} else {
 49667  		ofst = 0
 49668  		amt = 2147483647
 49669  	}
 49670  	in = libc.Xfopen(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4402)
 49671  	if in == uintptr(0) {
 49672  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+34530, *(*uintptr)(unsafe.Pointer(argv + 1*8)),
 49673  			ts+34552, uintptr(0)))
 49674  		return TCL_ERROR
 49675  	}
 49676  	libc.Xfseek(tls, in, int64(ofst), SEEK_SET)
 49677  	MD5Init(tls, bp+80)
 49678  	for amt > 0 {
 49679  		var n int32
 49680  		n = int32(libc.Xfread(tls, bp+172, uint64(1), func() uint64 {
 49681  			if uint64(unsafe.Sizeof([10240]int8{})) <= uint64(amt) {
 49682  				return uint64(unsafe.Sizeof([10240]int8{}))
 49683  			}
 49684  			return uint64(amt)
 49685  		}(), in))
 49686  		if n <= 0 {
 49687  			break
 49688  		}
 49689  		MD5Update(tls, bp+80, bp+172, uint32(n))
 49690  		amt = amt - n
 49691  	}
 49692  	libc.Xfclose(tls, in)
 49693  	MD5Final(tls, bp+10412, bp+80)
 49694  	converter = cd
 49695  	(*struct {
 49696  		f func(*libc.TLS, uintptr, uintptr)
 49697  	})(unsafe.Pointer(&struct{ uintptr }{converter})).f(tls, bp+10412, bp+172)
 49698  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+172, uintptr(0)))
 49699  	return TCL_OK
 49700  }
 49701  
 49702  func Md5_Init(tls *libc.TLS, interp uintptr) int32 {
 49703  	tcl.XTcl_CreateCommand(tls, interp, ts+34566, *(*uintptr)(unsafe.Pointer(&struct {
 49704  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49705  	}{md5_cmd})),
 49706  		*(*uintptr)(unsafe.Pointer(&struct {
 49707  			f func(*libc.TLS, uintptr, uintptr)
 49708  		}{MD5DigestToBase16})), uintptr(0))
 49709  	tcl.XTcl_CreateCommand(tls, interp, ts+34570, *(*uintptr)(unsafe.Pointer(&struct {
 49710  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49711  	}{md5_cmd})),
 49712  		*(*uintptr)(unsafe.Pointer(&struct {
 49713  			f func(*libc.TLS, uintptr, uintptr)
 49714  		}{MD5DigestToBase10x8})), uintptr(0))
 49715  	tcl.XTcl_CreateCommand(tls, interp, ts+34579, *(*uintptr)(unsafe.Pointer(&struct {
 49716  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49717  	}{md5file_cmd})),
 49718  		*(*uintptr)(unsafe.Pointer(&struct {
 49719  			f func(*libc.TLS, uintptr, uintptr)
 49720  		}{MD5DigestToBase16})), uintptr(0))
 49721  	tcl.XTcl_CreateCommand(tls, interp, ts+34587, *(*uintptr)(unsafe.Pointer(&struct {
 49722  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49723  	}{md5file_cmd})),
 49724  		*(*uintptr)(unsafe.Pointer(&struct {
 49725  			f func(*libc.TLS, uintptr, uintptr)
 49726  		}{MD5DigestToBase10x8})), uintptr(0))
 49727  	return TCL_OK
 49728  }
 49729  
 49730  func md5step(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49731  	var p uintptr
 49732  	var i int32
 49733  	if argc < 1 {
 49734  		return
 49735  	}
 49736  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 49737  	if p == uintptr(0) {
 49738  		return
 49739  	}
 49740  	if !((*MD5Context)(unsafe.Pointer(p)).FisInit != 0) {
 49741  		MD5Init(tls, p)
 49742  	}
 49743  	for i = 0; i < argc; i++ {
 49744  		var zData uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 49745  		if zData != 0 {
 49746  			MD5Update(tls, p, zData, uint32(int32(libc.Xstrlen(tls, zData))))
 49747  		}
 49748  	}
 49749  }
 49750  
 49751  func md5finalize(tls *libc.TLS, context uintptr) {
 49752  	bp := tls.Alloc(49)
 49753  	defer tls.Free(49)
 49754  
 49755  	var p uintptr
 49756  
 49757  	p = sqlite3.Xsqlite3_aggregate_context(tls, context, int32(unsafe.Sizeof(MD5Context{})))
 49758  	MD5Final(tls, bp, p)
 49759  	MD5DigestToBase16(tls, bp, bp+16)
 49760  	sqlite3.Xsqlite3_result_text(tls, context, bp+16, -1, libc.UintptrFromInt32(-1))
 49761  }
 49762  
 49763  func Md5_Register(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pThunk uintptr) int32 {
 49764  	var rc int32 = sqlite3.Xsqlite3_create_function(tls, db, ts+34600, -1, SQLITE_UTF8, uintptr(0), uintptr(0),
 49765  		*(*uintptr)(unsafe.Pointer(&struct {
 49766  			f func(*libc.TLS, uintptr, int32, uintptr)
 49767  		}{md5step})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{md5finalize})))
 49768  	sqlite3.Xsqlite3_overload_function(tls, db, ts+34600, -1)
 49769  	return rc
 49770  }
 49771  
 49772  type multiplexGroup1 = struct {
 49773  	FaReal       uintptr
 49774  	FnReal       int32
 49775  	F__ccgo_pad1 [4]byte
 49776  	FzName       uintptr
 49777  	FnName       int32
 49778  	Fflags       int32
 49779  	FszChunk     uint32
 49780  	FbEnabled    uint8
 49781  	FbTruncate   uint8
 49782  	F__ccgo_pad2 [2]byte
 49783  }
 49784  
 49785  type multiplexGroup = multiplexGroup1
 49786  type multiplexConn1 = struct {
 49787  	Fbase   sqlite3_file
 49788  	FpGroup uintptr
 49789  }
 49790  
 49791  type multiplexConn = multiplexConn1
 49792  
 49793  type multiplexReal = struct {
 49794  	Fp uintptr
 49795  	Fz uintptr
 49796  }
 49797  
 49798  var gMultiplex struct {
 49799  	FpOrigVfs      uintptr
 49800  	FsThisVfs      sqlite3_vfs
 49801  	FsIoMethodsV1  sqlite3_io_methods
 49802  	FsIoMethodsV2  sqlite3_io_methods
 49803  	FisInitialized int32
 49804  	F__ccgo_pad1   [4]byte
 49805  }
 49806  
 49807  func multiplexStrlen30(tls *libc.TLS, z uintptr) int32 {
 49808  	var z2 uintptr = z
 49809  	if z == uintptr(0) {
 49810  		return 0
 49811  	}
 49812  	for *(*int8)(unsafe.Pointer(z2)) != 0 {
 49813  		z2++
 49814  	}
 49815  	return 0x3fffffff & int32((int64(z2)-int64(z))/1)
 49816  }
 49817  
 49818  func multiplexFilename(tls *libc.TLS, zBase uintptr, nBase int32, flags int32, iChunk int32, zOut uintptr) {
 49819  	bp := tls.Alloc(8)
 49820  	defer tls.Free(8)
 49821  
 49822  	var n int32 = nBase
 49823  	libc.Xmemcpy(tls, zOut, zBase, uint64(n+1))
 49824  	if iChunk != 0 && iChunk <= MX_CHUNK_NUMBER {
 49825  		sqlite3.Xsqlite3_snprintf(tls, 4, zOut+uintptr(n), ts+34607, libc.VaList(bp, iChunk))
 49826  		n = n + 3
 49827  	}
 49828  
 49829  	*(*int8)(unsafe.Pointer(zOut + uintptr(n+1))) = int8(0)
 49830  }
 49831  
 49832  func multiplexSubFilename(tls *libc.TLS, pGroup uintptr, iChunk int32) int32 {
 49833  	if iChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal {
 49834  		var p uintptr
 49835  		p = sqlite3.Xsqlite3_realloc64(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal, uint64(iChunk+1)*uint64(unsafe.Sizeof(multiplexReal{})))
 49836  		if p == uintptr(0) {
 49837  			return SQLITE_NOMEM
 49838  		}
 49839  		libc.Xmemset(tls, p+uintptr((*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal)*16, 0, uint64(unsafe.Sizeof(multiplexReal{}))*uint64(iChunk+1-(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal))
 49840  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = p
 49841  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = iChunk + 1
 49842  	}
 49843  	if (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49844  		var z uintptr
 49845  		var n int32 = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName
 49846  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(n+5))
 49847  		if z == uintptr(0) {
 49848  			return SQLITE_NOMEM
 49849  		}
 49850  		multiplexFilename(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, (*multiplexGroup)(unsafe.Pointer(pGroup)).FnName, (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags, iChunk, z)
 49851  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fz = sqlite3.Xsqlite3_create_filename(tls, z, ts+584, ts+584, 0, uintptr(0))
 49852  		sqlite3.Xsqlite3_free(tls, z)
 49853  		if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49854  			return SQLITE_NOMEM
 49855  		}
 49856  	}
 49857  	return SQLITE_OK
 49858  }
 49859  
 49860  func multiplexSubOpen(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr, pOutFlags uintptr, createFlag int32) uintptr {
 49861  	bp := tls.Alloc(20)
 49862  	defer tls.Free(20)
 49863  
 49864  	var pSubOpen uintptr = uintptr(0)
 49865  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 49866  
 49867  	*(*int32)(unsafe.Pointer(rc)) = multiplexSubFilename(tls, pGroup, iChunk)
 49868  	if *(*int32)(unsafe.Pointer(rc)) == SQLITE_OK && libc.AssignUintptr(&pSubOpen, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp) == uintptr(0) {
 49869  		var flags int32
 49870  
 49871  		flags = (*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags
 49872  		if createFlag != 0 {
 49873  			flags = flags | SQLITE_OPEN_CREATE
 49874  		} else if iChunk == 0 {
 49875  		} else if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz == uintptr(0) {
 49876  			return uintptr(0)
 49877  		} else {
 49878  			*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49879  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 49880  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz,
 49881  				SQLITE_ACCESS_EXISTS, bp+16)
 49882  			if *(*int32)(unsafe.Pointer(rc)) != 0 || !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) {
 49883  				if *(*int32)(unsafe.Pointer(rc)) != 0 {
 49884  					sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34612,
 49885  						libc.VaList(bp, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 49886  				}
 49887  				return uintptr(0)
 49888  			}
 49889  			flags = flags & libc.CplInt32(SQLITE_OPEN_CREATE)
 49890  		}
 49891  		pSubOpen = sqlite3.Xsqlite3_malloc64(tls, uint64((*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FszOsFile))
 49892  		if pSubOpen == uintptr(0) {
 49893  			*(*int32)(unsafe.Pointer(rc)) = SQLITE_IOERR | int32(12)<<8
 49894  			return uintptr(0)
 49895  		}
 49896  		(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = pSubOpen
 49897  		*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49898  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 49899  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, pSubOpen,
 49900  			flags, pOutFlags)
 49901  		if *(*int32)(unsafe.Pointer(rc)) != SQLITE_OK {
 49902  			sqlite3.Xsqlite3_log(tls, *(*int32)(unsafe.Pointer(rc)), ts+34646,
 49903  				libc.VaList(bp+8, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz))
 49904  			sqlite3.Xsqlite3_free(tls, pSubOpen)
 49905  			(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp = uintptr(0)
 49906  			return uintptr(0)
 49907  		}
 49908  	}
 49909  	return pSubOpen
 49910  }
 49911  
 49912  func multiplexSubSize(tls *libc.TLS, pGroup uintptr, iChunk int32, rc uintptr) sqlite3_int64 {
 49913  	bp := tls.Alloc(8)
 49914  	defer tls.Free(8)
 49915  
 49916  	var pSub uintptr
 49917  	*(*sqlite3_int64)(unsafe.Pointer(bp)) = int64(0)
 49918  
 49919  	if *(*int32)(unsafe.Pointer(rc)) != 0 {
 49920  		return int64(0)
 49921  	}
 49922  	pSub = multiplexSubOpen(tls, pGroup, iChunk, rc, uintptr(0), 0)
 49923  	if pSub == uintptr(0) {
 49924  		return int64(0)
 49925  	}
 49926  	*(*int32)(unsafe.Pointer(rc)) = (*struct {
 49927  		f func(*libc.TLS, uintptr, uintptr) int32
 49928  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSub)).FpMethods)).FxFileSize})).f(tls, pSub, bp)
 49929  	return *(*sqlite3_int64)(unsafe.Pointer(bp))
 49930  }
 49931  
 49932  func multiplexControlFunc(tls *libc.TLS, context uintptr, argc int32, argv uintptr) {
 49933  	bp := tls.Alloc(4)
 49934  	defer tls.Free(4)
 49935  
 49936  	var rc int32 = SQLITE_OK
 49937  	var db uintptr = sqlite3.Xsqlite3_context_db_handle(tls, context)
 49938  	var op int32 = 0
 49939  
 49940  	if !(db != 0) || argc != 2 {
 49941  		rc = SQLITE_ERROR
 49942  	} else {
 49943  		op = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv)))
 49944  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3_value_int(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 49945  
 49946  		switch op {
 49947  		case 1:
 49948  			op = MULTIPLEX_CTRL_ENABLE
 49949  			break
 49950  			fallthrough
 49951  		case 2:
 49952  			op = MULTIPLEX_CTRL_SET_CHUNK_SIZE
 49953  			break
 49954  			fallthrough
 49955  		case 3:
 49956  			op = MULTIPLEX_CTRL_SET_MAX_CHUNKS
 49957  			break
 49958  			fallthrough
 49959  		default:
 49960  			rc = SQLITE_NOTFOUND
 49961  			break
 49962  		}
 49963  	}
 49964  	if rc == SQLITE_OK {
 49965  		rc = sqlite3.Xsqlite3_file_control(tls, db, uintptr(0), op, bp)
 49966  	}
 49967  	sqlite3.Xsqlite3_result_error_code(tls, context, rc)
 49968  }
 49969  
 49970  func multiplexFuncInit(tls *libc.TLS, db uintptr, pzErrMsg uintptr, pApi uintptr) int32 {
 49971  	var rc int32
 49972  	rc = sqlite3.Xsqlite3_create_function(tls, db, ts+34678, 2, SQLITE_ANY,
 49973  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 49974  			f func(*libc.TLS, uintptr, int32, uintptr)
 49975  		}{multiplexControlFunc})), uintptr(0), uintptr(0))
 49976  	return rc
 49977  }
 49978  
 49979  func multiplexSubClose(tls *libc.TLS, pGroup uintptr, iChunk int32, pOrigVfs uintptr) {
 49980  	var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(iChunk)*16)).Fp
 49981  	if pSubOpen != 0 {
 49982  		(*struct {
 49983  			f func(*libc.TLS, uintptr) int32
 49984  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 49985  		if pOrigVfs != 0 && (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz != 0 {
 49986  			(*struct {
 49987  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 49988  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, 0)
 49989  		}
 49990  		sqlite3.Xsqlite3_free(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fp)
 49991  	}
 49992  	sqlite3.Xsqlite3_free_filename(tls, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz)
 49993  	libc.Xmemset(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16, 0, uint64(unsafe.Sizeof(multiplexReal{})))
 49994  }
 49995  
 49996  func multiplexFreeComponents(tls *libc.TLS, pGroup uintptr) {
 49997  	var i int32
 49998  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 49999  		multiplexSubClose(tls, pGroup, i, uintptr(0))
 50000  	}
 50001  	sqlite3.Xsqlite3_free(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal)
 50002  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal = uintptr(0)
 50003  	(*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal = 0
 50004  }
 50005  
 50006  func multiplexOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 50007  	bp := tls.Alloc(20)
 50008  	defer tls.Free(20)
 50009  
 50010  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50011  	var pMultiplexOpen uintptr
 50012  	var pGroup uintptr = uintptr(0)
 50013  	var pSubOpen uintptr = uintptr(0)
 50014  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50015  	var nName int32 = 0
 50016  	var sz int32 = 0
 50017  	var zToFree uintptr = uintptr(0)
 50018  
 50019  	_ = pVfs
 50020  	libc.Xmemset(tls, pConn, 0, uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile))
 50021  
 50022  	pMultiplexOpen = pConn
 50023  
 50024  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50025  		if zName != 0 {
 50026  			nName = multiplexStrlen30(tls, zName)
 50027  		} else {
 50028  			nName = 0
 50029  		}
 50030  		sz = int32(uint64(unsafe.Sizeof(multiplexGroup{})) +
 50031  			uint64(nName) + uint64(1))
 50032  		pGroup = sqlite3.Xsqlite3_malloc64(tls, uint64(sz))
 50033  		if pGroup == uintptr(0) {
 50034  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_NOMEM
 50035  		}
 50036  	}
 50037  
 50038  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50039  		var zUri uintptr
 50040  		if flags&SQLITE_OPEN_URI != 0 {
 50041  			zUri = zName
 50042  		} else {
 50043  			zUri = uintptr(0)
 50044  		}
 50045  
 50046  		libc.Xmemset(tls, pGroup, 0, uint64(sz))
 50047  		(*multiplexConn)(unsafe.Pointer(pMultiplexOpen)).FpGroup = pGroup
 50048  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = libc.Uint8(libc.Uint8FromInt32(-1))
 50049  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(sqlite3.Xsqlite3_uri_boolean(tls, zUri, ts+18304,
 50050  			libc.Bool32(flags&SQLITE_OPEN_MAIN_DB == 0)))
 50051  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(sqlite3.Xsqlite3_uri_int64(tls, zUri, ts+34696,
 50052  			int64(SQLITE_MULTIPLEX_CHUNK_SIZE))))
 50053  		(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = ((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk + uint32(0xffff)) & libc.Uint32FromInt32(libc.CplInt32(0xffff))
 50054  		if zName != 0 {
 50055  			var p uintptr = pGroup + 1*40
 50056  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FzName = p
 50057  			libc.Xmemcpy(tls, (*multiplexGroup)(unsafe.Pointer(pGroup)).FzName, zName, uint64(nName+1))
 50058  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FnName = nName
 50059  		}
 50060  		if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50061  			for uint32(sqlite3.Xsqlite3PendingByte)%(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk >= (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk-uint32(65536) {
 50062  				*(*uint32)(unsafe.Pointer(pGroup + 32)) += uint32(65536)
 50063  			}
 50064  		}
 50065  		(*multiplexGroup)(unsafe.Pointer(pGroup)).Fflags = flags & libc.CplInt32(SQLITE_OPEN_URI)
 50066  		*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, 1)
 50067  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50068  			pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp, pOutFlags, 0)
 50069  			if pSubOpen == uintptr(0) && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50070  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_CANTOPEN
 50071  			}
 50072  		}
 50073  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50074  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50075  				f func(*libc.TLS, uintptr, uintptr) int32
 50076  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp+8)
 50077  			if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && zName != 0 {
 50078  				if flags&SQLITE_OPEN_SUPER_JOURNAL != 0 {
 50079  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50080  				} else if *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == int64(0) {
 50081  					if flags&SQLITE_OPEN_MAIN_JOURNAL != 0 {
 50082  						var iChunk int32 = 1
 50083  						for __ccgo := true; __ccgo; __ccgo = *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50084  							*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50085  								f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50086  							})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs,
 50087  								(*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, SQLITE_ACCESS_EXISTS, bp+16)
 50088  							if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 {
 50089  								*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50090  									f func(*libc.TLS, uintptr, uintptr, int32) int32
 50091  								})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(iChunk)*16)).Fz, 0)
 50092  								if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50093  									*(*int32)(unsafe.Pointer(bp)) = multiplexSubFilename(tls, pGroup, libc.PreIncInt32(&iChunk, 1))
 50094  								}
 50095  							}
 50096  						}
 50097  					}
 50098  				} else {
 50099  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50100  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50101  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+1*16)).Fz,
 50102  						SQLITE_ACCESS_EXISTS, bp+16)
 50103  					*(*int32)(unsafe.Pointer(bp + 16)) = libc.Bool32(multiplexSubSize(tls, pGroup, 1, bp) > int64(0))
 50104  					if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && *(*int32)(unsafe.Pointer(bp + 16)) != 0 && *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) == *(*sqlite3_int64)(unsafe.Pointer(bp + 8))&int64(0xffff0000) && *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) > int64(0) &&
 50105  						*(*sqlite3_int64)(unsafe.Pointer(bp + 8)) != sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50106  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = uint32(int32(*(*sqlite3_int64)(unsafe.Pointer(bp + 8))))
 50107  					} else if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && !(*(*int32)(unsafe.Pointer(bp + 16)) != 0) && *(*sqlite3_int64)(unsafe.Pointer(bp + 8)) > sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) {
 50108  						(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(0)
 50109  					}
 50110  				}
 50111  			}
 50112  		}
 50113  
 50114  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50115  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 50116  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 176
 50117  			} else {
 50118  				(*sqlite3_file)(unsafe.Pointer(pConn)).FpMethods = uintptr(unsafe.Pointer(&gMultiplex)) + 328
 50119  			}
 50120  		} else {
 50121  			multiplexFreeComponents(tls, pGroup)
 50122  			sqlite3.Xsqlite3_free(tls, pGroup)
 50123  		}
 50124  	}
 50125  	sqlite3.Xsqlite3_free(tls, zToFree)
 50126  	return *(*int32)(unsafe.Pointer(bp))
 50127  }
 50128  
 50129  func multiplexDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 50130  	bp := tls.Alloc(4)
 50131  	defer tls.Free(4)
 50132  
 50133  	var rc int32
 50134  	var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50135  	rc = (*struct {
 50136  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50137  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 50138  	if rc == SQLITE_OK {
 50139  		var nName int32 = int32(libc.Xstrlen(tls, zName))
 50140  		var z uintptr
 50141  		z = sqlite3.Xsqlite3_malloc64(tls, uint64(nName+5))
 50142  		if z == uintptr(0) {
 50143  			rc = SQLITE_IOERR | int32(12)<<8
 50144  		} else {
 50145  			var iChunk int32 = 0
 50146  
 50147  			for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50148  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreIncInt32(&iChunk, 1), z)
 50149  				rc = (*struct {
 50150  					f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50151  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50152  			}
 50153  			for rc == SQLITE_OK && iChunk > 1 {
 50154  				multiplexFilename(tls, zName, nName, SQLITE_OPEN_MAIN_JOURNAL, libc.PreDecInt32(&iChunk, 1), z)
 50155  				rc = (*struct {
 50156  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 50157  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50158  			}
 50159  			if rc == SQLITE_OK {
 50160  				iChunk = 0
 50161  				for __ccgo1 := true; __ccgo1; __ccgo1 = rc == SQLITE_OK && *(*int32)(unsafe.Pointer(bp)) != 0 {
 50162  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreIncInt32(&iChunk, 1), z)
 50163  					rc = (*struct {
 50164  						f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50165  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxAccess})).f(tls, pOrigVfs, z, SQLITE_ACCESS_EXISTS, bp)
 50166  				}
 50167  				for rc == SQLITE_OK && iChunk > 1 {
 50168  					multiplexFilename(tls, zName, nName, SQLITE_OPEN_WAL, libc.PreDecInt32(&iChunk, 1), z)
 50169  					rc = (*struct {
 50170  						f func(*libc.TLS, uintptr, uintptr, int32) int32
 50171  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, z, syncDir)
 50172  				}
 50173  			}
 50174  		}
 50175  		sqlite3.Xsqlite3_free(tls, z)
 50176  	}
 50177  	return rc
 50178  }
 50179  
 50180  func multiplexAccess(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50181  	return (*struct {
 50182  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50183  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxAccess})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50184  }
 50185  
 50186  func multiplexFullPathname(tls *libc.TLS, a uintptr, b uintptr, c int32, d uintptr) int32 {
 50187  	return (*struct {
 50188  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50189  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxFullPathname})).f(tls, gMultiplex.FpOrigVfs, b, c, d)
 50190  }
 50191  
 50192  func multiplexDlOpen(tls *libc.TLS, a uintptr, b uintptr) uintptr {
 50193  	return (*struct {
 50194  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50195  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlOpen})).f(tls, gMultiplex.FpOrigVfs, b)
 50196  }
 50197  
 50198  func multiplexDlError(tls *libc.TLS, a uintptr, b int32, c uintptr) {
 50199  	(*struct {
 50200  		f func(*libc.TLS, uintptr, int32, uintptr)
 50201  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50202  }
 50203  
 50204  func multiplexDlSym(tls *libc.TLS, a uintptr, b uintptr, c uintptr) uintptr {
 50205  	return (*struct {
 50206  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50207  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlSym})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50208  }
 50209  
 50210  func multiplexDlClose(tls *libc.TLS, a uintptr, b uintptr) {
 50211  	(*struct {
 50212  		f func(*libc.TLS, uintptr, uintptr)
 50213  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxDlClose})).f(tls, gMultiplex.FpOrigVfs, b)
 50214  }
 50215  
 50216  func multiplexRandomness(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50217  	return (*struct {
 50218  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50219  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxRandomness})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50220  }
 50221  
 50222  func multiplexSleep(tls *libc.TLS, a uintptr, b int32) int32 {
 50223  	return (*struct {
 50224  		f func(*libc.TLS, uintptr, int32) int32
 50225  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxSleep})).f(tls, gMultiplex.FpOrigVfs, b)
 50226  }
 50227  
 50228  func multiplexCurrentTime(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50229  	return (*struct {
 50230  		f func(*libc.TLS, uintptr, uintptr) int32
 50231  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTime})).f(tls, gMultiplex.FpOrigVfs, b)
 50232  }
 50233  
 50234  func multiplexGetLastError(tls *libc.TLS, a uintptr, b int32, c uintptr) int32 {
 50235  	if (*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError != 0 {
 50236  		return (*struct {
 50237  			f func(*libc.TLS, uintptr, int32, uintptr) int32
 50238  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxGetLastError})).f(tls, gMultiplex.FpOrigVfs, b, c)
 50239  	} else {
 50240  		return 0
 50241  	}
 50242  	return int32(0)
 50243  }
 50244  
 50245  func multiplexCurrentTimeInt64(tls *libc.TLS, a uintptr, b uintptr) int32 {
 50246  	return (*struct {
 50247  		f func(*libc.TLS, uintptr, uintptr) int32
 50248  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gMultiplex.FpOrigVfs)).FxCurrentTimeInt64})).f(tls, gMultiplex.FpOrigVfs, b)
 50249  }
 50250  
 50251  func multiplexClose(tls *libc.TLS, pConn uintptr) int32 {
 50252  	var p uintptr = pConn
 50253  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50254  	var rc int32 = SQLITE_OK
 50255  	multiplexFreeComponents(tls, pGroup)
 50256  	sqlite3.Xsqlite3_free(tls, pGroup)
 50257  	return rc
 50258  }
 50259  
 50260  func multiplexRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50261  	bp := tls.Alloc(4)
 50262  	defer tls.Free(4)
 50263  
 50264  	var p uintptr = pConn
 50265  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50266  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50267  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50268  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50269  		if pSubOpen == uintptr(0) {
 50270  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50271  		} else {
 50272  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50273  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50274  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50275  		}
 50276  	} else {
 50277  		for iAmt > 0 {
 50278  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50279  			var pSubOpen uintptr
 50280  			pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50281  			if pSubOpen != 0 {
 50282  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50283  				if extra < 0 {
 50284  					extra = 0
 50285  				}
 50286  				iAmt = iAmt - extra
 50287  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50288  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50289  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt,
 50290  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50291  				if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 50292  					break
 50293  				}
 50294  				pBuf = pBuf + uintptr(iAmt)
 50295  				iOfst = iOfst + sqlite3_int64(iAmt)
 50296  				iAmt = extra
 50297  			} else {
 50298  				*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(1)<<8
 50299  				break
 50300  			}
 50301  		}
 50302  	}
 50303  
 50304  	return *(*int32)(unsafe.Pointer(bp))
 50305  }
 50306  
 50307  func multiplexWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 50308  	bp := tls.Alloc(4)
 50309  	defer tls.Free(4)
 50310  
 50311  	var p uintptr = pConn
 50312  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50313  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50314  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50315  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50316  		if pSubOpen == uintptr(0) {
 50317  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(3)<<8
 50318  		} else {
 50319  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50320  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50321  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 50322  		}
 50323  	} else {
 50324  		for *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && iAmt > 0 {
 50325  			var i int32 = int32(iOfst / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50326  			var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 1)
 50327  			if pSubOpen != 0 {
 50328  				var extra int32 = int32(uint32(int32(iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))+iAmt) - (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk)
 50329  				if extra < 0 {
 50330  					extra = 0
 50331  				}
 50332  				iAmt = iAmt - extra
 50333  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50334  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50335  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt,
 50336  					iOfst%sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50337  				pBuf = pBuf + uintptr(iAmt)
 50338  				iOfst = iOfst + sqlite3_int64(iAmt)
 50339  				iAmt = extra
 50340  			}
 50341  		}
 50342  	}
 50343  	return *(*int32)(unsafe.Pointer(bp))
 50344  }
 50345  
 50346  func multiplexTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 50347  	bp := tls.Alloc(4)
 50348  	defer tls.Free(4)
 50349  
 50350  	var p uintptr = pConn
 50351  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50352  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50353  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50354  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50355  		if pSubOpen == uintptr(0) {
 50356  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50357  		} else {
 50358  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50359  				f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50360  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 50361  		}
 50362  	} else {
 50363  		var i int32
 50364  		var iBaseGroup int32 = int32(size / sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50365  		var pSubOpen uintptr
 50366  		var pOrigVfs uintptr = gMultiplex.FpOrigVfs
 50367  
 50368  		for i = (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal - 1; i > iBaseGroup && *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i-- {
 50369  			if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 50370  				multiplexSubClose(tls, pGroup, i, pOrigVfs)
 50371  			} else {
 50372  				pSubOpen = multiplexSubOpen(tls, pGroup, i, bp, uintptr(0), 0)
 50373  				if pSubOpen != 0 {
 50374  					*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50375  						f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50376  					})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, int64(0))
 50377  				}
 50378  			}
 50379  		}
 50380  		if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 50381  			pSubOpen = multiplexSubOpen(tls, pGroup, iBaseGroup, bp, uintptr(0), 0)
 50382  			if pSubOpen != 0 {
 50383  				*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50384  					f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50385  				})(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))
 50386  			}
 50387  		}
 50388  		if *(*int32)(unsafe.Pointer(bp)) != 0 {
 50389  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(6)<<8
 50390  		}
 50391  	}
 50392  	return *(*int32)(unsafe.Pointer(bp))
 50393  }
 50394  
 50395  func multiplexSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 50396  	var p uintptr = pConn
 50397  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50398  	var rc int32 = SQLITE_OK
 50399  	var i int32
 50400  	for i = 0; i < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; i++ {
 50401  		var pSubOpen uintptr = (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal + uintptr(i)*16)).Fp
 50402  		if pSubOpen != 0 {
 50403  			var rc2 int32 = (*struct {
 50404  				f func(*libc.TLS, uintptr, int32) int32
 50405  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 50406  			if rc2 != SQLITE_OK {
 50407  				rc = rc2
 50408  			}
 50409  		}
 50410  	}
 50411  	return rc
 50412  }
 50413  
 50414  func multiplexFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 50415  	bp := tls.Alloc(4)
 50416  	defer tls.Free(4)
 50417  
 50418  	var p uintptr = pConn
 50419  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50420  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 50421  	var i int32
 50422  	if !(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0) {
 50423  		var pSubOpen uintptr = multiplexSubOpen(tls, pGroup, 0, bp, uintptr(0), 0)
 50424  		if pSubOpen == uintptr(0) {
 50425  			*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR | int32(7)<<8
 50426  		} else {
 50427  			*(*int32)(unsafe.Pointer(bp)) = (*struct {
 50428  				f func(*libc.TLS, uintptr, uintptr) int32
 50429  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, pSize)
 50430  		}
 50431  	} else {
 50432  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = int64(0)
 50433  		for i = 0; *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK; i++ {
 50434  			var sz sqlite3_int64 = multiplexSubSize(tls, pGroup, i, bp)
 50435  			if sz == int64(0) {
 50436  				break
 50437  			}
 50438  			*(*sqlite3_int64)(unsafe.Pointer(pSize)) = sqlite3_int64(i)*sqlite3_int64((*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk) + sz
 50439  		}
 50440  	}
 50441  	return *(*int32)(unsafe.Pointer(bp))
 50442  }
 50443  
 50444  func multiplexLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 50445  	bp := tls.Alloc(4)
 50446  	defer tls.Free(4)
 50447  
 50448  	var p uintptr = pConn
 50449  
 50450  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50451  	if pSubOpen != 0 {
 50452  		return (*struct {
 50453  			f func(*libc.TLS, uintptr, int32) int32
 50454  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 50455  	}
 50456  	return SQLITE_BUSY
 50457  }
 50458  
 50459  func multiplexUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 50460  	bp := tls.Alloc(4)
 50461  	defer tls.Free(4)
 50462  
 50463  	var p uintptr = pConn
 50464  
 50465  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50466  	if pSubOpen != 0 {
 50467  		return (*struct {
 50468  			f func(*libc.TLS, uintptr, int32) int32
 50469  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 50470  	}
 50471  	return SQLITE_IOERR | int32(8)<<8
 50472  }
 50473  
 50474  func multiplexCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 50475  	bp := tls.Alloc(4)
 50476  	defer tls.Free(4)
 50477  
 50478  	var p uintptr = pConn
 50479  
 50480  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50481  	if pSubOpen != 0 {
 50482  		return (*struct {
 50483  			f func(*libc.TLS, uintptr, uintptr) int32
 50484  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 50485  	}
 50486  	return SQLITE_IOERR | int32(14)<<8
 50487  }
 50488  
 50489  func multiplexFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 50490  	bp := tls.Alloc(44)
 50491  	defer tls.Free(44)
 50492  
 50493  	var p uintptr = pConn
 50494  	var pGroup uintptr = (*multiplexConn)(unsafe.Pointer(p)).FpGroup
 50495  	*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_ERROR
 50496  	var pSubOpen uintptr
 50497  
 50498  	if !(gMultiplex.FisInitialized != 0) {
 50499  		return SQLITE_MISUSE
 50500  	}
 50501  	switch op {
 50502  	case MULTIPLEX_CTRL_ENABLE:
 50503  		if pArg != 0 {
 50504  			var bEnabled int32 = *(*int32)(unsafe.Pointer(pArg))
 50505  			(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled = uint8(bEnabled)
 50506  			*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50507  		}
 50508  		break
 50509  	case MULTIPLEX_CTRL_SET_CHUNK_SIZE:
 50510  		if pArg != 0 {
 50511  			var szChunk uint32 = *(*uint32)(unsafe.Pointer(pArg))
 50512  			if szChunk < uint32(1) {
 50513  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_MISUSE
 50514  			} else {
 50515  				szChunk = szChunk + uint32(MAX_PAGE_SIZE-1)
 50516  				szChunk = szChunk & libc.Uint32FromInt32(libc.CplInt32(MAX_PAGE_SIZE-1))
 50517  				(*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk = szChunk
 50518  				*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50519  			}
 50520  		}
 50521  		break
 50522  	case MULTIPLEX_CTRL_SET_MAX_CHUNKS:
 50523  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50524  		break
 50525  	case SQLITE_FCNTL_SIZE_HINT:
 50526  		fallthrough
 50527  	case SQLITE_FCNTL_CHUNK_SIZE:
 50528  		*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50529  		break
 50530  	case SQLITE_FCNTL_PRAGMA:
 50531  		{
 50532  			var aFcntl uintptr = pArg
 50533  
 50534  			if *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)) != 0 && sqlite3.Xsqlite3_strnicmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34706, 10) == 0 {
 50535  				*(*sqlite3_int64)(unsafe.Pointer(bp + 32)) = int64(0)
 50536  				multiplexFileSize(tls, pConn, bp+32)
 50537  
 50538  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34717) == 0 {
 50539  					if *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)) != 0 && *(*int8)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(aFcntl + 2*8)))) != 0 {
 50540  						if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4178) == 0 ||
 50541  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+28949) == 0 {
 50542  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(1)
 50543  						} else if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+4542) == 0 ||
 50544  							sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 2*8)), ts+14193) == 0 {
 50545  							(*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate = uint8(0)
 50546  						}
 50547  					}
 50548  
 50549  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, func() uintptr {
 50550  						if (*multiplexGroup)(unsafe.Pointer(pGroup)).FbTruncate != 0 {
 50551  							return ts + 4178
 50552  						}
 50553  						return ts + 4542
 50554  					}(), 0)
 50555  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50556  					break
 50557  				}
 50558  
 50559  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34736) == 0 {
 50560  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp, libc.Bool32(int32((*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled) != 0)))
 50561  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50562  					break
 50563  				}
 50564  
 50565  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34754) == 0 &&
 50566  					(*multiplexGroup)(unsafe.Pointer(pGroup)).FbEnabled != 0 {
 50567  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+17791, libc.VaList(bp+8, (*multiplexGroup)(unsafe.Pointer(pGroup)).FszChunk))
 50568  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50569  					break
 50570  				}
 50571  
 50572  				if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(aFcntl + 1*8)), ts+34774) == 0 {
 50573  					var n int32 = 0
 50574  					var ii int32
 50575  					for ii = 0; ii < (*multiplexGroup)(unsafe.Pointer(pGroup)).FnReal; ii++ {
 50576  						if (*multiplexReal)(unsafe.Pointer((*multiplexGroup)(unsafe.Pointer(pGroup)).FaReal+uintptr(ii)*16)).Fp != uintptr(0) {
 50577  							n++
 50578  						}
 50579  					}
 50580  					*(*uintptr)(unsafe.Pointer(aFcntl)) = sqlite3.Xsqlite3_mprintf(tls, ts+1333, libc.VaList(bp+16, n))
 50581  					*(*int32)(unsafe.Pointer(bp + 40)) = SQLITE_OK
 50582  					break
 50583  				}
 50584  			}
 50585  
 50586  		}
 50587  		fallthrough
 50588  	default:
 50589  		pSubOpen = multiplexSubOpen(tls, pGroup, 0, bp+40, uintptr(0), 0)
 50590  		if pSubOpen != 0 {
 50591  			*(*int32)(unsafe.Pointer(bp + 40)) = (*struct {
 50592  				f func(*libc.TLS, uintptr, int32, uintptr) int32
 50593  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 50594  			if op == SQLITE_FCNTL_VFSNAME && *(*int32)(unsafe.Pointer(bp + 40)) == SQLITE_OK {
 50595  				*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+34794, libc.VaList(bp+24, *(*uintptr)(unsafe.Pointer(pArg))))
 50596  			}
 50597  		}
 50598  		break
 50599  	}
 50600  	return *(*int32)(unsafe.Pointer(bp + 40))
 50601  }
 50602  
 50603  func multiplexSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 50604  	bp := tls.Alloc(4)
 50605  	defer tls.Free(4)
 50606  
 50607  	var p uintptr = pConn
 50608  
 50609  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50610  	if pSubOpen != 0 && (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize != 0 {
 50611  		return (*struct {
 50612  			f func(*libc.TLS, uintptr) int32
 50613  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 50614  	}
 50615  	return DEFAULT_SECTOR_SIZE
 50616  }
 50617  
 50618  func multiplexDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 50619  	bp := tls.Alloc(4)
 50620  	defer tls.Free(4)
 50621  
 50622  	var p uintptr = pConn
 50623  
 50624  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50625  	if pSubOpen != 0 {
 50626  		return (*struct {
 50627  			f func(*libc.TLS, uintptr) int32
 50628  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 50629  	}
 50630  	return 0
 50631  }
 50632  
 50633  func multiplexShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 50634  	bp := tls.Alloc(4)
 50635  	defer tls.Free(4)
 50636  
 50637  	var p uintptr = pConn
 50638  
 50639  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50640  	if pSubOpen != 0 {
 50641  		return (*struct {
 50642  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 50643  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 50644  	}
 50645  	return SQLITE_IOERR
 50646  }
 50647  
 50648  func multiplexShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 50649  	bp := tls.Alloc(4)
 50650  	defer tls.Free(4)
 50651  
 50652  	var p uintptr = pConn
 50653  
 50654  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50655  	if pSubOpen != 0 {
 50656  		return (*struct {
 50657  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 50658  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 50659  	}
 50660  	return SQLITE_BUSY
 50661  }
 50662  
 50663  func multiplexShmBarrier(tls *libc.TLS, pConn uintptr) {
 50664  	bp := tls.Alloc(4)
 50665  	defer tls.Free(4)
 50666  
 50667  	var p uintptr = pConn
 50668  
 50669  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50670  	if pSubOpen != 0 {
 50671  		(*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)
 50672  	}
 50673  }
 50674  
 50675  func multiplexShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 50676  	bp := tls.Alloc(4)
 50677  	defer tls.Free(4)
 50678  
 50679  	var p uintptr = pConn
 50680  
 50681  	var pSubOpen uintptr = multiplexSubOpen(tls, (*multiplexConn)(unsafe.Pointer(p)).FpGroup, 0, bp, uintptr(0), 0)
 50682  	if pSubOpen != 0 {
 50683  		return (*struct {
 50684  			f func(*libc.TLS, uintptr, int32) int32
 50685  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 50686  	}
 50687  	return SQLITE_OK
 50688  }
 50689  
 50690  func sqlite3_multiplex_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 50691  	var pOrigVfs uintptr
 50692  	if gMultiplex.FisInitialized != 0 {
 50693  		return SQLITE_MISUSE
 50694  	}
 50695  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 50696  	if pOrigVfs == uintptr(0) {
 50697  		return SQLITE_ERROR
 50698  	}
 50699  
 50700  	gMultiplex.FisInitialized = 1
 50701  	gMultiplex.FpOrigVfs = pOrigVfs
 50702  	gMultiplex.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 50703  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gMultiplex)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(multiplexConn{})))
 50704  	gMultiplex.FsThisVfs.FzName = ts + 34807
 50705  	gMultiplex.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 50706  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 50707  	}{multiplexOpen}))
 50708  	gMultiplex.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 50709  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 50710  	}{multiplexDelete}))
 50711  	gMultiplex.FsThisVfs.FxAccess = *(*uintptr)(unsafe.Pointer(&struct {
 50712  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50713  	}{multiplexAccess}))
 50714  	gMultiplex.FsThisVfs.FxFullPathname = *(*uintptr)(unsafe.Pointer(&struct {
 50715  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 50716  	}{multiplexFullPathname}))
 50717  	gMultiplex.FsThisVfs.FxDlOpen = *(*uintptr)(unsafe.Pointer(&struct {
 50718  		f func(*libc.TLS, uintptr, uintptr) uintptr
 50719  	}{multiplexDlOpen}))
 50720  	gMultiplex.FsThisVfs.FxDlError = *(*uintptr)(unsafe.Pointer(&struct {
 50721  		f func(*libc.TLS, uintptr, int32, uintptr)
 50722  	}{multiplexDlError}))
 50723  	gMultiplex.FsThisVfs.FxDlSym = *(*uintptr)(unsafe.Pointer(&struct {
 50724  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 50725  	}{multiplexDlSym}))
 50726  	gMultiplex.FsThisVfs.FxDlClose = *(*uintptr)(unsafe.Pointer(&struct {
 50727  		f func(*libc.TLS, uintptr, uintptr)
 50728  	}{multiplexDlClose}))
 50729  	gMultiplex.FsThisVfs.FxRandomness = *(*uintptr)(unsafe.Pointer(&struct {
 50730  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50731  	}{multiplexRandomness}))
 50732  	gMultiplex.FsThisVfs.FxSleep = *(*uintptr)(unsafe.Pointer(&struct {
 50733  		f func(*libc.TLS, uintptr, int32) int32
 50734  	}{multiplexSleep}))
 50735  	gMultiplex.FsThisVfs.FxCurrentTime = *(*uintptr)(unsafe.Pointer(&struct {
 50736  		f func(*libc.TLS, uintptr, uintptr) int32
 50737  	}{multiplexCurrentTime}))
 50738  	gMultiplex.FsThisVfs.FxGetLastError = *(*uintptr)(unsafe.Pointer(&struct {
 50739  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50740  	}{multiplexGetLastError}))
 50741  	gMultiplex.FsThisVfs.FxCurrentTimeInt64 = *(*uintptr)(unsafe.Pointer(&struct {
 50742  		f func(*libc.TLS, uintptr, uintptr) int32
 50743  	}{multiplexCurrentTimeInt64}))
 50744  
 50745  	gMultiplex.FsIoMethodsV1.FiVersion = 1
 50746  	gMultiplex.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 50747  		f func(*libc.TLS, uintptr) int32
 50748  	}{multiplexClose}))
 50749  	gMultiplex.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 50750  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50751  	}{multiplexRead}))
 50752  	gMultiplex.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 50753  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 50754  	}{multiplexWrite}))
 50755  	gMultiplex.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 50756  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 50757  	}{multiplexTruncate}))
 50758  	gMultiplex.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 50759  		f func(*libc.TLS, uintptr, int32) int32
 50760  	}{multiplexSync}))
 50761  	gMultiplex.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 50762  		f func(*libc.TLS, uintptr, uintptr) int32
 50763  	}{multiplexFileSize}))
 50764  	gMultiplex.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 50765  		f func(*libc.TLS, uintptr, int32) int32
 50766  	}{multiplexLock}))
 50767  	gMultiplex.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 50768  		f func(*libc.TLS, uintptr, int32) int32
 50769  	}{multiplexUnlock}))
 50770  	gMultiplex.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 50771  		f func(*libc.TLS, uintptr, uintptr) int32
 50772  	}{multiplexCheckReservedLock}))
 50773  	gMultiplex.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 50774  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 50775  	}{multiplexFileControl}))
 50776  	gMultiplex.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 50777  		f func(*libc.TLS, uintptr) int32
 50778  	}{multiplexSectorSize}))
 50779  	gMultiplex.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 50780  		f func(*libc.TLS, uintptr) int32
 50781  	}{multiplexDeviceCharacteristics}))
 50782  	gMultiplex.FsIoMethodsV2 = gMultiplex.FsIoMethodsV1
 50783  	gMultiplex.FsIoMethodsV2.FiVersion = 2
 50784  	gMultiplex.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 50785  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 50786  	}{multiplexShmMap}))
 50787  	gMultiplex.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 50788  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 50789  	}{multiplexShmLock}))
 50790  	gMultiplex.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{multiplexShmBarrier}))
 50791  	gMultiplex.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 50792  		f func(*libc.TLS, uintptr, int32) int32
 50793  	}{multiplexShmUnmap}))
 50794  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gMultiplex))+8, makeDefault)
 50795  
 50796  	sqlite3.Xsqlite3_auto_extension(tls, *(*uintptr)(unsafe.Pointer(&struct {
 50797  		f func(*libc.TLS, uintptr, uintptr, uintptr) int32
 50798  	}{multiplexFuncInit})))
 50799  
 50800  	return SQLITE_OK
 50801  }
 50802  
 50803  func sqlite3_multiplex_shutdown(tls *libc.TLS, eForce int32) int32 {
 50804  	var rc int32 = SQLITE_OK
 50805  	if gMultiplex.FisInitialized == 0 {
 50806  		return SQLITE_MISUSE
 50807  	}
 50808  	gMultiplex.FisInitialized = 0
 50809  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gMultiplex))+8)
 50810  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gMultiplex)), 0, uint64(unsafe.Sizeof(gMultiplex)))
 50811  	return rc
 50812  }
 50813  
 50814  func test_multiplex_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50815  	bp := tls.Alloc(4)
 50816  	defer tls.Free(4)
 50817  
 50818  	var zName uintptr
 50819  
 50820  	var rc int32
 50821  
 50822  	_ = clientData
 50823  
 50824  	if objc != 3 {
 50825  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 50826  		return TCL_ERROR
 50827  	}
 50828  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 50829  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 50830  		return TCL_ERROR
 50831  	}
 50832  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 50833  		zName = uintptr(0)
 50834  	}
 50835  
 50836  	rc = sqlite3_multiplex_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 50837  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50838  
 50839  	return TCL_OK
 50840  }
 50841  
 50842  func test_multiplex_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 50843  	var rc int32
 50844  
 50845  	_ = clientData
 50846  
 50847  	if objc == 2 && libc.Xstrcmp(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+34834) != 0 {
 50848  		objc = 3
 50849  	}
 50850  	if objc != 1 && objc != 2 {
 50851  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34841)
 50852  		return TCL_ERROR
 50853  	}
 50854  
 50855  	rc = sqlite3_multiplex_shutdown(tls, libc.Bool32(objc == 2))
 50856  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50857  
 50858  	return TCL_OK
 50859  }
 50860  
 50861  func test_multiplex_control(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 50862  	bp := tls.Alloc(176)
 50863  	defer tls.Free(176)
 50864  
 50865  	var rc int32
 50866  
 50867  	var db uintptr
 50868  	*(*int32)(unsafe.Pointer(bp + 172)) = 0
 50869  	var pArg uintptr = uintptr(0)
 50870  
 50871  	*(*[4]struct {
 50872  		FzName   uintptr
 50873  		Fop      int32
 50874  		Fargtype int32
 50875  	})(unsafe.Pointer(bp + 104)) = [4]struct {
 50876  		FzName   uintptr
 50877  		Fop      int32
 50878  		Fargtype int32
 50879  	}{
 50880  		{FzName: ts + 10145, Fop: MULTIPLEX_CTRL_ENABLE, Fargtype: 1},
 50881  		{FzName: ts + 34850, Fop: MULTIPLEX_CTRL_SET_CHUNK_SIZE, Fargtype: 1},
 50882  		{FzName: ts + 34861, Fop: MULTIPLEX_CTRL_SET_MAX_CHUNKS, Fargtype: 1},
 50883  		{},
 50884  	}
 50885  
 50886  	if objc != 5 {
 50887  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34872)
 50888  		return TCL_ERROR
 50889  	}
 50890  
 50891  	if 0 == tcl.XTcl_GetCommandInfo(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+40) {
 50892  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+34908, 0))
 50893  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), ts+11945, 0))
 50894  		return TCL_ERROR
 50895  	} else {
 50896  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 40)).FobjClientData))
 50897  	}
 50898  
 50899  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 50900  		interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+104, int32(unsafe.Sizeof(struct {
 50901  			FzName   uintptr
 50902  			Fop      int32
 50903  			Fargtype int32
 50904  		}{})), ts+2014, 0, bp+168)
 50905  	if rc != TCL_OK {
 50906  		return rc
 50907  	}
 50908  
 50909  	switch (*struct {
 50910  		FzName   uintptr
 50911  		Fop      int32
 50912  		Fargtype int32
 50913  	})(unsafe.Pointer(bp + 104 + uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fargtype {
 50914  	case 1:
 50915  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+172) != 0 {
 50916  			return TCL_ERROR
 50917  		}
 50918  		pArg = bp + 172
 50919  		break
 50920  	default:
 50921  		tcl.XTcl_WrongNumArgs(tls, interp, 4, objv, ts+2523)
 50922  		return TCL_ERROR
 50923  	}
 50924  
 50925  	rc = sqlite3.Xsqlite3_file_control(tls, db, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), (*struct {
 50926  		FzName   uintptr
 50927  		Fop      int32
 50928  		Fargtype int32
 50929  	})(unsafe.Pointer(bp+104+uintptr(*(*int32)(unsafe.Pointer(bp + 168)))*16)).Fop, pArg)
 50930  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 50931  	if rc == SQLITE_OK {
 50932  		return TCL_OK
 50933  	}
 50934  	return TCL_ERROR
 50935  }
 50936  
 50937  func Sqlitemultiplex_Init(tls *libc.TLS, interp uintptr) int32 {
 50938  	var i int32
 50939  
 50940  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd7))/uint64(unsafe.Sizeof(struct {
 50941  		FzName uintptr
 50942  		FxProc uintptr
 50943  	}{})); i++ {
 50944  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd7[i].FzName, aCmd7[i].FxProc, uintptr(0), uintptr(0))
 50945  	}
 50946  
 50947  	return TCL_OK
 50948  }
 50949  
 50950  var aCmd7 = [3]struct {
 50951  	FzName uintptr
 50952  	FxProc uintptr
 50953  }{
 50954  	{FzName: ts + 34940, FxProc: 0},
 50955  	{FzName: ts + 34969, FxProc: 0},
 50956  	{FzName: ts + 34996, FxProc: 0},
 50957  }
 50958  
 50959  type sqlite3_mutex = sqlite3_mutex1
 50960  
 50961  var aName = [15]uintptr{
 50962  	ts + 35022, ts + 35027, ts + 35037, ts + 35049,
 50963  	ts + 35060, ts + 35072, ts + 35084, ts + 35095,
 50964  	ts + 35107, ts + 35119, ts + 35131, ts + 35143,
 50965  	ts + 35155, ts + 35167, uintptr(0),
 50966  }
 50967  
 50968  type test_mutex_globals = struct {
 50969  	FisInstalled int32
 50970  	FdisableInit int32
 50971  	FdisableTry  int32
 50972  	FisInit      int32
 50973  	Fm           sqlite3_mutex_methods
 50974  	FaCounter    [14]int32
 50975  	FaStatic     [12]sqlite3_mutex
 50976  }
 50977  
 50978  var g3 = test_mutex_globals{}
 50979  
 50980  func counterMutexHeld(tls *libc.TLS, p uintptr) int32 {
 50981  	return (*struct {
 50982  		f func(*libc.TLS, uintptr) int32
 50983  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexHeld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 50984  }
 50985  
 50986  func counterMutexNotheld(tls *libc.TLS, p uintptr) int32 {
 50987  	return (*struct {
 50988  		f func(*libc.TLS, uintptr) int32
 50989  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexNotheld})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 50990  }
 50991  
 50992  func counterMutexInit(tls *libc.TLS) int32 {
 50993  	var rc int32
 50994  	if g3.FdisableInit != 0 {
 50995  		return g3.FdisableInit
 50996  	}
 50997  	rc = (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexInit})).f(tls)
 50998  	g3.FisInit = 1
 50999  	return rc
 51000  }
 51001  
 51002  func counterMutexEnd(tls *libc.TLS) int32 {
 51003  	g3.FisInit = 0
 51004  	return (*struct{ f func(*libc.TLS) int32 })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnd})).f(tls)
 51005  }
 51006  
 51007  func counterMutexAlloc(tls *libc.TLS, eType int32) uintptr {
 51008  	var pReal uintptr
 51009  	var pRet uintptr = uintptr(0)
 51010  
 51011  	pReal = (*struct {
 51012  		f func(*libc.TLS, int32) uintptr
 51013  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexAlloc})).f(tls, eType)
 51014  	if !(pReal != 0) {
 51015  		return uintptr(0)
 51016  	}
 51017  
 51018  	if eType == SQLITE_MUTEX_FAST || eType == SQLITE_MUTEX_RECURSIVE {
 51019  		pRet = libc.Xmalloc(tls, uint64(unsafe.Sizeof(sqlite3_mutex{})))
 51020  	} else {
 51021  		var eStaticType int32 = eType - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_STATIC_VFS3 + 1 - (SQLITE_MUTEX_RECURSIVE + 1)))
 51022  
 51023  		pRet = uintptr(unsafe.Pointer(&g3)) + 144 + uintptr(eStaticType)*16
 51024  	}
 51025  
 51026  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FeType = eType
 51027  	(*sqlite3_mutex)(unsafe.Pointer(pRet)).FpReal = pReal
 51028  	return pRet
 51029  }
 51030  
 51031  func counterMutexFree(tls *libc.TLS, p uintptr) {
 51032  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexFree})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51033  	if (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_FAST || (*sqlite3_mutex)(unsafe.Pointer(p)).FeType == SQLITE_MUTEX_RECURSIVE {
 51034  		libc.Xfree(tls, p)
 51035  	}
 51036  }
 51037  
 51038  func counterMutexEnter(tls *libc.TLS, p uintptr) {
 51039  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51040  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexEnter})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51041  }
 51042  
 51043  func counterMutexTry(tls *libc.TLS, p uintptr) int32 {
 51044  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr((*sqlite3_mutex)(unsafe.Pointer(p)).FeType)*4))++
 51045  	if g3.FdisableTry != 0 {
 51046  		return SQLITE_BUSY
 51047  	}
 51048  	return (*struct {
 51049  		f func(*libc.TLS, uintptr) int32
 51050  	})(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexTry})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51051  }
 51052  
 51053  func counterMutexLeave(tls *libc.TLS, p uintptr) {
 51054  	(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{g3.Fm.FxMutexLeave})).f(tls, (*sqlite3_mutex)(unsafe.Pointer(p)).FpReal)
 51055  }
 51056  
 51057  func test_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51058  	var rc int32
 51059  
 51060  	if objc != 1 {
 51061  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51062  		return TCL_ERROR
 51063  	}
 51064  
 51065  	rc = sqlite3.Xsqlite3_shutdown(tls)
 51066  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51067  	return TCL_OK
 51068  }
 51069  
 51070  func test_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51071  	var rc int32
 51072  
 51073  	if objc != 1 {
 51074  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51075  		return TCL_ERROR
 51076  	}
 51077  
 51078  	rc = sqlite3.Xsqlite3_initialize(tls)
 51079  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51080  	return TCL_OK
 51081  }
 51082  
 51083  func test_install_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51084  	bp := tls.Alloc(136)
 51085  	defer tls.Free(136)
 51086  
 51087  	var rc int32 = SQLITE_OK
 51088  
 51089  	*(*sqlite3_mutex_methods)(unsafe.Pointer(bp + 64)) = sqlite3_mutex_methods{
 51090  		FxMutexInit: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexInit})),
 51091  		FxMutexEnd:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{counterMutexEnd})),
 51092  		FxMutexAlloc: *(*uintptr)(unsafe.Pointer(&struct {
 51093  			f func(*libc.TLS, int32) uintptr
 51094  		}{counterMutexAlloc})),
 51095  		FxMutexFree:  *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexFree})),
 51096  		FxMutexEnter: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexEnter})),
 51097  		FxMutexTry: *(*uintptr)(unsafe.Pointer(&struct {
 51098  			f func(*libc.TLS, uintptr) int32
 51099  		}{counterMutexTry})),
 51100  		FxMutexLeave: *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{counterMutexLeave})),
 51101  		FxMutexHeld: *(*uintptr)(unsafe.Pointer(&struct {
 51102  			f func(*libc.TLS, uintptr) int32
 51103  		}{counterMutexHeld})),
 51104  		FxMutexNotheld: *(*uintptr)(unsafe.Pointer(&struct {
 51105  			f func(*libc.TLS, uintptr) int32
 51106  		}{counterMutexNotheld})),
 51107  	}
 51108  
 51109  	if objc != 2 {
 51110  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+18238)
 51111  		return TCL_ERROR
 51112  	}
 51113  	if TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+56) {
 51114  		return TCL_ERROR
 51115  	}
 51116  
 51117  	if *(*int32)(unsafe.Pointer(bp + 56)) == g3.FisInstalled {
 51118  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35179, 0))
 51119  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, func() uintptr {
 51120  			if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51121  				return ts + 35199
 51122  			}
 51123  			return ts + 35217
 51124  		}(), 0))
 51125  		return TCL_ERROR
 51126  	}
 51127  
 51128  	if *(*int32)(unsafe.Pointer(bp + 56)) != 0 {
 51129  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETMUTEX, libc.VaList(bp+32, uintptr(unsafe.Pointer(&g3))+16))
 51130  		if rc == SQLITE_OK {
 51131  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+40, bp+64))
 51132  		}
 51133  		g3.FdisableTry = 0
 51134  	} else {
 51135  		rc = sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_MUTEX, libc.VaList(bp+48, uintptr(unsafe.Pointer(&g3))+16))
 51136  		libc.Xmemset(tls, uintptr(unsafe.Pointer(&g3))+16, 0, uint64(unsafe.Sizeof(sqlite3_mutex_methods{})))
 51137  	}
 51138  
 51139  	if rc == SQLITE_OK {
 51140  		g3.FisInstalled = *(*int32)(unsafe.Pointer(bp + 56))
 51141  	}
 51142  
 51143  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51144  	return TCL_OK
 51145  }
 51146  
 51147  func test_read_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51148  	var pRet uintptr
 51149  	var ii int32
 51150  
 51151  	if objc != 1 {
 51152  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51153  		return TCL_ERROR
 51154  	}
 51155  
 51156  	pRet = tcl.XTcl_NewObj(tls)
 51157  	(*Tcl_Obj)(unsafe.Pointer(pRet)).FrefCount++
 51158  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51159  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewStringObj(tls, aName[ii], -1))
 51160  		tcl.XTcl_ListObjAppendElement(tls, interp, pRet, tcl.XTcl_NewIntObj(tls, *(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4))))
 51161  	}
 51162  	tcl.XTcl_SetObjResult(tls, interp, pRet)
 51163  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 51164  		var _objPtr uintptr = pRet
 51165  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 51166  			tcl.XTclFreeObj(tls, _objPtr)
 51167  		}
 51168  	}
 51169  
 51170  	return TCL_OK
 51171  }
 51172  
 51173  func test_clear_mutex_counters(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51174  	var ii int32
 51175  
 51176  	if objc != 1 {
 51177  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51178  		return TCL_ERROR
 51179  	}
 51180  
 51181  	for ii = 0; ii < SQLITE_MUTEX_STATIC_VFS3+1; ii++ {
 51182  		*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&g3)) + 88 + uintptr(ii)*4)) = 0
 51183  	}
 51184  	return TCL_OK
 51185  }
 51186  
 51187  func test_alloc_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51188  	bp := tls.Alloc(124)
 51189  	defer tls.Free(124)
 51190  
 51191  	var p uintptr = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 51192  
 51193  	sqlite3.Xsqlite3_mutex_free(tls, p)
 51194  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([100]int8{})), bp+24, ts+9889, libc.VaList(bp, p))
 51195  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+8, bp+24, uintptr(0)))
 51196  	return TCL_OK
 51197  }
 51198  
 51199  func test_config(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51200  	bp := tls.Alloc(68)
 51201  	defer tls.Free(68)
 51202  
 51203  	*(*[4]ConfigOption)(unsafe.Pointer(bp)) = [4]ConfigOption{
 51204  		{FzName: ts + 35231, FiValue: SQLITE_CONFIG_SINGLETHREAD},
 51205  		{FzName: ts + 35244, FiValue: SQLITE_CONFIG_MULTITHREAD},
 51206  		{FzName: ts + 35256, FiValue: SQLITE_CONFIG_SERIALIZED},
 51207  		{},
 51208  	}
 51209  	var s int32 = int32(unsafe.Sizeof(ConfigOption{}))
 51210  
 51211  	var rc int32
 51212  
 51213  	if objc != 2 {
 51214  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 51215  		return TCL_ERROR
 51216  	}
 51217  
 51218  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, s, ts+17631, 0, bp+64) != 0 {
 51219  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+64) != 0 {
 51220  			return TCL_ERROR
 51221  		}
 51222  	} else {
 51223  		*(*int32)(unsafe.Pointer(bp + 64)) = (*ConfigOption)(unsafe.Pointer(bp + uintptr(*(*int32)(unsafe.Pointer(bp + 64)))*16)).FiValue
 51224  	}
 51225  
 51226  	rc = sqlite3.Xsqlite3_config(tls, *(*int32)(unsafe.Pointer(bp + 64)), 0)
 51227  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(1))
 51228  	return TCL_OK
 51229  }
 51230  
 51231  type ConfigOption = struct {
 51232  	FzName       uintptr
 51233  	FiValue      int32
 51234  	F__ccgo_pad1 [4]byte
 51235  }
 51236  
 51237  func getDbPointer1(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51238  	bp := tls.Alloc(64)
 51239  	defer tls.Free(64)
 51240  
 51241  	var db uintptr
 51242  
 51243  	var zCmd uintptr = tcl.XTcl_GetString(tls, pObj)
 51244  	if tcl.XTcl_GetCommandInfo(tls, pInterp, zCmd, bp) != 0 {
 51245  		db = *(*uintptr)(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp)).FobjClientData))
 51246  	} else {
 51247  		db = sqlite3TestTextToPtr(tls, zCmd)
 51248  	}
 51249  
 51250  	return db
 51251  }
 51252  
 51253  func getStaticMutexPointer(tls *libc.TLS, pInterp uintptr, pObj uintptr) uintptr {
 51254  	bp := tls.Alloc(4)
 51255  	defer tls.Free(4)
 51256  
 51257  	if tcl.XTcl_GetIndexFromObjStruct(tls, pInterp, pObj, uintptr(unsafe.Pointer(&aName)), int32(unsafe.Sizeof(uintptr(0))), ts+35267, 0, bp) != 0 {
 51258  		return uintptr(0)
 51259  	}
 51260  
 51261  	return counterMutexAlloc(tls, *(*int32)(unsafe.Pointer(bp)))
 51262  }
 51263  
 51264  func test_enter_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51265  	var pMutex uintptr
 51266  	if objc != 2 {
 51267  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51268  		return TCL_ERROR
 51269  	}
 51270  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51271  	if !(pMutex != 0) {
 51272  		return TCL_ERROR
 51273  	}
 51274  	sqlite3.Xsqlite3_mutex_enter(tls, pMutex)
 51275  	return TCL_OK
 51276  }
 51277  
 51278  func test_leave_static_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51279  	var pMutex uintptr
 51280  	if objc != 2 {
 51281  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+9762)
 51282  		return TCL_ERROR
 51283  	}
 51284  	pMutex = getStaticMutexPointer(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51285  	if !(pMutex != 0) {
 51286  		return TCL_ERROR
 51287  	}
 51288  	sqlite3.Xsqlite3_mutex_leave(tls, pMutex)
 51289  	return TCL_OK
 51290  }
 51291  
 51292  func test_enter_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51293  	var db uintptr
 51294  	if objc != 2 {
 51295  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51296  		return TCL_ERROR
 51297  	}
 51298  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51299  	if !(db != 0) {
 51300  		return TCL_ERROR
 51301  	}
 51302  	sqlite3.Xsqlite3_mutex_enter(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51303  	return TCL_OK
 51304  }
 51305  
 51306  func test_leave_db_mutex(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 51307  	var db uintptr
 51308  	if objc != 2 {
 51309  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 51310  		return TCL_ERROR
 51311  	}
 51312  	db = getDbPointer1(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 51313  	if !(db != 0) {
 51314  		return TCL_ERROR
 51315  	}
 51316  	sqlite3.Xsqlite3_mutex_leave(tls, sqlite3.Xsqlite3_db_mutex(tls, db))
 51317  	return TCL_OK
 51318  }
 51319  
 51320  func Sqlitetest_mutex_Init(tls *libc.TLS, interp uintptr) int32 {
 51321  	var i int32
 51322  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd8))/uint64(unsafe.Sizeof(struct {
 51323  		FzName uintptr
 51324  		FxProc uintptr
 51325  	}{})); i++ {
 51326  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd8[i].FzName, aCmd8[i].FxProc, uintptr(0), uintptr(0))
 51327  	}
 51328  
 51329  	tcl.XTcl_LinkVar(tls, interp, ts+35278,
 51330  		uintptr(unsafe.Pointer(&g3))+4, TCL_LINK_INT)
 51331  	tcl.XTcl_LinkVar(tls, interp, ts+35297,
 51332  		uintptr(unsafe.Pointer(&g3))+8, TCL_LINK_INT)
 51333  	return SQLITE_OK
 51334  }
 51335  
 51336  var aCmd8 = [11]struct {
 51337  	FzName uintptr
 51338  	FxProc uintptr
 51339  }{
 51340  	{FzName: ts + 35315, FxProc: 0},
 51341  	{FzName: ts + 35332, FxProc: 0},
 51342  	{FzName: ts + 35351, FxProc: 0},
 51343  	{FzName: ts + 35366, FxProc: 0},
 51344  	{FzName: ts + 35385, FxProc: 0},
 51345  	{FzName: ts + 35404, FxProc: 0},
 51346  	{FzName: ts + 35419, FxProc: 0},
 51347  	{FzName: ts + 35434, FxProc: 0},
 51348  	{FzName: ts + 35454, FxProc: 0},
 51349  	{FzName: ts + 35477, FxProc: 0},
 51350  	{FzName: ts + 35497, FxProc: 0},
 51351  }
 51352  
 51353  type fs_real_file1 = struct {
 51354  	FpFile     uintptr
 51355  	FzName     uintptr
 51356  	FnDatabase int32
 51357  	FnJournal  int32
 51358  	FnBlob     int32
 51359  	FnRef      int32
 51360  	FpNext     uintptr
 51361  	FppThis    uintptr
 51362  }
 51363  
 51364  type fs_real_file = fs_real_file1
 51365  
 51366  type fs_file1 = struct {
 51367  	Fbase        sqlite3_file
 51368  	FeType       int32
 51369  	F__ccgo_pad1 [4]byte
 51370  	FpReal       uintptr
 51371  }
 51372  
 51373  type fs_file = fs_file1
 51374  
 51375  type tmp_file1 = struct {
 51376  	Fbase   sqlite3_file
 51377  	FnSize  int32
 51378  	FnAlloc int32
 51379  	FzAlloc uintptr
 51380  }
 51381  
 51382  type tmp_file = tmp_file1
 51383  
 51384  type fs_vfs_t1 = struct {
 51385  	Fbase      sqlite3_vfs
 51386  	FpFileList uintptr
 51387  	FpParent   uintptr
 51388  }
 51389  
 51390  type fs_vfs_t = fs_vfs_t1
 51391  
 51392  var fs_vfs = fs_vfs_t{
 51393  	Fbase: sqlite3_vfs{
 51394  		FiVersion:      1,
 51395  		FzName:         ts + 31055,
 51396  		FxOpen:         0,
 51397  		FxDelete:       0,
 51398  		FxAccess:       0,
 51399  		FxFullPathname: 0,
 51400  		FxDlOpen:       0,
 51401  		FxDlError:      0,
 51402  		FxDlSym:        0,
 51403  		FxDlClose:      0,
 51404  		FxRandomness:   0,
 51405  		FxSleep:        0,
 51406  		FxCurrentTime:  0,
 51407  	},
 51408  }
 51409  
 51410  var fs_io_methods = sqlite3_io_methods{
 51411  	FiVersion:               1,
 51412  	FxClose:                 0,
 51413  	FxRead:                  0,
 51414  	FxWrite:                 0,
 51415  	FxTruncate:              0,
 51416  	FxSync:                  0,
 51417  	FxFileSize:              0,
 51418  	FxLock:                  0,
 51419  	FxUnlock:                0,
 51420  	FxCheckReservedLock:     0,
 51421  	FxFileControl:           0,
 51422  	FxSectorSize:            0,
 51423  	FxDeviceCharacteristics: 0,
 51424  }
 51425  
 51426  var tmp_io_methods = sqlite3_io_methods{
 51427  	FiVersion:               1,
 51428  	FxClose:                 0,
 51429  	FxRead:                  0,
 51430  	FxWrite:                 0,
 51431  	FxTruncate:              0,
 51432  	FxSync:                  0,
 51433  	FxFileSize:              0,
 51434  	FxLock:                  0,
 51435  	FxUnlock:                0,
 51436  	FxCheckReservedLock:     0,
 51437  	FxFileControl:           0,
 51438  	FxSectorSize:            0,
 51439  	FxDeviceCharacteristics: 0,
 51440  }
 51441  
 51442  func tmpClose(tls *libc.TLS, pFile uintptr) int32 {
 51443  	var pTmp uintptr = pFile
 51444  	sqlite3.Xsqlite3_free(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc)
 51445  	return SQLITE_OK
 51446  }
 51447  
 51448  func tmpRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51449  	var pTmp uintptr = pFile
 51450  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) {
 51451  		return SQLITE_IOERR | int32(2)<<8
 51452  	}
 51453  	libc.Xmemcpy(tls, zBuf, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), uint64(iAmt))
 51454  	return SQLITE_OK
 51455  }
 51456  
 51457  func tmpWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51458  	var pTmp uintptr = pFile
 51459  	if sqlite_int64(iAmt)+iOfst > sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc) {
 51460  		var nNew int32 = int32(int64(2) * (sqlite_int64(iAmt) + iOfst + sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc)))
 51461  		var zNew uintptr = sqlite3.Xsqlite3_realloc(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc, nNew)
 51462  		if !(zNew != 0) {
 51463  			return SQLITE_NOMEM
 51464  		}
 51465  		(*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc = zNew
 51466  		(*tmp_file)(unsafe.Pointer(pTmp)).FnAlloc = nNew
 51467  	}
 51468  	libc.Xmemcpy(tls, (*tmp_file)(unsafe.Pointer(pTmp)).FzAlloc+uintptr(iOfst), zBuf, uint64(iAmt))
 51469  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 51470  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) > iOfst+sqlite_int64(iAmt) {
 51471  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 51472  		}
 51473  		return int32(iOfst + sqlite_int64(iAmt))
 51474  	}()
 51475  	return SQLITE_OK
 51476  }
 51477  
 51478  func tmpTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 51479  	var pTmp uintptr = pFile
 51480  	(*tmp_file)(unsafe.Pointer(pTmp)).FnSize = func() int32 {
 51481  		if sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize) < size {
 51482  			return (*tmp_file)(unsafe.Pointer(pTmp)).FnSize
 51483  		}
 51484  		return int32(size)
 51485  	}()
 51486  	return SQLITE_OK
 51487  }
 51488  
 51489  func tmpSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 51490  	return SQLITE_OK
 51491  }
 51492  
 51493  func tmpFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 51494  	var pTmp uintptr = pFile
 51495  	*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*tmp_file)(unsafe.Pointer(pTmp)).FnSize)
 51496  	return SQLITE_OK
 51497  }
 51498  
 51499  func tmpLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51500  	return SQLITE_OK
 51501  }
 51502  
 51503  func tmpUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51504  	return SQLITE_OK
 51505  }
 51506  
 51507  func tmpCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 51508  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 51509  	return SQLITE_OK
 51510  }
 51511  
 51512  func tmpFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 51513  	return SQLITE_OK
 51514  }
 51515  
 51516  func tmpSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 51517  	return 0
 51518  }
 51519  
 51520  func tmpDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 51521  	return 0
 51522  }
 51523  
 51524  func fsClose1(tls *libc.TLS, pFile uintptr) int32 {
 51525  	var rc int32 = SQLITE_OK
 51526  	var p uintptr = pFile
 51527  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51528  
 51529  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef--
 51530  
 51531  	if (*fs_real_file)(unsafe.Pointer(pReal)).FnRef == 0 {
 51532  		*(*uintptr)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FppThis)) = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 51533  		if (*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0 {
 51534  			(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = (*fs_real_file)(unsafe.Pointer(pReal)).FppThis
 51535  		}
 51536  		rc = (*struct {
 51537  			f func(*libc.TLS, uintptr) int32
 51538  		})(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)
 51539  		sqlite3.Xsqlite3_free(tls, pReal)
 51540  	}
 51541  
 51542  	return rc
 51543  }
 51544  
 51545  func fsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51546  	var rc int32 = SQLITE_OK
 51547  	var p uintptr = pFile
 51548  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51549  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51550  
 51551  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) ||
 51552  		(*fs_file)(unsafe.Pointer(p)).FeType == JOURNAL_FILE && sqlite_int64(iAmt)+iOfst > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 51553  		rc = SQLITE_IOERR | int32(2)<<8
 51554  	} else if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51555  		rc = (*struct {
 51556  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51557  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxRead})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 51558  	} else {
 51559  		var iRem int32 = iAmt
 51560  		var iBuf int32 = 0
 51561  		var ii int32 = int32(iOfst)
 51562  		for iRem > 0 && rc == SQLITE_OK {
 51563  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 51564  			var iRealAmt int32 = func() int32 {
 51565  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 51566  					return iRem
 51567  				}
 51568  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 51569  			}()
 51570  
 51571  			rc = (*struct {
 51572  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51573  			})(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))
 51574  			ii = ii + iRealAmt
 51575  			iBuf = iBuf + iRealAmt
 51576  			iRem = iRem - iRealAmt
 51577  		}
 51578  	}
 51579  
 51580  	return rc
 51581  }
 51582  
 51583  func fsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 51584  	var rc int32 = SQLITE_OK
 51585  	var p uintptr = pFile
 51586  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51587  	var pF uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51588  
 51589  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51590  		if sqlite_int64(iAmt)+iOfst+int64(BLOCKSIZE) > sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnBlob-(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) {
 51591  			rc = SQLITE_FULL
 51592  		} else {
 51593  			rc = (*struct {
 51594  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51595  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pF)).FpMethods)).FxWrite})).f(tls, pF, zBuf, iAmt, iOfst+int64(BLOCKSIZE))
 51596  			if rc == SQLITE_OK {
 51597  				(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 51598  					if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) > sqlite_int64(iAmt)+iOfst {
 51599  						return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 51600  					}
 51601  					return int32(sqlite_int64(iAmt) + iOfst)
 51602  				}()
 51603  			}
 51604  		}
 51605  	} else {
 51606  		var iRem int32 = iAmt
 51607  		var iBuf int32 = 0
 51608  		var ii int32 = int32(iOfst)
 51609  		for iRem > 0 && rc == SQLITE_OK {
 51610  			var iRealOff int32 = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob - BLOCKSIZE*(ii/BLOCKSIZE+1) + ii%BLOCKSIZE
 51611  			var iRealAmt int32 = func() int32 {
 51612  				if iRem < BLOCKSIZE-iRealOff%BLOCKSIZE {
 51613  					return iRem
 51614  				}
 51615  				return BLOCKSIZE - iRealOff%BLOCKSIZE
 51616  			}()
 51617  
 51618  			if iRealOff < (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase+BLOCKSIZE {
 51619  				rc = SQLITE_FULL
 51620  			} else {
 51621  				rc = (*struct {
 51622  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51623  				})(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))
 51624  				ii = ii + iRealAmt
 51625  				iBuf = iBuf + iRealAmt
 51626  				iRem = iRem - iRealAmt
 51627  			}
 51628  		}
 51629  		if rc == SQLITE_OK {
 51630  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 51631  				if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) > sqlite_int64(iAmt)+iOfst {
 51632  					return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 51633  				}
 51634  				return int32(sqlite_int64(iAmt) + iOfst)
 51635  			}()
 51636  		}
 51637  	}
 51638  
 51639  	return rc
 51640  }
 51641  
 51642  func fsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 51643  	var p uintptr = pFile
 51644  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51645  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51646  		(*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase = func() int32 {
 51647  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) < size {
 51648  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase
 51649  			}
 51650  			return int32(size)
 51651  		}()
 51652  	} else {
 51653  		(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = func() int32 {
 51654  			if sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal) < size {
 51655  				return (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal
 51656  			}
 51657  			return int32(size)
 51658  		}()
 51659  	}
 51660  	return SQLITE_OK
 51661  }
 51662  
 51663  func fsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 51664  	bp := tls.Alloc(4)
 51665  	defer tls.Free(4)
 51666  
 51667  	var p uintptr = pFile
 51668  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51669  	var pRealFile uintptr = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51670  	var rc int32 = SQLITE_OK
 51671  
 51672  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51673  		*(*uint8)(unsafe.Pointer(bp)) = uint8(uint32((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase) & 0xFF000000 >> 24)
 51674  		*(*uint8)(unsafe.Pointer(bp + 1)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x00FF0000 >> 16)
 51675  		*(*uint8)(unsafe.Pointer(bp + 2)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x0000FF00 >> 8)
 51676  		*(*uint8)(unsafe.Pointer(bp + 3)) = uint8((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase & 0x000000FF)
 51677  		rc = (*struct {
 51678  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51679  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxWrite})).f(tls, pRealFile, bp, 4, int64(0))
 51680  	}
 51681  	if rc == SQLITE_OK {
 51682  		rc = (*struct {
 51683  			f func(*libc.TLS, uintptr, int32) int32
 51684  		})(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))
 51685  	}
 51686  
 51687  	return rc
 51688  }
 51689  
 51690  func fsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 51691  	var p uintptr = pFile
 51692  	var pReal uintptr = (*fs_file)(unsafe.Pointer(p)).FpReal
 51693  	if (*fs_file)(unsafe.Pointer(p)).FeType == DATABASE_FILE {
 51694  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnDatabase)
 51695  	} else {
 51696  		*(*sqlite_int64)(unsafe.Pointer(pSize)) = sqlite_int64((*fs_real_file)(unsafe.Pointer(pReal)).FnJournal)
 51697  	}
 51698  	return SQLITE_OK
 51699  }
 51700  
 51701  func fsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51702  	return SQLITE_OK
 51703  }
 51704  
 51705  func fsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 51706  	return SQLITE_OK
 51707  }
 51708  
 51709  func fsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 51710  	*(*int32)(unsafe.Pointer(pResOut)) = 0
 51711  	return SQLITE_OK
 51712  }
 51713  
 51714  func fsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 51715  	if op == SQLITE_FCNTL_PRAGMA {
 51716  		return SQLITE_NOTFOUND
 51717  	}
 51718  	return SQLITE_OK
 51719  }
 51720  
 51721  func fsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 51722  	return BLOCKSIZE
 51723  }
 51724  
 51725  func fsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 51726  	return 0
 51727  }
 51728  
 51729  func fsOpen1(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 51730  	bp := tls.Alloc(12)
 51731  	defer tls.Free(12)
 51732  
 51733  	var pFsVfs uintptr
 51734  	var p uintptr
 51735  	var pReal uintptr
 51736  	var eType int32
 51737  	var nName int32
 51738  	var rc int32
 51739  	var p2 uintptr
 51740  
 51741  	var real_flags int32
 51742  
 51743  	var pRealFile uintptr
 51744  	var pParent uintptr
 51745  	pFsVfs = pVfs
 51746  	p = pFile
 51747  	pReal = uintptr(0)
 51748  	rc = SQLITE_OK
 51749  
 51750  	if !(0 == flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_MAIN_JOURNAL)) {
 51751  		goto __1
 51752  	}
 51753  	p2 = pFile
 51754  	libc.Xmemset(tls, p2, 0, uint64(unsafe.Sizeof(tmp_file{})))
 51755  	(*tmp_file)(unsafe.Pointer(p2)).Fbase.FpMethods = uintptr(unsafe.Pointer(&tmp_io_methods))
 51756  	return SQLITE_OK
 51757  __1:
 51758  	;
 51759  	eType = func() int32 {
 51760  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 51761  			return DATABASE_FILE
 51762  		}
 51763  		return JOURNAL_FILE
 51764  	}()
 51765  	(*fs_file)(unsafe.Pointer(p)).Fbase.FpMethods = uintptr(unsafe.Pointer(&fs_io_methods))
 51766  	(*fs_file)(unsafe.Pointer(p)).FeType = eType
 51767  
 51768  	nName = int32(libc.Xstrlen(tls, zName)) - func() int32 {
 51769  		if eType == JOURNAL_FILE {
 51770  			return 8
 51771  		}
 51772  		return 0
 51773  	}()
 51774  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51775  __2:
 51776  	if !(pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zName, uint64(nName)) != 0) {
 51777  		goto __4
 51778  	}
 51779  	goto __3
 51780  __3:
 51781  	pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext
 51782  	goto __2
 51783  	goto __4
 51784  __4:
 51785  	;
 51786  	if !!(pReal != 0) {
 51787  		goto __5
 51788  	}
 51789  	real_flags = flags&libc.CplInt32(SQLITE_OPEN_MAIN_DB) | SQLITE_OPEN_TEMP_DB
 51790  	pParent = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpParent
 51791  
 51792  	pReal = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)))
 51793  	if !!(pReal != 0) {
 51794  		goto __6
 51795  	}
 51796  	rc = SQLITE_NOMEM
 51797  	goto open_out
 51798  __6:
 51799  	;
 51800  	libc.Xmemset(tls, pReal, 0, uint64(unsafe.Sizeof(fs_real_file{}))+uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile))
 51801  	(*fs_real_file)(unsafe.Pointer(pReal)).FzName = zName
 51802  	(*fs_real_file)(unsafe.Pointer(pReal)).FpFile = pReal + 1*48
 51803  
 51804  	rc = (*struct {
 51805  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 51806  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zName, (*fs_real_file)(unsafe.Pointer(pReal)).FpFile, real_flags, pOutFlags)
 51807  	if !(rc != SQLITE_OK) {
 51808  		goto __7
 51809  	}
 51810  	goto open_out
 51811  __7:
 51812  	;
 51813  	pRealFile = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51814  
 51815  	rc = (*struct {
 51816  		f func(*libc.TLS, uintptr, uintptr) int32
 51817  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxFileSize})).f(tls, pRealFile, bp)
 51818  	if !(rc != SQLITE_OK) {
 51819  		goto __8
 51820  	}
 51821  	goto open_out
 51822  __8:
 51823  	;
 51824  	if !(*(*sqlite3_int64)(unsafe.Pointer(bp)) == int64(0)) {
 51825  		goto __9
 51826  	}
 51827  	rc = (*struct {
 51828  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51829  	})(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))
 51830  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = BLOBSIZE
 51831  	goto __10
 51832  __9:
 51833  	(*fs_real_file)(unsafe.Pointer(pReal)).FnBlob = int32(*(*sqlite3_int64)(unsafe.Pointer(bp)))
 51834  	rc = (*struct {
 51835  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51836  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pRealFile)).FpMethods)).FxRead})).f(tls, pRealFile, bp+8, 4, int64(0))
 51837  	(*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)))
 51838  	if !(rc == SQLITE_OK) {
 51839  		goto __11
 51840  	}
 51841  	rc = (*struct {
 51842  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51843  	})(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))
 51844  	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) {
 51845  		goto __12
 51846  	}
 51847  	(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = (*fs_real_file)(unsafe.Pointer(pReal)).FnBlob
 51848  __12:
 51849  	;
 51850  __11:
 51851  	;
 51852  __10:
 51853  	;
 51854  	if !(rc == SQLITE_OK) {
 51855  		goto __13
 51856  	}
 51857  	(*fs_real_file)(unsafe.Pointer(pReal)).FpNext = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51858  	if !((*fs_real_file)(unsafe.Pointer(pReal)).FpNext != 0) {
 51859  		goto __14
 51860  	}
 51861  	(*fs_real_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpNext)).FppThis = pReal + 32
 51862  __14:
 51863  	;
 51864  	(*fs_real_file)(unsafe.Pointer(pReal)).FppThis = pFsVfs + 168
 51865  	(*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList = pReal
 51866  __13:
 51867  	;
 51868  __5:
 51869  	;
 51870  open_out:
 51871  	if !(pReal != 0) {
 51872  		goto __15
 51873  	}
 51874  	if !(rc == SQLITE_OK) {
 51875  		goto __16
 51876  	}
 51877  	(*fs_file)(unsafe.Pointer(p)).FpReal = pReal
 51878  	(*fs_real_file)(unsafe.Pointer(pReal)).FnRef++
 51879  	goto __17
 51880  __16:
 51881  	if !((*sqlite3_file)(unsafe.Pointer((*fs_real_file)(unsafe.Pointer(pReal)).FpFile)).FpMethods != 0) {
 51882  		goto __18
 51883  	}
 51884  	(*struct {
 51885  		f func(*libc.TLS, uintptr) int32
 51886  	})(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)
 51887  __18:
 51888  	;
 51889  	sqlite3.Xsqlite3_free(tls, pReal)
 51890  __17:
 51891  	;
 51892  __15:
 51893  	;
 51894  	return rc
 51895  }
 51896  
 51897  func fsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 51898  	var rc int32 = SQLITE_OK
 51899  	var pFsVfs uintptr = pVfs
 51900  	var pReal uintptr
 51901  	var pF uintptr
 51902  	var nName int32 = int32(libc.Xstrlen(tls, zPath)) - 8
 51903  
 51904  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51905  	for ; pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zPath, uint64(nName)) != 0; pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext {
 51906  	}
 51907  	if pReal != 0 {
 51908  		pF = (*fs_real_file)(unsafe.Pointer(pReal)).FpFile
 51909  		rc = (*struct {
 51910  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 51911  		})(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))
 51912  		if rc == SQLITE_OK {
 51913  			(*fs_real_file)(unsafe.Pointer(pReal)).FnJournal = 0
 51914  		}
 51915  	}
 51916  	return rc
 51917  }
 51918  
 51919  func fsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 51920  	var pFsVfs uintptr = pVfs
 51921  	var pReal uintptr
 51922  	var isJournal int32 = 0
 51923  	var nName int32 = int32(libc.Xstrlen(tls, zPath))
 51924  
 51925  	if flags != SQLITE_ACCESS_EXISTS {
 51926  		var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51927  		return (*struct {
 51928  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51929  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxAccess})).f(tls, pParent, zPath, flags, pResOut)
 51930  	}
 51931  
 51932  	if nName > 8 && libc.Xstrcmp(tls, ts+32808, zPath+uintptr(nName-8)) == 0 {
 51933  		nName = nName - 8
 51934  		isJournal = 1
 51935  	}
 51936  
 51937  	pReal = (*fs_vfs_t)(unsafe.Pointer(pFsVfs)).FpFileList
 51938  	for ; pReal != 0 && libc.Xstrncmp(tls, (*fs_real_file)(unsafe.Pointer(pReal)).FzName, zPath, uint64(nName)) != 0; pReal = (*fs_real_file)(unsafe.Pointer(pReal)).FpNext {
 51939  	}
 51940  
 51941  	*(*int32)(unsafe.Pointer(pResOut)) = libc.Bool32(pReal != 0 && (!(isJournal != 0) || (*fs_real_file)(unsafe.Pointer(pReal)).FnJournal > 0))
 51942  	return SQLITE_OK
 51943  }
 51944  
 51945  func fsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 51946  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51947  	return (*struct {
 51948  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 51949  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zPath, nOut, zOut)
 51950  }
 51951  
 51952  func fsDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 51953  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51954  	return (*struct {
 51955  		f func(*libc.TLS, uintptr, uintptr) uintptr
 51956  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlOpen})).f(tls, pParent, zPath)
 51957  }
 51958  
 51959  func fsDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 51960  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51961  	(*struct {
 51962  		f func(*libc.TLS, uintptr, int32, uintptr)
 51963  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlError})).f(tls, pParent, nByte, zErrMsg)
 51964  }
 51965  
 51966  func fsDlSym(tls *libc.TLS, pVfs uintptr, pH uintptr, zSym uintptr) uintptr {
 51967  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51968  	return (*struct {
 51969  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 51970  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlSym})).f(tls, pParent, pH, zSym)
 51971  }
 51972  
 51973  func fsDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 51974  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51975  	(*struct {
 51976  		f func(*libc.TLS, uintptr, uintptr)
 51977  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDlClose})).f(tls, pParent, pHandle)
 51978  }
 51979  
 51980  func fsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 51981  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51982  	return (*struct {
 51983  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 51984  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxRandomness})).f(tls, pParent, nByte, zBufOut)
 51985  }
 51986  
 51987  func fsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 51988  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51989  	return (*struct {
 51990  		f func(*libc.TLS, uintptr, int32) int32
 51991  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxSleep})).f(tls, pParent, nMicro)
 51992  }
 51993  
 51994  func fsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 51995  	var pParent uintptr = (*fs_vfs_t)(unsafe.Pointer(pVfs)).FpParent
 51996  	return (*struct {
 51997  		f func(*libc.TLS, uintptr, uintptr) int32
 51998  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxCurrentTime})).f(tls, pParent, pTimeOut)
 51999  }
 52000  
 52001  func fs_register(tls *libc.TLS) int32 {
 52002  	if fs_vfs.FpParent != 0 {
 52003  		return SQLITE_OK
 52004  	}
 52005  	fs_vfs.FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52006  	fs_vfs.Fbase.FmxPathname = (*sqlite3_vfs)(unsafe.Pointer(fs_vfs.FpParent)).FmxPathname
 52007  	fs_vfs.Fbase.FszOsFile = func() int32 {
 52008  		if uint64(unsafe.Sizeof(tmp_file{})) > uint64(unsafe.Sizeof(fs_file{})) {
 52009  			return int32(unsafe.Sizeof(tmp_file{}))
 52010  		}
 52011  		return int32(unsafe.Sizeof(fs_file{}))
 52012  	}()
 52013  	return sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&fs_vfs)), 0)
 52014  }
 52015  
 52016  func SqlitetestOnefile_Init(tls *libc.TLS) int32 {
 52017  	return fs_register(tls)
 52018  }
 52019  
 52020  type VfslogVfs1 = struct {
 52021  	Fbase        sqlite3_vfs
 52022  	FpVfs        uintptr
 52023  	FiNextFileId int32
 52024  	F__ccgo_pad1 [4]byte
 52025  	FpLog        uintptr
 52026  	FiOffset     sqlite3_int64
 52027  	FnBuf        int32
 52028  	FaBuf        [8192]int8
 52029  	F__ccgo_pad2 [4]byte
 52030  }
 52031  
 52032  type VfslogVfs = VfslogVfs1
 52033  type VfslogFile1 = struct {
 52034  	Fbase        sqlite3_file
 52035  	FpReal       uintptr
 52036  	FpVfslog     uintptr
 52037  	FiFileId     int32
 52038  	F__ccgo_pad1 [4]byte
 52039  }
 52040  
 52041  type VfslogFile = VfslogFile1
 52042  
 52043  var vfslog_vfs = sqlite3_vfs{
 52044  	FiVersion:          1,
 52045  	FszOsFile:          int32(unsafe.Sizeof(VfslogFile{})),
 52046  	FmxPathname:        INST_MAX_PATHNAME,
 52047  	FxOpen:             0,
 52048  	FxDelete:           0,
 52049  	FxAccess:           0,
 52050  	FxFullPathname:     0,
 52051  	FxDlOpen:           0,
 52052  	FxDlError:          0,
 52053  	FxDlSym:            0,
 52054  	FxDlClose:          0,
 52055  	FxRandomness:       0,
 52056  	FxSleep:            0,
 52057  	FxCurrentTime:      0,
 52058  	FxGetLastError:     0,
 52059  	FxCurrentTimeInt64: 0,
 52060  }
 52061  
 52062  var vfslog_io_methods = sqlite3_io_methods{
 52063  	FiVersion:               2,
 52064  	FxClose:                 0,
 52065  	FxRead:                  0,
 52066  	FxWrite:                 0,
 52067  	FxTruncate:              0,
 52068  	FxSync:                  0,
 52069  	FxFileSize:              0,
 52070  	FxLock:                  0,
 52071  	FxUnlock:                0,
 52072  	FxCheckReservedLock:     0,
 52073  	FxFileControl:           0,
 52074  	FxSectorSize:            0,
 52075  	FxDeviceCharacteristics: 0,
 52076  	FxShmMap:                0,
 52077  	FxShmLock:               0,
 52078  	FxShmBarrier:            0,
 52079  	FxShmUnmap:              0,
 52080  }
 52081  
 52082  func vfslog_time(tls *libc.TLS) sqlite3_uint64 {
 52083  	bp := tls.Alloc(16)
 52084  	defer tls.Free(16)
 52085  
 52086  	libc.Xgettimeofday(tls, bp, uintptr(0))
 52087  	return sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_usec) + sqlite3_uint64((*timeval)(unsafe.Pointer(bp)).Ftv_sec)*uint64(1000000)
 52088  }
 52089  
 52090  func vfslogClose(tls *libc.TLS, pFile uintptr) int32 {
 52091  	var t sqlite3_uint64
 52092  	var rc int32 = SQLITE_OK
 52093  	var p uintptr = pFile
 52094  
 52095  	t = vfslog_time(tls)
 52096  	if (*sqlite3_file)(unsafe.Pointer((*VfslogFile)(unsafe.Pointer(p)).FpReal)).FpMethods != 0 {
 52097  		rc = (*struct {
 52098  			f func(*libc.TLS, uintptr) int32
 52099  		})(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)
 52100  	}
 52101  	t = vfslog_time(tls) - t
 52102  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CLOSE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52103  	return rc
 52104  }
 52105  
 52106  func vfslogRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52107  	var rc int32
 52108  	var t sqlite3_uint64
 52109  	var p uintptr = pFile
 52110  	t = vfslog_time(tls)
 52111  	rc = (*struct {
 52112  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52113  	})(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)
 52114  	t = vfslog_time(tls) - t
 52115  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_READ, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52116  	return rc
 52117  }
 52118  
 52119  func vfslogWrite(tls *libc.TLS, pFile uintptr, z uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 52120  	var rc int32
 52121  	var t sqlite3_uint64
 52122  	var p uintptr = pFile
 52123  	t = vfslog_time(tls)
 52124  	rc = (*struct {
 52125  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52126  	})(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)
 52127  	t = vfslog_time(tls) - t
 52128  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_WRITE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, iAmt, int32(iOfst))
 52129  	return rc
 52130  }
 52131  
 52132  func vfslogTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 52133  	var rc int32
 52134  	var t sqlite3_uint64
 52135  	var p uintptr = pFile
 52136  	t = vfslog_time(tls)
 52137  	rc = (*struct {
 52138  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 52139  	})(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)
 52140  	t = vfslog_time(tls) - t
 52141  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_TRUNCATE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, int32(size))
 52142  	return rc
 52143  }
 52144  
 52145  func vfslogSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 52146  	var rc int32
 52147  	var t sqlite3_uint64
 52148  	var p uintptr = pFile
 52149  	t = vfslog_time(tls)
 52150  	rc = (*struct {
 52151  		f func(*libc.TLS, uintptr, int32) int32
 52152  	})(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)
 52153  	t = vfslog_time(tls) - t
 52154  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SYNC, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, flags, 0)
 52155  	return rc
 52156  }
 52157  
 52158  func vfslogFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 52159  	var rc int32
 52160  	var t sqlite3_uint64
 52161  	var p uintptr = pFile
 52162  	t = vfslog_time(tls)
 52163  	rc = (*struct {
 52164  		f func(*libc.TLS, uintptr, uintptr) int32
 52165  	})(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)
 52166  	t = vfslog_time(tls) - t
 52167  	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))))
 52168  	return rc
 52169  }
 52170  
 52171  func vfslogLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52172  	var rc int32
 52173  	var t sqlite3_uint64
 52174  	var p uintptr = pFile
 52175  	t = vfslog_time(tls)
 52176  	rc = (*struct {
 52177  		f func(*libc.TLS, uintptr, int32) int32
 52178  	})(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)
 52179  	t = vfslog_time(tls) - t
 52180  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_LOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52181  	return rc
 52182  }
 52183  
 52184  func vfslogUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 52185  	var rc int32
 52186  	var t sqlite3_uint64
 52187  	var p uintptr = pFile
 52188  	t = vfslog_time(tls)
 52189  	rc = (*struct {
 52190  		f func(*libc.TLS, uintptr, int32) int32
 52191  	})(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)
 52192  	t = vfslog_time(tls) - t
 52193  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_UNLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, eLock, 0)
 52194  	return rc
 52195  }
 52196  
 52197  func vfslogCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 52198  	var rc int32
 52199  	var t sqlite3_uint64
 52200  	var p uintptr = pFile
 52201  	t = vfslog_time(tls)
 52202  	rc = (*struct {
 52203  		f func(*libc.TLS, uintptr, uintptr) int32
 52204  	})(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)
 52205  	t = vfslog_time(tls) - t
 52206  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_CHECKRESERVEDLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, *(*int32)(unsafe.Pointer(pResOut)), 0)
 52207  	return rc
 52208  }
 52209  
 52210  func vfslogFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 52211  	bp := tls.Alloc(8)
 52212  	defer tls.Free(8)
 52213  
 52214  	var p uintptr = pFile
 52215  	var rc int32 = (*struct {
 52216  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52217  	})(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)
 52218  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 52219  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35525, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 52220  	}
 52221  	return rc
 52222  }
 52223  
 52224  func vfslogSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 52225  	var rc int32
 52226  	var t sqlite3_uint64
 52227  	var p uintptr = pFile
 52228  	t = vfslog_time(tls)
 52229  	rc = (*struct {
 52230  		f func(*libc.TLS, uintptr) int32
 52231  	})(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)
 52232  	t = vfslog_time(tls) - t
 52233  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SECTORSIZE, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52234  	return rc
 52235  }
 52236  
 52237  func vfslogDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 52238  	var rc int32
 52239  	var t sqlite3_uint64
 52240  	var p uintptr = pFile
 52241  	t = vfslog_time(tls)
 52242  	rc = (*struct {
 52243  		f func(*libc.TLS, uintptr) int32
 52244  	})(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)
 52245  	t = vfslog_time(tls) - t
 52246  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_DEVCHAR, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52247  	return rc
 52248  }
 52249  
 52250  func vfslogShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 52251  	var rc int32
 52252  	var t sqlite3_uint64
 52253  	var p uintptr = pFile
 52254  	t = vfslog_time(tls)
 52255  	rc = (*struct {
 52256  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 52257  	})(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)
 52258  	t = vfslog_time(tls) - t
 52259  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMLOCK, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52260  	return rc
 52261  }
 52262  
 52263  func vfslogShmMap(tls *libc.TLS, pFile uintptr, iRegion int32, szRegion int32, isWrite int32, pp uintptr) int32 {
 52264  	var rc int32
 52265  	var t sqlite3_uint64
 52266  	var p uintptr = pFile
 52267  	t = vfslog_time(tls)
 52268  	rc = (*struct {
 52269  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 52270  	})(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)
 52271  	t = vfslog_time(tls) - t
 52272  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52273  	return rc
 52274  }
 52275  
 52276  func vfslogShmBarrier(tls *libc.TLS, pFile uintptr) {
 52277  	var t sqlite3_uint64
 52278  	var p uintptr = pFile
 52279  	t = vfslog_time(tls)
 52280  	(*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)
 52281  	t = vfslog_time(tls) - t
 52282  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMBARRIER, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), SQLITE_OK, 0, 0)
 52283  }
 52284  
 52285  func vfslogShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 52286  	var rc int32
 52287  	var t sqlite3_uint64
 52288  	var p uintptr = pFile
 52289  	t = vfslog_time(tls)
 52290  	rc = (*struct {
 52291  		f func(*libc.TLS, uintptr, int32) int32
 52292  	})(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)
 52293  	t = vfslog_time(tls) - t
 52294  	vfslog_call(tls, (*VfslogFile)(unsafe.Pointer(p)).FpVfslog, OS_SHMUNMAP, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52295  	return rc
 52296  }
 52297  
 52298  func vfslogOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 52299  	var rc int32
 52300  	var t sqlite3_uint64
 52301  	var p uintptr = pFile
 52302  	var pLog uintptr = pVfs
 52303  
 52304  	(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = uintptr(unsafe.Pointer(&vfslog_io_methods))
 52305  	(*VfslogFile)(unsafe.Pointer(p)).FpReal = p + 1*32
 52306  	(*VfslogFile)(unsafe.Pointer(p)).FpVfslog = pVfs
 52307  	(*VfslogFile)(unsafe.Pointer(p)).FiFileId = libc.PreIncInt32(&(*VfslogVfs)(unsafe.Pointer(pLog)).FiNextFileId, 1)
 52308  
 52309  	t = vfslog_time(tls)
 52310  	rc = (*struct {
 52311  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52312  	})(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)
 52313  	t = vfslog_time(tls) - t
 52314  
 52315  	vfslog_call(tls, pVfs, OS_OPEN, (*VfslogFile)(unsafe.Pointer(p)).FiFileId, int64(t), rc, 0, 0)
 52316  	vfslog_string(tls, pVfs, zName)
 52317  	return rc
 52318  }
 52319  
 52320  func vfslogDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 52321  	var rc int32
 52322  	var t sqlite3_uint64
 52323  	t = vfslog_time(tls)
 52324  	rc = (*struct {
 52325  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 52326  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDelete})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, dirSync)
 52327  	t = vfslog_time(tls) - t
 52328  	vfslog_call(tls, pVfs, OS_DELETE, 0, int64(t), rc, dirSync, 0)
 52329  	vfslog_string(tls, pVfs, zPath)
 52330  	return rc
 52331  }
 52332  
 52333  func vfslogAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 52334  	var rc int32
 52335  	var t sqlite3_uint64
 52336  	t = vfslog_time(tls)
 52337  	rc = (*struct {
 52338  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52339  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxAccess})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, flags, pResOut)
 52340  	t = vfslog_time(tls) - t
 52341  	vfslog_call(tls, pVfs, OS_ACCESS, 0, int64(t), rc, flags, *(*int32)(unsafe.Pointer(pResOut)))
 52342  	vfslog_string(tls, pVfs, zPath)
 52343  	return rc
 52344  }
 52345  
 52346  func vfslogFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 52347  	return (*struct {
 52348  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52349  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxFullPathname})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath, nOut, zOut)
 52350  }
 52351  
 52352  func vfslogDlOpen(tls *libc.TLS, pVfs uintptr, zPath uintptr) uintptr {
 52353  	return (*struct {
 52354  		f func(*libc.TLS, uintptr, uintptr) uintptr
 52355  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlOpen})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, zPath)
 52356  }
 52357  
 52358  func vfslogDlError(tls *libc.TLS, pVfs uintptr, nByte int32, zErrMsg uintptr) {
 52359  	(*struct {
 52360  		f func(*libc.TLS, uintptr, int32, uintptr)
 52361  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zErrMsg)
 52362  }
 52363  
 52364  func vfslogDlSym(tls *libc.TLS, pVfs uintptr, p uintptr, zSym uintptr) uintptr {
 52365  	return (*struct {
 52366  		f func(*libc.TLS, uintptr, uintptr, uintptr) uintptr
 52367  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlSym})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p, zSym)
 52368  }
 52369  
 52370  func vfslogDlClose(tls *libc.TLS, pVfs uintptr, pHandle uintptr) {
 52371  	(*struct {
 52372  		f func(*libc.TLS, uintptr, uintptr)
 52373  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxDlClose})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pHandle)
 52374  }
 52375  
 52376  func vfslogRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 52377  	return (*struct {
 52378  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52379  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxRandomness})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nByte, zBufOut)
 52380  }
 52381  
 52382  func vfslogSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 52383  	return (*struct {
 52384  		f func(*libc.TLS, uintptr, int32) int32
 52385  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxSleep})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, nMicro)
 52386  }
 52387  
 52388  func vfslogCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 52389  	return (*struct {
 52390  		f func(*libc.TLS, uintptr, uintptr) int32
 52391  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTime})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, pTimeOut)
 52392  }
 52393  
 52394  func vfslogGetLastError(tls *libc.TLS, pVfs uintptr, a int32, b uintptr) int32 {
 52395  	return (*struct {
 52396  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 52397  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxGetLastError})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, a, b)
 52398  }
 52399  
 52400  func vfslogCurrentTimeInt64(tls *libc.TLS, pVfs uintptr, p uintptr) int32 {
 52401  	return (*struct {
 52402  		f func(*libc.TLS, uintptr, uintptr) int32
 52403  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs)).FxCurrentTimeInt64})).f(tls, (*VfslogVfs)(unsafe.Pointer(pVfs)).FpVfs, p)
 52404  }
 52405  
 52406  func vfslog_flush(tls *libc.TLS, p uintptr) {
 52407  	var pending int32 = libc.AtomicLoadInt32(&sqlite3.Xsqlite3_io_error_pending)
 52408  	var persist int32 = sqlite3.Xsqlite3_io_error_persist
 52409  	var diskfull int32 = sqlite3.Xsqlite3_diskfull_pending
 52410  
 52411  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, int32(0))
 52412  	sqlite3.Xsqlite3_io_error_persist = 0
 52413  	sqlite3.Xsqlite3_diskfull_pending = 0
 52414  
 52415  	if (*VfslogVfs)(unsafe.Pointer(p)).FnBuf != 0 {
 52416  		(*struct {
 52417  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52418  		})(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+204, (*VfslogVfs)(unsafe.Pointer(p)).FnBuf, (*VfslogVfs)(unsafe.Pointer(p)).FiOffset)
 52419  		*(*sqlite3_int64)(unsafe.Pointer(p + 192)) += sqlite3_int64((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52420  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 0
 52421  	}
 52422  
 52423  	libc.AtomicStoreInt32(&sqlite3.Xsqlite3_io_error_pending, pending)
 52424  	sqlite3.Xsqlite3_io_error_persist = persist
 52425  	sqlite3.Xsqlite3_diskfull_pending = diskfull
 52426  }
 52427  
 52428  func put32bits(tls *libc.TLS, p uintptr, v uint32) {
 52429  	*(*uint8)(unsafe.Pointer(p)) = uint8(v >> 24)
 52430  	*(*uint8)(unsafe.Pointer(p + 1)) = uint8(v >> 16)
 52431  	*(*uint8)(unsafe.Pointer(p + 2)) = uint8(v >> 8)
 52432  	*(*uint8)(unsafe.Pointer(p + 3)) = uint8(v)
 52433  }
 52434  
 52435  func vfslog_call(tls *libc.TLS, pVfs uintptr, eEvent int32, iFileid int32, nClick sqlite3_int64, return_code int32, size int32, offset int32) {
 52436  	var p uintptr = pVfs
 52437  	var zRec uintptr
 52438  	if uint64(24+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 52439  		vfslog_flush(tls, p)
 52440  	}
 52441  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52442  	put32bits(tls, zRec, uint32(eEvent))
 52443  	put32bits(tls, zRec+4, uint32(iFileid))
 52444  	put32bits(tls, zRec+8, uint32(nClick&int64(0xffff)))
 52445  	put32bits(tls, zRec+12, uint32(return_code))
 52446  	put32bits(tls, zRec+16, uint32(size))
 52447  	put32bits(tls, zRec+20, uint32(offset))
 52448  	*(*int32)(unsafe.Pointer(p + 200)) += 24
 52449  }
 52450  
 52451  func vfslog_string(tls *libc.TLS, pVfs uintptr, zStr uintptr) {
 52452  	var p uintptr = pVfs
 52453  	var zRec uintptr
 52454  	var nStr int32
 52455  	if zStr != 0 {
 52456  		nStr = int32(libc.Xstrlen(tls, zStr))
 52457  	} else {
 52458  		nStr = 0
 52459  	}
 52460  	if uint64(4+nStr+(*VfslogVfs)(unsafe.Pointer(p)).FnBuf) > uint64(unsafe.Sizeof([8192]int8{})) {
 52461  		vfslog_flush(tls, p)
 52462  	}
 52463  	zRec = p + 204 + uintptr((*VfslogVfs)(unsafe.Pointer(p)).FnBuf)
 52464  	put32bits(tls, zRec, uint32(nStr))
 52465  	if zStr != 0 {
 52466  		libc.Xmemcpy(tls, zRec+4, zStr, uint64(nStr))
 52467  	}
 52468  	*(*int32)(unsafe.Pointer(p + 200)) += 4 + nStr
 52469  }
 52470  
 52471  func vfslog_finalize(tls *libc.TLS, p uintptr) {
 52472  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVfs)(unsafe.Pointer(p)).FpLog)).FpMethods != 0 {
 52473  		vfslog_flush(tls, p)
 52474  		(*struct {
 52475  			f func(*libc.TLS, uintptr) int32
 52476  		})(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)
 52477  	}
 52478  	sqlite3.Xsqlite3_free(tls, p)
 52479  }
 52480  
 52481  func sqlite3_vfslog_finalize(tls *libc.TLS, zVfs uintptr) int32 {
 52482  	var pVfs uintptr
 52483  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 52484  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 52485  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52486  	}{vfslogOpen})) {
 52487  		return SQLITE_ERROR
 52488  	}
 52489  	sqlite3.Xsqlite3_vfs_unregister(tls, pVfs)
 52490  	vfslog_finalize(tls, pVfs)
 52491  	return SQLITE_OK
 52492  }
 52493  
 52494  func sqlite3_vfslog_new(tls *libc.TLS, zVfs uintptr, zParentVfs uintptr, zLog uintptr) int32 {
 52495  	bp := tls.Alloc(4)
 52496  	defer tls.Free(4)
 52497  
 52498  	var p uintptr
 52499  	var pParent uintptr
 52500  	var nByte int32
 52501  
 52502  	var rc int32
 52503  	var zFile uintptr
 52504  	var nVfs int32
 52505  
 52506  	pParent = sqlite3.Xsqlite3_vfs_find(tls, zParentVfs)
 52507  	if !(pParent != 0) {
 52508  		return SQLITE_ERROR
 52509  	}
 52510  
 52511  	nVfs = int32(libc.Xstrlen(tls, zVfs))
 52512  	nByte = int32(uint64(unsafe.Sizeof(VfslogVfs{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile) + uint64(nVfs) + uint64(1) + uint64((*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname) + uint64(1))
 52513  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 52514  	libc.Xmemset(tls, p, 0, uint64(nByte))
 52515  
 52516  	(*VfslogVfs)(unsafe.Pointer(p)).FpVfs = pParent
 52517  	(*VfslogVfs)(unsafe.Pointer(p)).FpLog = p + 1*8400
 52518  	libc.Xmemcpy(tls, p, uintptr(unsafe.Pointer(&vfslog_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 52519  	(*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName = (*VfslogVfs)(unsafe.Pointer(p)).FpLog + uintptr((*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile)
 52520  	*(*int32)(unsafe.Pointer(p + 4)) += (*sqlite3_vfs)(unsafe.Pointer(pParent)).FszOsFile
 52521  	libc.Xmemcpy(tls, (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName, zVfs, uint64(nVfs))
 52522  
 52523  	zFile = (*VfslogVfs)(unsafe.Pointer(p)).Fbase.FzName + uintptr(nVfs+1)
 52524  	(*struct {
 52525  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52526  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxFullPathname})).f(tls, pParent, zLog, (*sqlite3_vfs)(unsafe.Pointer(pParent)).FmxPathname, zFile)
 52527  
 52528  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE | SQLITE_OPEN_SUPER_JOURNAL
 52529  	(*struct {
 52530  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 52531  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxDelete})).f(tls, pParent, zFile, 0)
 52532  	rc = (*struct {
 52533  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52534  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pParent)).FxOpen})).f(tls, pParent, zFile, (*VfslogVfs)(unsafe.Pointer(p)).FpLog, *(*int32)(unsafe.Pointer(bp)), bp)
 52535  	if rc == SQLITE_OK {
 52536  		libc.Xmemcpy(tls, p+204, ts+35535, uint64(20))
 52537  		(*VfslogVfs)(unsafe.Pointer(p)).FiOffset = int64(0)
 52538  		(*VfslogVfs)(unsafe.Pointer(p)).FnBuf = 20
 52539  		rc = sqlite3.Xsqlite3_vfs_register(tls, p, 1)
 52540  	}
 52541  	if rc != 0 {
 52542  		vfslog_finalize(tls, p)
 52543  	}
 52544  	return rc
 52545  }
 52546  
 52547  func sqlite3_vfslog_annotate(tls *libc.TLS, zVfs uintptr, zMsg uintptr) int32 {
 52548  	var pVfs uintptr
 52549  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, zVfs)
 52550  	if !(pVfs != 0) || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxOpen != *(*uintptr)(unsafe.Pointer(&struct {
 52551  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52552  	}{vfslogOpen})) {
 52553  		return SQLITE_ERROR
 52554  	}
 52555  	vfslog_call(tls, pVfs, OS_ANNOTATE, 0, int64(0), 0, 0, 0)
 52556  	vfslog_string(tls, pVfs, zMsg)
 52557  	return SQLITE_OK
 52558  }
 52559  
 52560  func vfslog_eventname(tls *libc.TLS, eEvent int32) uintptr {
 52561  	var zEvent uintptr = uintptr(0)
 52562  
 52563  	switch eEvent {
 52564  	case OS_CLOSE:
 52565  		zEvent = ts + 35556
 52566  		break
 52567  	case OS_READ:
 52568  		zEvent = ts + 35563
 52569  		break
 52570  	case OS_WRITE:
 52571  		zEvent = ts + 35569
 52572  		break
 52573  	case OS_TRUNCATE:
 52574  		zEvent = ts + 35576
 52575  		break
 52576  	case OS_SYNC:
 52577  		zEvent = ts + 27843
 52578  		break
 52579  	case OS_FILESIZE:
 52580  		zEvent = ts + 35586
 52581  		break
 52582  	case OS_LOCK:
 52583  		zEvent = ts + 35596
 52584  		break
 52585  	case OS_UNLOCK:
 52586  		zEvent = ts + 35602
 52587  		break
 52588  	case OS_CHECKRESERVEDLOCK:
 52589  		zEvent = ts + 35610
 52590  		break
 52591  	case OS_FILECONTROL:
 52592  		zEvent = ts + 35624
 52593  		break
 52594  	case OS_SECTORSIZE:
 52595  		zEvent = ts + 35637
 52596  		break
 52597  	case OS_DEVCHAR:
 52598  		zEvent = ts + 35649
 52599  		break
 52600  	case OS_OPEN:
 52601  		zEvent = ts + 27421
 52602  		break
 52603  	case OS_DELETE:
 52604  		zEvent = ts + 35661
 52605  		break
 52606  	case OS_ACCESS:
 52607  		zEvent = ts + 35669
 52608  		break
 52609  	case OS_FULLPATHNAME:
 52610  		zEvent = ts + 35677
 52611  		break
 52612  	case OS_RANDOMNESS:
 52613  		zEvent = ts + 35691
 52614  		break
 52615  	case OS_SLEEP:
 52616  		zEvent = ts + 35703
 52617  		break
 52618  	case OS_CURRENTTIME:
 52619  		zEvent = ts + 35710
 52620  		break
 52621  
 52622  	case OS_SHMUNMAP:
 52623  		zEvent = ts + 35723
 52624  		break
 52625  	case OS_SHMLOCK:
 52626  		zEvent = ts + 35733
 52627  		break
 52628  	case OS_SHMBARRIER:
 52629  		zEvent = ts + 35742
 52630  		break
 52631  	case OS_SHMMAP:
 52632  		zEvent = ts + 35754
 52633  		break
 52634  
 52635  	case OS_ANNOTATE:
 52636  		zEvent = ts + 35762
 52637  		break
 52638  	}
 52639  
 52640  	return zEvent
 52641  }
 52642  
 52643  type VfslogVtab1 = struct {
 52644  	Fbase  sqlite3_vtab
 52645  	FpFd   uintptr
 52646  	FnByte sqlite3_int64
 52647  	FzFile uintptr
 52648  }
 52649  
 52650  type VfslogVtab = VfslogVtab1
 52651  type VfslogCsr1 = struct {
 52652  	Fbase        sqlite3_vtab_cursor
 52653  	FiRowid      sqlite3_int64
 52654  	FiOffset     sqlite3_int64
 52655  	FzTransient  uintptr
 52656  	FnFile       int32
 52657  	F__ccgo_pad1 [4]byte
 52658  	FazFile      uintptr
 52659  	FaBuf        [1024]uint8
 52660  }
 52661  
 52662  type VfslogCsr = VfslogCsr1
 52663  
 52664  func get32bits(tls *libc.TLS, p uintptr) uint32 {
 52665  	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))))
 52666  }
 52667  
 52668  func dequote(tls *libc.TLS, z uintptr) {
 52669  	var quote int8
 52670  	quote = *(*int8)(unsafe.Pointer(z))
 52671  	if int32(quote) == '[' || int32(quote) == '\'' || int32(quote) == '"' || int32(quote) == '`' {
 52672  		var iIn int32 = 1
 52673  		var iOut int32 = 0
 52674  		if int32(quote) == '[' {
 52675  			quote = int8(']')
 52676  		}
 52677  		for *(*int8)(unsafe.Pointer(z + uintptr(iIn))) != 0 {
 52678  			if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn)))) == int32(quote) {
 52679  				if int32(*(*int8)(unsafe.Pointer(z + uintptr(iIn+1)))) != int32(quote) {
 52680  					break
 52681  				}
 52682  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = quote
 52683  				iIn = iIn + 2
 52684  			} else {
 52685  				*(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iOut, 1)))) = *(*int8)(unsafe.Pointer(z + uintptr(libc.PostIncInt32(&iIn, 1))))
 52686  			}
 52687  		}
 52688  		*(*int8)(unsafe.Pointer(z + uintptr(iOut))) = int8(0)
 52689  	}
 52690  }
 52691  
 52692  func vlogConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 52693  	bp := tls.Alloc(12)
 52694  	defer tls.Free(12)
 52695  
 52696  	var pVfs uintptr
 52697  
 52698  	var p uintptr
 52699  	var rc int32
 52700  	var nByte int32
 52701  	var zFile uintptr
 52702  
 52703  	*(*uintptr)(unsafe.Pointer(ppVtab)) = uintptr(0)
 52704  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 52705  	nByte = int32(uint64(unsafe.Sizeof(VfslogVtab{})) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile) + uint64((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname))
 52706  	p = sqlite3.Xsqlite3_malloc(tls, nByte)
 52707  	if p == uintptr(0) {
 52708  		return SQLITE_NOMEM
 52709  	}
 52710  	libc.Xmemset(tls, p, 0, uint64(nByte))
 52711  
 52712  	(*VfslogVtab)(unsafe.Pointer(p)).FpFd = p + 1*48
 52713  	(*VfslogVtab)(unsafe.Pointer(p)).FzFile = (*VfslogVtab)(unsafe.Pointer(p)).FpFd + uintptr((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile)
 52714  
 52715  	zFile = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(argv + 3*8))))
 52716  	if !(zFile != 0) {
 52717  		sqlite3.Xsqlite3_free(tls, p)
 52718  		return SQLITE_NOMEM
 52719  	}
 52720  	dequote(tls, zFile)
 52721  	(*struct {
 52722  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 52723  	})(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)
 52724  	sqlite3.Xsqlite3_free(tls, zFile)
 52725  
 52726  	*(*int32)(unsafe.Pointer(bp + 8)) = SQLITE_OPEN_READWRITE | SQLITE_OPEN_SUPER_JOURNAL
 52727  	rc = (*struct {
 52728  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 52729  	})(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)
 52730  
 52731  	if rc == SQLITE_OK {
 52732  		(*struct {
 52733  			f func(*libc.TLS, uintptr, uintptr) int32
 52734  		})(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+32)
 52735  		sqlite3.Xsqlite3_declare_vtab(tls, db,
 52736  			ts+35773)
 52737  		*(*uintptr)(unsafe.Pointer(ppVtab)) = p
 52738  	} else {
 52739  		sqlite3.Xsqlite3_free(tls, p)
 52740  	}
 52741  
 52742  	return rc
 52743  }
 52744  
 52745  func vlogBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 52746  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FestimatedCost = 10.0
 52747  	return SQLITE_OK
 52748  }
 52749  
 52750  func vlogDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 52751  	var p uintptr = pVtab
 52752  	if (*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods != 0 {
 52753  		(*struct {
 52754  			f func(*libc.TLS, uintptr) int32
 52755  		})(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)
 52756  		(*sqlite3_file)(unsafe.Pointer((*VfslogVtab)(unsafe.Pointer(p)).FpFd)).FpMethods = uintptr(0)
 52757  	}
 52758  	sqlite3.Xsqlite3_free(tls, p)
 52759  	return SQLITE_OK
 52760  }
 52761  
 52762  func vlogOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 52763  	var pCsr uintptr
 52764  
 52765  	pCsr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(VfslogCsr{})))
 52766  	if !(pCsr != 0) {
 52767  		return SQLITE_NOMEM
 52768  	}
 52769  	libc.Xmemset(tls, pCsr, 0, uint64(unsafe.Sizeof(VfslogCsr{})))
 52770  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCsr
 52771  	return SQLITE_OK
 52772  }
 52773  
 52774  func vlogClose(tls *libc.TLS, pCursor uintptr) int32 {
 52775  	var p uintptr = pCursor
 52776  	var i int32
 52777  	for i = 0; i < (*VfslogCsr)(unsafe.Pointer(p)).FnFile; i++ {
 52778  		sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(p)).FazFile + uintptr(i)*8)))
 52779  	}
 52780  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FazFile)
 52781  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(p)).FzTransient)
 52782  	sqlite3.Xsqlite3_free(tls, p)
 52783  	return SQLITE_OK
 52784  }
 52785  
 52786  func vlogNext(tls *libc.TLS, pCursor uintptr) int32 {
 52787  	bp := tls.Alloc(4)
 52788  	defer tls.Free(4)
 52789  
 52790  	var pCsr uintptr = pCursor
 52791  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 52792  	var rc int32 = SQLITE_OK
 52793  	var nRead int32
 52794  
 52795  	sqlite3.Xsqlite3_free(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient)
 52796  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = uintptr(0)
 52797  
 52798  	nRead = 24
 52799  	if (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset+sqlite3_int64(nRead) <= (*VfslogVtab)(unsafe.Pointer(p)).FnByte {
 52800  		var eEvent int32
 52801  		rc = (*struct {
 52802  			f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52803  		})(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+48, nRead, (*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset)
 52804  
 52805  		eEvent = int32(get32bits(tls, pCsr+48))
 52806  		if rc == SQLITE_OK &&
 52807  			(eEvent == OS_OPEN || eEvent == OS_DELETE || eEvent == OS_ACCESS) {
 52808  			rc = (*struct {
 52809  				f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52810  			})(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))
 52811  			nRead = nRead + 4
 52812  			if rc == SQLITE_OK {
 52813  				var nStr int32 = int32(get32bits(tls, bp))
 52814  				var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, nStr+1)
 52815  				rc = (*struct {
 52816  					f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 52817  				})(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))
 52818  				*(*int8)(unsafe.Pointer(zStr + uintptr(nStr))) = int8(0)
 52819  				nRead = nRead + nStr
 52820  
 52821  				if eEvent == OS_OPEN {
 52822  					var iFileid int32 = int32(get32bits(tls, pCsr+48+4))
 52823  					if iFileid >= (*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile {
 52824  						var nNew int32 = int32(uint64(unsafe.Sizeof(uintptr(0))) * uint64(iFileid+1))
 52825  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile = sqlite3.Xsqlite3_realloc(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile, nNew)
 52826  						nNew = int32(uint64(nNew) - uint64(unsafe.Sizeof(uintptr(0)))*uint64((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile))
 52827  						libc.Xmemset(tls, (*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile+uintptr((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile)*8, 0, uint64(nNew))
 52828  						(*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile = iFileid + 1
 52829  					}
 52830  					sqlite3.Xsqlite3_free(tls, *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)))
 52831  					*(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(iFileid)*8)) = zStr
 52832  				} else {
 52833  					(*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient = zStr
 52834  				}
 52835  			}
 52836  		}
 52837  	}
 52838  
 52839  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 8)) += int64(1)
 52840  	*(*sqlite3_int64)(unsafe.Pointer(pCsr + 16)) += sqlite3_int64(nRead)
 52841  	return rc
 52842  }
 52843  
 52844  func vlogEof(tls *libc.TLS, pCursor uintptr) int32 {
 52845  	var pCsr uintptr = pCursor
 52846  	var p uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pCursor)).FpVtab
 52847  	return libc.Bool32((*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset >= (*VfslogVtab)(unsafe.Pointer(p)).FnByte)
 52848  }
 52849  
 52850  func vlogFilter(tls *libc.TLS, pCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 52851  	var pCsr uintptr = pCursor
 52852  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid = int64(0)
 52853  	(*VfslogCsr)(unsafe.Pointer(pCsr)).FiOffset = int64(20)
 52854  	return vlogNext(tls, pCursor)
 52855  }
 52856  
 52857  func vlogColumn(tls *libc.TLS, pCursor uintptr, ctx uintptr, i int32) int32 {
 52858  	var val uint32
 52859  	var pCsr uintptr = pCursor
 52860  
 52861  	val = get32bits(tls, pCsr+48+uintptr(4*i))
 52862  
 52863  	switch i {
 52864  	case 0:
 52865  		{
 52866  			sqlite3.Xsqlite3_result_text(tls, ctx, vfslog_eventname(tls, int32(val)), -1, uintptr(0))
 52867  			break
 52868  
 52869  		}
 52870  	case 1:
 52871  		{
 52872  			var zStr uintptr = (*VfslogCsr)(unsafe.Pointer(pCsr)).FzTransient
 52873  			if val != uint32(0) && val < uint32((*VfslogCsr)(unsafe.Pointer(pCsr)).FnFile) {
 52874  				zStr = *(*uintptr)(unsafe.Pointer((*VfslogCsr)(unsafe.Pointer(pCsr)).FazFile + uintptr(val)*8))
 52875  			}
 52876  			sqlite3.Xsqlite3_result_text(tls, ctx, zStr, -1, libc.UintptrFromInt32(-1))
 52877  			break
 52878  
 52879  		}
 52880  	default:
 52881  		sqlite3.Xsqlite3_result_int(tls, ctx, int32(val))
 52882  		break
 52883  	}
 52884  
 52885  	return SQLITE_OK
 52886  }
 52887  
 52888  func vlogRowid(tls *libc.TLS, pCursor uintptr, pRowid uintptr) int32 {
 52889  	var pCsr uintptr = pCursor
 52890  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = (*VfslogCsr)(unsafe.Pointer(pCsr)).FiRowid
 52891  	return SQLITE_OK
 52892  }
 52893  
 52894  func sqlite3_vfslog_register(tls *libc.TLS, db uintptr) int32 {
 52895  	sqlite3.Xsqlite3_create_module(tls, db, ts+35828, uintptr(unsafe.Pointer(&vfslog_module)), uintptr(0))
 52896  	return SQLITE_OK
 52897  }
 52898  
 52899  var vfslog_module = sqlite3_module{
 52900  	FxCreate:     0,
 52901  	FxConnect:    0,
 52902  	FxBestIndex:  0,
 52903  	FxDisconnect: 0,
 52904  	FxDestroy:    0,
 52905  	FxOpen:       0,
 52906  	FxClose:      0,
 52907  	FxFilter:     0,
 52908  	FxNext:       0,
 52909  	FxEof:        0,
 52910  	FxColumn:     0,
 52911  	FxRowid:      0,
 52912  }
 52913  
 52914  func test_vfslog(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 52915  	bp := tls.Alloc(144)
 52916  	defer tls.Free(144)
 52917  
 52918  	var db uintptr
 52919  
 52920  	var rc int32 = SQLITE_ERROR
 52921  
 52922  	if objc < 2 {
 52923  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 52924  		return TCL_ERROR
 52925  	}
 52926  	if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), uintptr(unsafe.Pointer(&strs)), int32(unsafe.Sizeof(uintptr(0))), ts+2014, 0, bp+72) != 0 {
 52927  		return TCL_ERROR
 52928  	}
 52929  
 52930  	switch uint32(*(*int32)(unsafe.Pointer(bp + 72))) {
 52931  	case uint32(0):
 52932  		{
 52933  			var zVfs uintptr
 52934  			var zMsg uintptr
 52935  			if objc != 4 {
 52936  				tcl.XTcl_WrongNumArgs(tls, interp, 3, objv, ts+35835)
 52937  				return TCL_ERROR
 52938  			}
 52939  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52940  			zMsg = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 52941  			rc = sqlite3_vfslog_annotate(tls, zVfs, zMsg)
 52942  			if rc != SQLITE_OK {
 52943  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+35839, 0))
 52944  				return TCL_ERROR
 52945  			}
 52946  			break
 52947  
 52948  		}
 52949  	case uint32(1):
 52950  		{
 52951  			var zVfs uintptr
 52952  			if objc != 3 {
 52953  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35835)
 52954  				return TCL_ERROR
 52955  			}
 52956  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52957  			rc = sqlite3_vfslog_finalize(tls, zVfs)
 52958  			if rc != SQLITE_OK {
 52959  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+16, ts+35839, 0))
 52960  				return TCL_ERROR
 52961  			}
 52962  			break
 52963  
 52964  		}
 52965  
 52966  	case uint32(2):
 52967  		{
 52968  			var zVfs uintptr
 52969  			var zParent uintptr
 52970  			var zLog uintptr
 52971  			if objc != 5 {
 52972  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+35846)
 52973  				return TCL_ERROR
 52974  			}
 52975  			zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52976  			zParent = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 52977  			zLog = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 52978  			if int32(*(*int8)(unsafe.Pointer(zParent))) == 0 {
 52979  				zParent = uintptr(0)
 52980  			}
 52981  			rc = sqlite3_vfslog_new(tls, zVfs, zParent, zLog)
 52982  			if rc != SQLITE_OK {
 52983  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+32, ts+35839, 0))
 52984  				return TCL_ERROR
 52985  			}
 52986  			break
 52987  
 52988  		}
 52989  
 52990  	case uint32(3):
 52991  		{
 52992  			var zDb uintptr
 52993  			if objc != 3 {
 52994  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+2050)
 52995  				return TCL_ERROR
 52996  			}
 52997  			zDb = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 52998  			if tcl.XTcl_GetCommandInfo(tls, interp, zDb, bp+80) != 0 {
 52999  				db = (*struct{ Fdb uintptr })(unsafe.Pointer((*Tcl_CmdInfo)(unsafe.Pointer(bp + 80)).FobjClientData)).Fdb
 53000  				rc = sqlite3_vfslog_register(tls, db)
 53001  			}
 53002  			if rc != SQLITE_OK {
 53003  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+35865, zDb, uintptr(0)))
 53004  				return TCL_ERROR
 53005  			}
 53006  			break
 53007  
 53008  		}
 53009  	}
 53010  
 53011  	return TCL_OK
 53012  }
 53013  
 53014  var strs = [5]uintptr{ts + 35886, ts + 35895, ts + 14009, ts + 35904, uintptr(0)}
 53015  
 53016  func SqlitetestOsinst_Init(tls *libc.TLS, interp uintptr) int32 {
 53017  	tcl.XTcl_CreateObjCommand(tls, interp, ts+35828, *(*uintptr)(unsafe.Pointer(&struct {
 53018  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 53019  	}{test_vfslog})), uintptr(0), uintptr(0))
 53020  	return TCL_OK
 53021  }
 53022  
 53023  type testpcacheGlobalType1 = struct {
 53024  	FpDummy        uintptr
 53025  	FnInstance     int32
 53026  	FdiscardChance uint32
 53027  	FprngSeed      uint32
 53028  	FhighStress    uint32
 53029  }
 53030  
 53031  type testpcacheGlobalType = testpcacheGlobalType1
 53032  
 53033  var testpcacheGlobal testpcacheGlobalType
 53034  
 53035  func testpcacheInit(tls *libc.TLS, pArg uintptr) int32 {
 53036  	testpcacheGlobal.FpDummy = sqlite3.Xsqlite3_malloc(tls, 10)
 53037  	if testpcacheGlobal.FpDummy == uintptr(0) {
 53038  		return SQLITE_NOMEM
 53039  	}
 53040  	return SQLITE_OK
 53041  }
 53042  
 53043  func testpcacheShutdown(tls *libc.TLS, pArg uintptr) {
 53044  	sqlite3.Xsqlite3_free(tls, testpcacheGlobal.FpDummy)
 53045  	testpcacheGlobal.FpDummy = uintptr(0)
 53046  }
 53047  
 53048  type testpcache1 = struct {
 53049  	FszPage      int32
 53050  	FszExtra     int32
 53051  	FbPurgeable  int32
 53052  	FnFree       int32
 53053  	FnPinned     int32
 53054  	FiRand       uint32
 53055  	FiMagic      uint32
 53056  	F__ccgo_pad1 [4]byte
 53057  	Fa           [217]struct {
 53058  		Fpage     sqlite3_pcache_page
 53059  		Fkey      uint32
 53060  		FisPinned int32
 53061  	}
 53062  }
 53063  
 53064  type testpcache = testpcache1
 53065  type testpcachePage = struct {
 53066  	Fpage     sqlite3_pcache_page
 53067  	Fkey      uint32
 53068  	FisPinned int32
 53069  }
 53070  
 53071  func testpcacheRandom(tls *libc.TLS, p uintptr) uint32 {
 53072  	var x uint32 = uint32(0)
 53073  	var i int32
 53074  	for i = 0; i < 4; i++ {
 53075  		(*testpcache)(unsafe.Pointer(p)).FiRand = (*testpcache)(unsafe.Pointer(p)).FiRand*uint32(69069) + uint32(5)
 53076  		x = x<<8 | (*testpcache)(unsafe.Pointer(p)).FiRand>>16&uint32(0xff)
 53077  	}
 53078  	return x
 53079  }
 53080  
 53081  func testpcacheCreate(tls *libc.TLS, szPage int32, szExtra int32, bPurgeable int32) uintptr {
 53082  	var nMem int32
 53083  	var x uintptr
 53084  	var p uintptr
 53085  	var i int32
 53086  
 53087  	szPage = (szPage + 7) & libc.CplInt32(7)
 53088  	nMem = int32(uint64(unsafe.Sizeof(testpcache{})) + uint64(TESTPCACHE_NPAGE*(szPage+szExtra)))
 53089  	p = sqlite3.Xsqlite3_malloc(tls, nMem)
 53090  	if p == uintptr(0) {
 53091  		return uintptr(0)
 53092  	}
 53093  	x = p + 1*5240
 53094  	(*testpcache)(unsafe.Pointer(p)).FszPage = szPage
 53095  	(*testpcache)(unsafe.Pointer(p)).FszExtra = szExtra
 53096  	(*testpcache)(unsafe.Pointer(p)).FnFree = TESTPCACHE_NPAGE
 53097  	(*testpcache)(unsafe.Pointer(p)).FnPinned = 0
 53098  	(*testpcache)(unsafe.Pointer(p)).FiRand = testpcacheGlobal.FprngSeed
 53099  	(*testpcache)(unsafe.Pointer(p)).FbPurgeable = bPurgeable
 53100  	(*testpcache)(unsafe.Pointer(p)).FiMagic = uint32(TESTPCACHE_VALID)
 53101  	i = 0
 53102  __1:
 53103  	if !(i < TESTPCACHE_NPAGE) {
 53104  		goto __3
 53105  	}
 53106  	{
 53107  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53108  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53109  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpBuf = x
 53110  		(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fpage.FpExtra = x + uintptr(szPage)
 53111  
 53112  	}
 53113  	goto __2
 53114  __2:
 53115  	i++
 53116  	x += uintptr(szPage + szExtra)
 53117  	goto __1
 53118  	goto __3
 53119  __3:
 53120  	;
 53121  	testpcacheGlobal.FnInstance++
 53122  	return p
 53123  }
 53124  
 53125  func testpcacheCachesize(tls *libc.TLS, pCache uintptr, newSize int32) {
 53126  	var p uintptr = pCache
 53127  	_ = p
 53128  
 53129  }
 53130  
 53131  func testpcachePagecount(tls *libc.TLS, pCache uintptr) int32 {
 53132  	var p uintptr = pCache
 53133  
 53134  	return TESTPCACHE_NPAGE - (*testpcache)(unsafe.Pointer(p)).FnFree
 53135  }
 53136  
 53137  func testpcacheFetch(tls *libc.TLS, pCache uintptr, key uint32, createFlag int32) uintptr {
 53138  	var p uintptr = pCache
 53139  	var i int32
 53140  	var j int32
 53141  
 53142  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53143  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == key {
 53144  			if !((*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0) {
 53145  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53146  
 53147  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 1
 53148  			}
 53149  			return p + 32 + uintptr(i)*24
 53150  		}
 53151  	}
 53152  
 53153  	if createFlag == 0 {
 53154  		return uintptr(0)
 53155  	}
 53156  
 53157  	if (*testpcache)(unsafe.Pointer(p)).FnPinned == TESTPCACHE_NPAGE {
 53158  		return uintptr(0)
 53159  	}
 53160  
 53161  	if (*testpcache)(unsafe.Pointer(p)).FnPinned >= TESTPCACHE_NPAGE-TESTPCACHE_RESERVE && createFlag < 2 {
 53162  		return uintptr(0)
 53163  	}
 53164  
 53165  	if testpcacheGlobal.FhighStress != 0 && createFlag < 2 {
 53166  		return uintptr(0)
 53167  	}
 53168  
 53169  	if (*testpcache)(unsafe.Pointer(p)).FnFree > TESTPCACHE_RESERVE || createFlag == 2 && (*testpcache)(unsafe.Pointer(p)).FnFree > 0 {
 53170  		j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53171  		i = 0
 53172  	__1:
 53173  		if !(i < TESTPCACHE_NPAGE) {
 53174  			goto __3
 53175  		}
 53176  		{
 53177  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey == uint32(0) {
 53178  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53179  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53180  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53181  				libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53182  				(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53183  				(*testpcache)(unsafe.Pointer(p)).FnFree--
 53184  
 53185  				return p + 32 + uintptr(j)*24
 53186  			}
 53187  
 53188  		}
 53189  		goto __2
 53190  	__2:
 53191  		i++
 53192  		j = (j + 1) % TESTPCACHE_NPAGE
 53193  		goto __1
 53194  		goto __3
 53195  	__3:
 53196  	}
 53197  
 53198  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable == 0 {
 53199  		return uintptr(0)
 53200  	}
 53201  
 53202  	j = int32(testpcacheRandom(tls, p) % uint32(TESTPCACHE_NPAGE))
 53203  	i = 0
 53204  __4:
 53205  	if !(i < TESTPCACHE_NPAGE) {
 53206  		goto __6
 53207  	}
 53208  	{
 53209  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fkey > uint32(0) && (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).FisPinned == 0 {
 53210  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).Fkey = key
 53211  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(j)*24)).FisPinned = 1
 53212  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpBuf, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszPage))
 53213  			libc.Xmemset(tls, (*testpcachePage)(unsafe.Pointer(p+32+uintptr(j)*24)).Fpage.FpExtra, 0, uint64((*testpcache)(unsafe.Pointer(p)).FszExtra))
 53214  			(*testpcache)(unsafe.Pointer(p)).FnPinned++
 53215  
 53216  			return p + 32 + uintptr(j)*24
 53217  		}
 53218  
 53219  	}
 53220  	goto __5
 53221  __5:
 53222  	i++
 53223  	j = (j + 1) % TESTPCACHE_NPAGE
 53224  	goto __4
 53225  	goto __6
 53226  __6:
 53227  	;
 53228  	return uintptr(0)
 53229  }
 53230  
 53231  func testpcacheUnpin(tls *libc.TLS, pCache uintptr, pOldPage uintptr, discard int32) {
 53232  	var p uintptr = pCache
 53233  	var i int32
 53234  
 53235  	if (*testpcache)(unsafe.Pointer(p)).FbPurgeable != 0 &&
 53236  		uint32(100)-testpcacheGlobal.FdiscardChance <= testpcacheRandom(tls, p)%uint32(100) {
 53237  		discard = 1
 53238  	}
 53239  
 53240  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53241  		if p+32+uintptr(i)*24 == pOldPage {
 53242  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).FisPinned = 0
 53243  			(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53244  
 53245  			if discard != 0 {
 53246  				(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53247  				(*testpcache)(unsafe.Pointer(p)).FnFree++
 53248  
 53249  			}
 53250  			return
 53251  		}
 53252  	}
 53253  
 53254  }
 53255  
 53256  func testpcacheRekey(tls *libc.TLS, pCache uintptr, pOldPage uintptr, oldKey uint32, newKey uint32) {
 53257  	var p uintptr = pCache
 53258  	var i int32
 53259  
 53260  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53261  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == newKey {
 53262  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53263  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53264  
 53265  			break
 53266  		}
 53267  	}
 53268  
 53269  	for i = 0; i < TESTPCACHE_NPAGE; i++ {
 53270  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey == oldKey {
 53271  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = newKey
 53272  			return
 53273  		}
 53274  	}
 53275  
 53276  }
 53277  
 53278  func testpcacheTruncate(tls *libc.TLS, pCache uintptr, iLimit uint32) {
 53279  	var p uintptr = pCache
 53280  	var i uint32
 53281  
 53282  	for i = uint32(0); i < uint32(TESTPCACHE_NPAGE); i++ {
 53283  		if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).Fkey >= iLimit {
 53284  			(*testpcachePage)(unsafe.Pointer(p + 32 + uintptr(i)*24)).Fkey = uint32(0)
 53285  			if (*testpcachePage)(unsafe.Pointer(p+32+uintptr(i)*24)).FisPinned != 0 {
 53286  				(*testpcache)(unsafe.Pointer(p)).FnPinned--
 53287  
 53288  			}
 53289  			(*testpcache)(unsafe.Pointer(p)).FnFree++
 53290  
 53291  		}
 53292  	}
 53293  }
 53294  
 53295  func testpcacheDestroy(tls *libc.TLS, pCache uintptr) {
 53296  	var p uintptr = pCache
 53297  
 53298  	(*testpcache)(unsafe.Pointer(p)).FiMagic = TESTPCACHE_CLEAR
 53299  	sqlite3.Xsqlite3_free(tls, p)
 53300  	testpcacheGlobal.FnInstance--
 53301  }
 53302  
 53303  func installTestPCache(tls *libc.TLS, installFlag int32, discardChance uint32, prngSeed uint32, highStress uint32) {
 53304  	bp := tls.Alloc(24)
 53305  	defer tls.Free(24)
 53306  
 53307  	testpcacheGlobal.FdiscardChance = discardChance
 53308  	testpcacheGlobal.FprngSeed = prngSeed ^ prngSeed<<16
 53309  	testpcacheGlobal.FhighStress = highStress
 53310  	if installFlag != isInstalled {
 53311  		if installFlag != 0 {
 53312  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_GETPCACHE2, libc.VaList(bp, uintptr(unsafe.Pointer(&defaultPcache))))
 53313  
 53314  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+8, uintptr(unsafe.Pointer(&testPcache))))
 53315  		} else {
 53316  			sqlite3.Xsqlite3_config(tls, SQLITE_CONFIG_PCACHE2, libc.VaList(bp+16, uintptr(unsafe.Pointer(&defaultPcache))))
 53317  		}
 53318  		isInstalled = installFlag
 53319  	}
 53320  }
 53321  
 53322  var testPcache = sqlite3_pcache_methods2{
 53323  	FiVersion:   1,
 53324  	FpArg:       0,
 53325  	FxInit:      0,
 53326  	FxShutdown:  0,
 53327  	FxCreate:    0,
 53328  	FxCachesize: 0,
 53329  	FxPagecount: 0,
 53330  	FxFetch:     0,
 53331  	FxUnpin:     0,
 53332  	FxRekey:     0,
 53333  	FxTruncate:  0,
 53334  	FxDestroy:   0,
 53335  }
 53336  var defaultPcache sqlite3_pcache_methods2
 53337  var isInstalled int32 = 0
 53338  
 53339  type quota_FILE1 = struct {
 53340  	Ff     uintptr
 53341  	FiOfst sqlite3_int64
 53342  	FpFile uintptr
 53343  }
 53344  
 53345  type quota_FILE = quota_FILE1
 53346  
 53347  type quotaGroup1 = struct {
 53348  	FzPattern  uintptr
 53349  	FiLimit    sqlite3_int64
 53350  	FiSize     sqlite3_int64
 53351  	FxCallback uintptr
 53352  	FpArg      uintptr
 53353  	FxDestroy  uintptr
 53354  	FpNext     uintptr
 53355  	FppPrev    uintptr
 53356  	FpFiles    uintptr
 53357  }
 53358  
 53359  type quotaGroup = quotaGroup1
 53360  type quotaConn1 = struct {
 53361  	Fbase  sqlite3_file
 53362  	FpFile uintptr
 53363  }
 53364  
 53365  type quotaConn = quotaConn1
 53366  type quotaFile1 = struct {
 53367  	FzFilename     uintptr
 53368  	FpGroup        uintptr
 53369  	FiSize         sqlite3_int64
 53370  	FnRef          int32
 53371  	FdeleteOnClose int32
 53372  	FpNext         uintptr
 53373  	FppPrev        uintptr
 53374  }
 53375  
 53376  type quotaFile = quotaFile1
 53377  
 53378  var gQuota struct {
 53379  	FpOrigVfs      uintptr
 53380  	FsThisVfs      sqlite3_vfs
 53381  	FsIoMethodsV1  sqlite3_io_methods
 53382  	FsIoMethodsV2  sqlite3_io_methods
 53383  	FisInitialized int32
 53384  	F__ccgo_pad1   [4]byte
 53385  	FpMutex        uintptr
 53386  	FpGroup        uintptr
 53387  }
 53388  
 53389  func quotaEnter(tls *libc.TLS) {
 53390  	sqlite3.Xsqlite3_mutex_enter(tls, gQuota.FpMutex)
 53391  }
 53392  
 53393  func quotaLeave(tls *libc.TLS) {
 53394  	sqlite3.Xsqlite3_mutex_leave(tls, gQuota.FpMutex)
 53395  }
 53396  
 53397  func quotaGroupOpenFileCount(tls *libc.TLS, pGroup uintptr) int32 {
 53398  	var N int32 = 0
 53399  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53400  	for pFile != 0 {
 53401  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 53402  			N++
 53403  		}
 53404  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53405  	}
 53406  	return N
 53407  }
 53408  
 53409  func quotaRemoveFile(tls *libc.TLS, pFile uintptr) {
 53410  	var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53411  	*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53412  	*(*uintptr)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FppPrev)) = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53413  	if (*quotaFile)(unsafe.Pointer(pFile)).FpNext != 0 {
 53414  		(*quotaFile)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpNext)).FppPrev = (*quotaFile)(unsafe.Pointer(pFile)).FppPrev
 53415  	}
 53416  	sqlite3.Xsqlite3_free(tls, pFile)
 53417  }
 53418  
 53419  func quotaRemoveAllFiles(tls *libc.TLS, pGroup uintptr) {
 53420  	for (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 53421  		quotaRemoveFile(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)
 53422  	}
 53423  }
 53424  
 53425  func quotaGroupDeref(tls *libc.TLS, pGroup uintptr) {
 53426  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit == int64(0) && quotaGroupOpenFileCount(tls, pGroup) == 0 {
 53427  		quotaRemoveAllFiles(tls, pGroup)
 53428  		*(*uintptr)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev)) = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53429  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext != 0 {
 53430  			(*quotaGroup)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpNext)).FppPrev = (*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev
 53431  		}
 53432  		if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 {
 53433  			(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53434  		}
 53435  		sqlite3.Xsqlite3_free(tls, pGroup)
 53436  	}
 53437  }
 53438  
 53439  func quotaStrglob(tls *libc.TLS, zGlob uintptr, z uintptr) int32 {
 53440  	var c int32
 53441  	var c2 int32
 53442  	var cx int32
 53443  	var invert int32
 53444  	var seen int32
 53445  
 53446  	for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) != 0 {
 53447  		if c == '*' {
 53448  			for libc.AssignInt32(&c, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))) == '*' || c == '?' {
 53449  				if c == '?' && int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 53450  					return 0
 53451  				}
 53452  			}
 53453  			if c == 0 {
 53454  				return 1
 53455  			} else if c == '[' {
 53456  				for *(*int8)(unsafe.Pointer(z)) != 0 && quotaStrglob(tls, zGlob-uintptr(1), z) == 0 {
 53457  					z++
 53458  				}
 53459  				return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) != 0)
 53460  			}
 53461  			if c == '/' {
 53462  				cx = '\\'
 53463  			} else {
 53464  				cx = c
 53465  			}
 53466  			for libc.AssignInt32(&c2, int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))) != 0 {
 53467  				for c2 != c && c2 != cx {
 53468  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 53469  					if c2 == 0 {
 53470  						return 0
 53471  					}
 53472  				}
 53473  				if quotaStrglob(tls, zGlob, z) != 0 {
 53474  					return 1
 53475  				}
 53476  			}
 53477  			return 0
 53478  		} else if c == '?' {
 53479  			if int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) == 0 {
 53480  				return 0
 53481  			}
 53482  		} else if c == '[' {
 53483  			var prior_c int32 = 0
 53484  			seen = 0
 53485  			invert = 0
 53486  			c = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1))))
 53487  			if c == 0 {
 53488  				return 0
 53489  			}
 53490  			c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53491  			if c2 == '^' {
 53492  				invert = 1
 53493  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53494  			}
 53495  			if c2 == ']' {
 53496  				if c == ']' {
 53497  					seen = 1
 53498  				}
 53499  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53500  			}
 53501  			for c2 != 0 && c2 != ']' {
 53502  				if c2 == '-' && int32(*(*int8)(unsafe.Pointer(zGlob))) != ']' && int32(*(*int8)(unsafe.Pointer(zGlob))) != 0 && prior_c > 0 {
 53503  					c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53504  					if c >= prior_c && c <= c2 {
 53505  						seen = 1
 53506  					}
 53507  					prior_c = 0
 53508  				} else {
 53509  					if c == c2 {
 53510  						seen = 1
 53511  					}
 53512  					prior_c = c2
 53513  				}
 53514  				c2 = int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&zGlob, 1))))
 53515  			}
 53516  			if c2 == 0 || seen^invert == 0 {
 53517  				return 0
 53518  			}
 53519  		} else if c == '/' {
 53520  			if int32(*(*int8)(unsafe.Pointer(z))) != '/' && int32(*(*int8)(unsafe.Pointer(z))) != '\\' {
 53521  				return 0
 53522  			}
 53523  			z++
 53524  		} else {
 53525  			if c != int32(*(*int8)(unsafe.Pointer(libc.PostIncUintptr(&z, 1)))) {
 53526  				return 0
 53527  			}
 53528  		}
 53529  	}
 53530  	return libc.Bool32(int32(*(*int8)(unsafe.Pointer(z))) == 0)
 53531  }
 53532  
 53533  func quotaGroupFind(tls *libc.TLS, zFilename uintptr) uintptr {
 53534  	var p uintptr
 53535  	for p = gQuota.FpGroup; p != 0 && quotaStrglob(tls, (*quotaGroup)(unsafe.Pointer(p)).FzPattern, zFilename) == 0; p = (*quotaGroup)(unsafe.Pointer(p)).FpNext {
 53536  	}
 53537  	return p
 53538  }
 53539  
 53540  func quotaSubOpen(tls *libc.TLS, pConn uintptr) uintptr {
 53541  	var p uintptr = pConn
 53542  	return p + 1*16
 53543  }
 53544  
 53545  func quotaFindFile(tls *libc.TLS, pGroup uintptr, zName uintptr, createFlag int32) uintptr {
 53546  	var pFile uintptr = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53547  	for pFile != 0 && libc.Xstrcmp(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName) != 0 {
 53548  		pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 53549  	}
 53550  	if pFile == uintptr(0) && createFlag != 0 {
 53551  		var nName int32 = int32(libc.Xstrlen(tls, zName) & uint64(0x3fffffff))
 53552  		pFile = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaFile{}))+uint64(nName)+uint64(1)))
 53553  		if pFile != 0 {
 53554  			libc.Xmemset(tls, pFile, 0, uint64(unsafe.Sizeof(quotaFile{})))
 53555  			(*quotaFile)(unsafe.Pointer(pFile)).FzFilename = pFile + 1*48
 53556  			libc.Xmemcpy(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, zName, uint64(nName+1))
 53557  			(*quotaFile)(unsafe.Pointer(pFile)).FpNext = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles
 53558  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles != 0 {
 53559  				(*quotaFile)(unsafe.Pointer((*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles)).FppPrev = pFile + 32
 53560  			}
 53561  			(*quotaFile)(unsafe.Pointer(pFile)).FppPrev = pGroup + 64
 53562  			(*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles = pFile
 53563  			(*quotaFile)(unsafe.Pointer(pFile)).FpGroup = pGroup
 53564  		}
 53565  	}
 53566  	return pFile
 53567  }
 53568  
 53569  func quota_utf8_to_mbcs(tls *libc.TLS, zUtf8 uintptr) uintptr {
 53570  	return zUtf8
 53571  }
 53572  
 53573  func quota_mbcs_free(tls *libc.TLS, zOld uintptr) {
 53574  }
 53575  
 53576  func quotaOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pConn uintptr, flags int32, pOutFlags uintptr) int32 {
 53577  	var rc int32
 53578  	var pQuotaOpen uintptr
 53579  	var pFile uintptr
 53580  	var pGroup uintptr
 53581  	var pSubOpen uintptr
 53582  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 53583  
 53584  	if flags&(SQLITE_OPEN_MAIN_DB|SQLITE_OPEN_WAL) == 0 {
 53585  		return (*struct {
 53586  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53587  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 53588  	}
 53589  
 53590  	quotaEnter(tls)
 53591  	pGroup = quotaGroupFind(tls, zName)
 53592  	if pGroup == uintptr(0) {
 53593  		rc = (*struct {
 53594  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53595  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pConn, flags, pOutFlags)
 53596  	} else {
 53597  		pQuotaOpen = pConn
 53598  		pSubOpen = quotaSubOpen(tls, pConn)
 53599  		rc = (*struct {
 53600  			f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53601  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxOpen})).f(tls, pOrigVfs, zName, pSubOpen, flags, pOutFlags)
 53602  		if rc == SQLITE_OK {
 53603  			pFile = quotaFindFile(tls, pGroup, zName, 1)
 53604  			if pFile == uintptr(0) {
 53605  				quotaLeave(tls)
 53606  				(*struct {
 53607  					f func(*libc.TLS, uintptr) int32
 53608  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 53609  				return SQLITE_NOMEM
 53610  			}
 53611  			(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = libc.Bool32(flags&SQLITE_OPEN_DELETEONCLOSE != 0)
 53612  			(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 53613  			(*quotaConn)(unsafe.Pointer(pQuotaOpen)).FpFile = pFile
 53614  			if (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FiVersion == 1 {
 53615  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 176
 53616  			} else {
 53617  				(*quotaConn)(unsafe.Pointer(pQuotaOpen)).Fbase.FpMethods = uintptr(unsafe.Pointer(&gQuota)) + 328
 53618  			}
 53619  		}
 53620  	}
 53621  	quotaLeave(tls)
 53622  	return rc
 53623  }
 53624  
 53625  func quotaDelete(tls *libc.TLS, pVfs uintptr, zName uintptr, syncDir int32) int32 {
 53626  	var rc int32
 53627  	var pFile uintptr
 53628  	var pGroup uintptr
 53629  	var pOrigVfs uintptr = gQuota.FpOrigVfs
 53630  
 53631  	rc = (*struct {
 53632  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53633  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs)).FxDelete})).f(tls, pOrigVfs, zName, syncDir)
 53634  
 53635  	if rc == SQLITE_OK {
 53636  		quotaEnter(tls)
 53637  		pGroup = quotaGroupFind(tls, zName)
 53638  		if pGroup != 0 {
 53639  			pFile = quotaFindFile(tls, pGroup, zName, 0)
 53640  			if pFile != 0 {
 53641  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 53642  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 53643  				} else {
 53644  					quotaRemoveFile(tls, pFile)
 53645  					quotaGroupDeref(tls, pGroup)
 53646  				}
 53647  			}
 53648  		}
 53649  		quotaLeave(tls)
 53650  	}
 53651  	return rc
 53652  }
 53653  
 53654  func quotaClose(tls *libc.TLS, pConn uintptr) int32 {
 53655  	var p uintptr = pConn
 53656  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53657  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53658  	var rc int32
 53659  	rc = (*struct {
 53660  		f func(*libc.TLS, uintptr) int32
 53661  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxClose})).f(tls, pSubOpen)
 53662  	quotaEnter(tls)
 53663  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 53664  	if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 53665  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53666  		if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 53667  			(*struct {
 53668  				f func(*libc.TLS, uintptr, uintptr, int32) int32
 53669  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 53670  			quotaRemoveFile(tls, pFile)
 53671  		}
 53672  		quotaGroupDeref(tls, pGroup)
 53673  	}
 53674  	quotaLeave(tls)
 53675  	return rc
 53676  }
 53677  
 53678  func quotaRead(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53679  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53680  	return (*struct {
 53681  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53682  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxRead})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53683  }
 53684  
 53685  func quotaWrite(tls *libc.TLS, pConn uintptr, pBuf uintptr, iAmt int32, iOfst sqlite3_int64) int32 {
 53686  	var p uintptr = pConn
 53687  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53688  	var iEnd sqlite3_int64 = iOfst + sqlite3_int64(iAmt)
 53689  	var pGroup uintptr
 53690  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53691  	var szNew sqlite3_int64
 53692  
 53693  	if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 53694  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53695  		quotaEnter(tls)
 53696  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 53697  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 53698  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 53699  				(*struct {
 53700  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 53701  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 53702  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53703  			}
 53704  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 53705  				quotaLeave(tls)
 53706  				return SQLITE_FULL
 53707  			}
 53708  		}
 53709  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 53710  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 53711  		quotaLeave(tls)
 53712  	}
 53713  	return (*struct {
 53714  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53715  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxWrite})).f(tls, pSubOpen, pBuf, iAmt, iOfst)
 53716  }
 53717  
 53718  func quotaTruncate(tls *libc.TLS, pConn uintptr, size sqlite3_int64) int32 {
 53719  	var p uintptr = pConn
 53720  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53721  	var rc int32 = (*struct {
 53722  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53723  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxTruncate})).f(tls, pSubOpen, size)
 53724  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53725  	var pGroup uintptr
 53726  	if rc == SQLITE_OK {
 53727  		quotaEnter(tls)
 53728  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53729  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53730  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = size
 53731  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += size
 53732  		quotaLeave(tls)
 53733  	}
 53734  	return rc
 53735  }
 53736  
 53737  func quotaSync(tls *libc.TLS, pConn uintptr, flags int32) int32 {
 53738  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53739  	return (*struct {
 53740  		f func(*libc.TLS, uintptr, int32) int32
 53741  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSync})).f(tls, pSubOpen, flags)
 53742  }
 53743  
 53744  func quotaFileSize(tls *libc.TLS, pConn uintptr, pSize uintptr) int32 {
 53745  	bp := tls.Alloc(8)
 53746  	defer tls.Free(8)
 53747  
 53748  	var p uintptr = pConn
 53749  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53750  	var pFile uintptr = (*quotaConn)(unsafe.Pointer(p)).FpFile
 53751  	var pGroup uintptr
 53752  
 53753  	var rc int32
 53754  
 53755  	rc = (*struct {
 53756  		f func(*libc.TLS, uintptr, uintptr) int32
 53757  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileSize})).f(tls, pSubOpen, bp)
 53758  	if rc == SQLITE_OK {
 53759  		quotaEnter(tls)
 53760  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 53761  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) -= (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 53762  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = *(*sqlite3_int64)(unsafe.Pointer(bp))
 53763  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += *(*sqlite3_int64)(unsafe.Pointer(bp))
 53764  		quotaLeave(tls)
 53765  		*(*sqlite3_int64)(unsafe.Pointer(pSize)) = *(*sqlite3_int64)(unsafe.Pointer(bp))
 53766  	}
 53767  	return rc
 53768  }
 53769  
 53770  func quotaLock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53771  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53772  	return (*struct {
 53773  		f func(*libc.TLS, uintptr, int32) int32
 53774  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxLock})).f(tls, pSubOpen, lock)
 53775  }
 53776  
 53777  func quotaUnlock(tls *libc.TLS, pConn uintptr, lock int32) int32 {
 53778  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53779  	return (*struct {
 53780  		f func(*libc.TLS, uintptr, int32) int32
 53781  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxUnlock})).f(tls, pSubOpen, lock)
 53782  }
 53783  
 53784  func quotaCheckReservedLock(tls *libc.TLS, pConn uintptr, pResOut uintptr) int32 {
 53785  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53786  	return (*struct {
 53787  		f func(*libc.TLS, uintptr, uintptr) int32
 53788  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxCheckReservedLock})).f(tls, pSubOpen, pResOut)
 53789  }
 53790  
 53791  func quotaFileControl(tls *libc.TLS, pConn uintptr, op int32, pArg uintptr) int32 {
 53792  	bp := tls.Alloc(8)
 53793  	defer tls.Free(8)
 53794  
 53795  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53796  	var rc int32 = (*struct {
 53797  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53798  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxFileControl})).f(tls, pSubOpen, op, pArg)
 53799  	if op == SQLITE_FCNTL_VFSNAME && rc == SQLITE_OK {
 53800  		*(*uintptr)(unsafe.Pointer(pArg)) = sqlite3.Xsqlite3_mprintf(tls, ts+35913, libc.VaList(bp, *(*uintptr)(unsafe.Pointer(pArg))))
 53801  	}
 53802  	return rc
 53803  }
 53804  
 53805  func quotaSectorSize(tls *libc.TLS, pConn uintptr) int32 {
 53806  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53807  	return (*struct {
 53808  		f func(*libc.TLS, uintptr) int32
 53809  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxSectorSize})).f(tls, pSubOpen)
 53810  }
 53811  
 53812  func quotaDeviceCharacteristics(tls *libc.TLS, pConn uintptr) int32 {
 53813  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53814  	return (*struct {
 53815  		f func(*libc.TLS, uintptr) int32
 53816  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxDeviceCharacteristics})).f(tls, pSubOpen)
 53817  }
 53818  
 53819  func quotaShmMap(tls *libc.TLS, pConn uintptr, iRegion int32, szRegion int32, bExtend int32, pp uintptr) int32 {
 53820  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53821  	return (*struct {
 53822  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53823  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmMap})).f(tls, pSubOpen, iRegion, szRegion, bExtend, pp)
 53824  }
 53825  
 53826  func quotaShmLock(tls *libc.TLS, pConn uintptr, ofst int32, n int32, flags int32) int32 {
 53827  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53828  	return (*struct {
 53829  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53830  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmLock})).f(tls, pSubOpen, ofst, n, flags)
 53831  }
 53832  
 53833  func quotaShmBarrier(tls *libc.TLS, pConn uintptr) {
 53834  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53835  	(*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)
 53836  }
 53837  
 53838  func quotaShmUnmap(tls *libc.TLS, pConn uintptr, deleteFlag int32) int32 {
 53839  	var pSubOpen uintptr = quotaSubOpen(tls, pConn)
 53840  	return (*struct {
 53841  		f func(*libc.TLS, uintptr, int32) int32
 53842  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pSubOpen)).FpMethods)).FxShmUnmap})).f(tls, pSubOpen, deleteFlag)
 53843  }
 53844  
 53845  func sqlite3_quota_initialize(tls *libc.TLS, zOrigVfsName uintptr, makeDefault int32) int32 {
 53846  	var pOrigVfs uintptr
 53847  	if gQuota.FisInitialized != 0 {
 53848  		return SQLITE_MISUSE
 53849  	}
 53850  	pOrigVfs = sqlite3.Xsqlite3_vfs_find(tls, zOrigVfsName)
 53851  	if pOrigVfs == uintptr(0) {
 53852  		return SQLITE_ERROR
 53853  	}
 53854  
 53855  	gQuota.FpMutex = sqlite3.Xsqlite3_mutex_alloc(tls, SQLITE_MUTEX_FAST)
 53856  	if !(int32(gQuota.FpMutex) != 0) {
 53857  		return SQLITE_NOMEM
 53858  	}
 53859  	gQuota.FisInitialized = 1
 53860  	gQuota.FpOrigVfs = pOrigVfs
 53861  	gQuota.FsThisVfs = *(*sqlite3_vfs)(unsafe.Pointer(pOrigVfs))
 53862  	gQuota.FsThisVfs.FxOpen = *(*uintptr)(unsafe.Pointer(&struct {
 53863  		f func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32
 53864  	}{quotaOpen}))
 53865  	gQuota.FsThisVfs.FxDelete = *(*uintptr)(unsafe.Pointer(&struct {
 53866  		f func(*libc.TLS, uintptr, uintptr, int32) int32
 53867  	}{quotaDelete}))
 53868  	*(*int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&gQuota)) + 8 + 4)) += int32(uint64(unsafe.Sizeof(quotaConn{})))
 53869  	gQuota.FsThisVfs.FzName = ts + 35922
 53870  	gQuota.FsIoMethodsV1.FiVersion = 1
 53871  	gQuota.FsIoMethodsV1.FxClose = *(*uintptr)(unsafe.Pointer(&struct {
 53872  		f func(*libc.TLS, uintptr) int32
 53873  	}{quotaClose}))
 53874  	gQuota.FsIoMethodsV1.FxRead = *(*uintptr)(unsafe.Pointer(&struct {
 53875  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53876  	}{quotaRead}))
 53877  	gQuota.FsIoMethodsV1.FxWrite = *(*uintptr)(unsafe.Pointer(&struct {
 53878  		f func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32
 53879  	}{quotaWrite}))
 53880  	gQuota.FsIoMethodsV1.FxTruncate = *(*uintptr)(unsafe.Pointer(&struct {
 53881  		f func(*libc.TLS, uintptr, sqlite3_int64) int32
 53882  	}{quotaTruncate}))
 53883  	gQuota.FsIoMethodsV1.FxSync = *(*uintptr)(unsafe.Pointer(&struct {
 53884  		f func(*libc.TLS, uintptr, int32) int32
 53885  	}{quotaSync}))
 53886  	gQuota.FsIoMethodsV1.FxFileSize = *(*uintptr)(unsafe.Pointer(&struct {
 53887  		f func(*libc.TLS, uintptr, uintptr) int32
 53888  	}{quotaFileSize}))
 53889  	gQuota.FsIoMethodsV1.FxLock = *(*uintptr)(unsafe.Pointer(&struct {
 53890  		f func(*libc.TLS, uintptr, int32) int32
 53891  	}{quotaLock}))
 53892  	gQuota.FsIoMethodsV1.FxUnlock = *(*uintptr)(unsafe.Pointer(&struct {
 53893  		f func(*libc.TLS, uintptr, int32) int32
 53894  	}{quotaUnlock}))
 53895  	gQuota.FsIoMethodsV1.FxCheckReservedLock = *(*uintptr)(unsafe.Pointer(&struct {
 53896  		f func(*libc.TLS, uintptr, uintptr) int32
 53897  	}{quotaCheckReservedLock}))
 53898  	gQuota.FsIoMethodsV1.FxFileControl = *(*uintptr)(unsafe.Pointer(&struct {
 53899  		f func(*libc.TLS, uintptr, int32, uintptr) int32
 53900  	}{quotaFileControl}))
 53901  	gQuota.FsIoMethodsV1.FxSectorSize = *(*uintptr)(unsafe.Pointer(&struct {
 53902  		f func(*libc.TLS, uintptr) int32
 53903  	}{quotaSectorSize}))
 53904  	gQuota.FsIoMethodsV1.FxDeviceCharacteristics = *(*uintptr)(unsafe.Pointer(&struct {
 53905  		f func(*libc.TLS, uintptr) int32
 53906  	}{quotaDeviceCharacteristics}))
 53907  	gQuota.FsIoMethodsV2 = gQuota.FsIoMethodsV1
 53908  	gQuota.FsIoMethodsV2.FiVersion = 2
 53909  	gQuota.FsIoMethodsV2.FxShmMap = *(*uintptr)(unsafe.Pointer(&struct {
 53910  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 53911  	}{quotaShmMap}))
 53912  	gQuota.FsIoMethodsV2.FxShmLock = *(*uintptr)(unsafe.Pointer(&struct {
 53913  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 53914  	}{quotaShmLock}))
 53915  	gQuota.FsIoMethodsV2.FxShmBarrier = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{quotaShmBarrier}))
 53916  	gQuota.FsIoMethodsV2.FxShmUnmap = *(*uintptr)(unsafe.Pointer(&struct {
 53917  		f func(*libc.TLS, uintptr, int32) int32
 53918  	}{quotaShmUnmap}))
 53919  	sqlite3.Xsqlite3_vfs_register(tls, uintptr(unsafe.Pointer(&gQuota))+8, makeDefault)
 53920  	return SQLITE_OK
 53921  }
 53922  
 53923  func sqlite3_quota_shutdown(tls *libc.TLS) int32 {
 53924  	var pGroup uintptr
 53925  	if gQuota.FisInitialized == 0 {
 53926  		return SQLITE_MISUSE
 53927  	}
 53928  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 53929  		if quotaGroupOpenFileCount(tls, pGroup) > 0 {
 53930  			return SQLITE_MISUSE
 53931  		}
 53932  	}
 53933  	for gQuota.FpGroup != 0 {
 53934  		pGroup = gQuota.FpGroup
 53935  		gQuota.FpGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53936  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = int64(0)
 53937  
 53938  		quotaGroupDeref(tls, pGroup)
 53939  	}
 53940  	gQuota.FisInitialized = 0
 53941  	sqlite3.Xsqlite3_mutex_free(tls, gQuota.FpMutex)
 53942  	sqlite3.Xsqlite3_vfs_unregister(tls, uintptr(unsafe.Pointer(&gQuota))+8)
 53943  	libc.Xmemset(tls, uintptr(unsafe.Pointer(&gQuota)), 0, uint64(unsafe.Sizeof(gQuota)))
 53944  	return SQLITE_OK
 53945  }
 53946  
 53947  func sqlite3_quota_set(tls *libc.TLS, zPattern uintptr, iLimit sqlite3_int64, xCallback uintptr, pArg uintptr, xDestroy uintptr) int32 {
 53948  	var pGroup uintptr
 53949  	quotaEnter(tls)
 53950  	pGroup = gQuota.FpGroup
 53951  	for pGroup != 0 && libc.Xstrcmp(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern) != 0 {
 53952  		pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext
 53953  	}
 53954  	if pGroup == uintptr(0) {
 53955  		var nPattern int32 = int32(libc.Xstrlen(tls, zPattern) & uint64(0x3fffffff))
 53956  		if iLimit <= int64(0) {
 53957  			quotaLeave(tls)
 53958  			return SQLITE_OK
 53959  		}
 53960  		pGroup = sqlite3.Xsqlite3_malloc(tls, int32(uint64(unsafe.Sizeof(quotaGroup{}))+uint64(nPattern)+uint64(1)))
 53961  		if pGroup == uintptr(0) {
 53962  			quotaLeave(tls)
 53963  			return SQLITE_NOMEM
 53964  		}
 53965  		libc.Xmemset(tls, pGroup, 0, uint64(unsafe.Sizeof(quotaGroup{})))
 53966  		(*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern = pGroup + 1*72
 53967  		libc.Xmemcpy(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, zPattern, uint64(nPattern+1))
 53968  		if gQuota.FpGroup != 0 {
 53969  			(*quotaGroup)(unsafe.Pointer(gQuota.FpGroup)).FppPrev = pGroup + 48
 53970  		}
 53971  		(*quotaGroup)(unsafe.Pointer(pGroup)).FpNext = gQuota.FpGroup
 53972  		(*quotaGroup)(unsafe.Pointer(pGroup)).FppPrev = uintptr(unsafe.Pointer(&gQuota)) + 496
 53973  		gQuota.FpGroup = pGroup
 53974  	}
 53975  	(*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit = iLimit
 53976  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback = xCallback
 53977  	if (*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy != 0 && (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg != pArg {
 53978  		(*struct{ f func(*libc.TLS, uintptr) })(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy})).f(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 53979  	}
 53980  	(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg = pArg
 53981  	(*quotaGroup)(unsafe.Pointer(pGroup)).FxDestroy = xDestroy
 53982  	quotaGroupDeref(tls, pGroup)
 53983  	quotaLeave(tls)
 53984  	return SQLITE_OK
 53985  }
 53986  
 53987  func sqlite3_quota_file(tls *libc.TLS, zFilename uintptr) int32 {
 53988  	bp := tls.Alloc(16)
 53989  	defer tls.Free(16)
 53990  
 53991  	var zFull uintptr = uintptr(0)
 53992  	var fd uintptr
 53993  	var rc int32
 53994  	*(*int32)(unsafe.Pointer(bp)) = 0
 53995  
 53996  	var nAlloc int32 = gQuota.FsThisVfs.FszOsFile + gQuota.FsThisVfs.FmxPathname + 2
 53997  
 53998  	fd = sqlite3.Xsqlite3_malloc(tls, nAlloc)
 53999  	if fd == uintptr(0) {
 54000  		rc = SQLITE_NOMEM
 54001  	} else {
 54002  		zFull = fd + uintptr(gQuota.FsThisVfs.FszOsFile)
 54003  		rc = (*struct {
 54004  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54005  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54006  			gQuota.FsThisVfs.FmxPathname+1, zFull)
 54007  	}
 54008  
 54009  	if rc == SQLITE_OK {
 54010  		*(*int8)(unsafe.Pointer(zFull + uintptr(libc.Xstrlen(tls, zFull)+uint64(1)))) = int8(0)
 54011  		rc = quotaOpen(tls, uintptr(unsafe.Pointer(&gQuota))+8, zFull, fd,
 54012  			SQLITE_OPEN_READONLY|SQLITE_OPEN_MAIN_DB, bp)
 54013  		if rc == SQLITE_OK {
 54014  			(*struct {
 54015  				f func(*libc.TLS, uintptr, uintptr) int32
 54016  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxFileSize})).f(tls, fd, bp+8)
 54017  			(*struct {
 54018  				f func(*libc.TLS, uintptr) int32
 54019  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxClose})).f(tls, fd)
 54020  		} else if rc == SQLITE_CANTOPEN {
 54021  			var pGroup uintptr
 54022  			var pFile uintptr
 54023  			quotaEnter(tls)
 54024  			pGroup = quotaGroupFind(tls, zFull)
 54025  			if pGroup != 0 {
 54026  				pFile = quotaFindFile(tls, pGroup, zFull, 0)
 54027  				if pFile != 0 {
 54028  					quotaRemoveFile(tls, pFile)
 54029  				}
 54030  			}
 54031  			quotaLeave(tls)
 54032  		}
 54033  	}
 54034  
 54035  	sqlite3.Xsqlite3_free(tls, fd)
 54036  	return rc
 54037  }
 54038  
 54039  func sqlite3_quota_fopen(tls *libc.TLS, zFilename uintptr, zMode uintptr) uintptr {
 54040  	var p uintptr
 54041  	var zFull uintptr
 54042  	var zFullTranslated uintptr
 54043  	var rc int32
 54044  	var pGroup uintptr
 54045  	var pFile uintptr
 54046  	p = uintptr(0)
 54047  	zFull = uintptr(0)
 54048  	zFullTranslated = uintptr(0)
 54049  
 54050  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54051  	if !(zFull == uintptr(0)) {
 54052  		goto __1
 54053  	}
 54054  	return uintptr(0)
 54055  __1:
 54056  	;
 54057  	rc = (*struct {
 54058  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54059  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54060  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54061  	if !(rc != 0) {
 54062  		goto __2
 54063  	}
 54064  	goto quota_fopen_error
 54065  __2:
 54066  	;
 54067  	p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(quota_FILE{})))
 54068  	if !(p == uintptr(0)) {
 54069  		goto __3
 54070  	}
 54071  	goto quota_fopen_error
 54072  __3:
 54073  	;
 54074  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(quota_FILE{})))
 54075  	zFullTranslated = quota_utf8_to_mbcs(tls, zFull)
 54076  	if !(zFullTranslated == uintptr(0)) {
 54077  		goto __4
 54078  	}
 54079  	goto quota_fopen_error
 54080  __4:
 54081  	;
 54082  	(*quota_FILE)(unsafe.Pointer(p)).Ff = libc.Xfopen(tls, zFullTranslated, zMode)
 54083  	if !((*quota_FILE)(unsafe.Pointer(p)).Ff == uintptr(0)) {
 54084  		goto __5
 54085  	}
 54086  	goto quota_fopen_error
 54087  __5:
 54088  	;
 54089  	quotaEnter(tls)
 54090  	pGroup = quotaGroupFind(tls, zFull)
 54091  	if !(pGroup != 0) {
 54092  		goto __6
 54093  	}
 54094  	pFile = quotaFindFile(tls, pGroup, zFull, 1)
 54095  	if !(pFile == uintptr(0)) {
 54096  		goto __7
 54097  	}
 54098  	quotaLeave(tls)
 54099  	goto quota_fopen_error
 54100  __7:
 54101  	;
 54102  	(*quotaFile)(unsafe.Pointer(pFile)).FnRef++
 54103  	(*quota_FILE)(unsafe.Pointer(p)).FpFile = pFile
 54104  __6:
 54105  	;
 54106  	quotaLeave(tls)
 54107  	sqlite3.Xsqlite3_free(tls, zFull)
 54108  	return p
 54109  
 54110  quota_fopen_error:
 54111  	quota_mbcs_free(tls, zFullTranslated)
 54112  	sqlite3.Xsqlite3_free(tls, zFull)
 54113  	if !(p != 0 && (*quota_FILE)(unsafe.Pointer(p)).Ff != 0) {
 54114  		goto __8
 54115  	}
 54116  	libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54117  __8:
 54118  	;
 54119  	sqlite3.Xsqlite3_free(tls, p)
 54120  	return uintptr(0)
 54121  }
 54122  
 54123  func sqlite3_quota_fread(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54124  	return libc.Xfread(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54125  }
 54126  
 54127  func sqlite3_quota_fwrite(tls *libc.TLS, pBuf uintptr, size size_t, nmemb size_t, p uintptr) size_t {
 54128  	var iOfst sqlite3_int64
 54129  	var iEnd sqlite3_int64
 54130  	var szNew sqlite3_int64
 54131  	var pFile uintptr
 54132  	var rc size_t
 54133  
 54134  	iOfst = libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54135  	iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54136  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54137  	if pFile != 0 && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < iEnd {
 54138  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54139  		quotaEnter(tls)
 54140  		szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54141  		if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54142  			if (*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback != 0 {
 54143  				(*struct {
 54144  					f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54145  				})(unsafe.Pointer(&struct{ uintptr }{(*quotaGroup)(unsafe.Pointer(pGroup)).FxCallback})).f(tls, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, pGroup+8, szNew,
 54146  					(*quotaGroup)(unsafe.Pointer(pGroup)).FpArg)
 54147  			}
 54148  			if szNew > (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit && (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit > int64(0) {
 54149  				iEnd = (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit - (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize + (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54150  				nmemb = uint64(iEnd-iOfst) / size
 54151  				iEnd = sqlite3_int64(uint64(iOfst) + size*nmemb)
 54152  				szNew = (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize - (*quotaFile)(unsafe.Pointer(pFile)).FiSize + iEnd
 54153  			}
 54154  		}
 54155  		(*quotaGroup)(unsafe.Pointer(pGroup)).FiSize = szNew
 54156  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iEnd
 54157  		quotaLeave(tls)
 54158  	} else {
 54159  		pFile = uintptr(0)
 54160  	}
 54161  	rc = libc.Xfwrite(tls, pBuf, size, nmemb, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54162  
 54163  	if rc < nmemb && pFile != 0 {
 54164  		var nWritten size_t = rc
 54165  		var iNewEnd sqlite3_int64 = sqlite3_int64(uint64(iOfst) + size*nWritten)
 54166  		if iNewEnd < iEnd {
 54167  			iNewEnd = iEnd
 54168  		}
 54169  		quotaEnter(tls)
 54170  		*(*sqlite3_int64)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FpGroup + 16)) += iNewEnd - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54171  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = iNewEnd
 54172  		quotaLeave(tls)
 54173  	}
 54174  	return rc
 54175  }
 54176  
 54177  func sqlite3_quota_fclose(tls *libc.TLS, p uintptr) int32 {
 54178  	var rc int32
 54179  	var pFile uintptr
 54180  	rc = libc.Xfclose(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54181  	pFile = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54182  	if pFile != 0 {
 54183  		quotaEnter(tls)
 54184  		(*quotaFile)(unsafe.Pointer(pFile)).FnRef--
 54185  		if (*quotaFile)(unsafe.Pointer(pFile)).FnRef == 0 {
 54186  			var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54187  			if (*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose != 0 {
 54188  				(*struct {
 54189  					f func(*libc.TLS, uintptr, uintptr, int32) int32
 54190  				})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxDelete})).f(tls, gQuota.FpOrigVfs, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, 0)
 54191  				quotaRemoveFile(tls, pFile)
 54192  			}
 54193  			quotaGroupDeref(tls, pGroup)
 54194  		}
 54195  		quotaLeave(tls)
 54196  	}
 54197  	sqlite3.Xsqlite3_free(tls, p)
 54198  	return rc
 54199  }
 54200  
 54201  func sqlite3_quota_fflush(tls *libc.TLS, p uintptr, doFsync int32) int32 {
 54202  	var rc int32
 54203  	rc = libc.Xfflush(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54204  	if rc == 0 && doFsync != 0 {
 54205  		rc = libc.Xfsync(tls, func() int32 {
 54206  			if !(libc.X__isthreaded != 0) {
 54207  				return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54208  			}
 54209  			return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54210  		}())
 54211  	}
 54212  	return libc.Bool32(rc != 0)
 54213  }
 54214  
 54215  func sqlite3_quota_fseek(tls *libc.TLS, p uintptr, offset int64, whence int32) int32 {
 54216  	return libc.Xfseek(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff, offset, whence)
 54217  }
 54218  
 54219  func sqlite3_quota_rewind(tls *libc.TLS, p uintptr) {
 54220  	libc.Xrewind(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54221  }
 54222  
 54223  func sqlite3_quota_ftell(tls *libc.TLS, p uintptr) int64 {
 54224  	return libc.Xftell(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54225  }
 54226  
 54227  func sqlite3_quota_ferror(tls *libc.TLS, p uintptr) int32 {
 54228  	return func() int32 {
 54229  		if !(libc.X__isthreaded != 0) {
 54230  			return libc.Bool32(int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_flags)&0x0040 != 0)
 54231  		}
 54232  		return libc.Xferror(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54233  	}()
 54234  }
 54235  
 54236  func sqlite3_quota_ftruncate(tls *libc.TLS, p uintptr, szNew sqlite3_int64) int32 {
 54237  	var pFile uintptr = (*quota_FILE)(unsafe.Pointer(p)).FpFile
 54238  	var rc int32
 54239  	if libc.AssignUintptr(&pFile, (*quota_FILE)(unsafe.Pointer(p)).FpFile) != uintptr(0) && (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54240  		var pGroup uintptr
 54241  		if (*quotaFile)(unsafe.Pointer(pFile)).FiSize < szNew {
 54242  			return -1
 54243  		}
 54244  		pGroup = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54245  		quotaEnter(tls)
 54246  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54247  		quotaLeave(tls)
 54248  	}
 54249  	rc = libc.Xftruncate(tls, func() int32 {
 54250  		if !(libc.X__isthreaded != 0) {
 54251  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54252  		}
 54253  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54254  	}(), szNew)
 54255  	if pFile != 0 && rc == 0 {
 54256  		var pGroup uintptr = (*quotaFile)(unsafe.Pointer(pFile)).FpGroup
 54257  		quotaEnter(tls)
 54258  		*(*sqlite3_int64)(unsafe.Pointer(pGroup + 16)) += szNew - (*quotaFile)(unsafe.Pointer(pFile)).FiSize
 54259  		(*quotaFile)(unsafe.Pointer(pFile)).FiSize = szNew
 54260  		quotaLeave(tls)
 54261  	}
 54262  	return rc
 54263  }
 54264  
 54265  func sqlite3_quota_file_mtime(tls *libc.TLS, p uintptr, pTime uintptr) int32 {
 54266  	bp := tls.Alloc(128)
 54267  	defer tls.Free(128)
 54268  
 54269  	var rc int32
 54270  
 54271  	rc = libc.Xfstat(tls, func() int32 {
 54272  		if !(libc.X__isthreaded != 0) {
 54273  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54274  		}
 54275  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54276  	}(), bp)
 54277  	if rc == 0 {
 54278  		*(*time_t)(unsafe.Pointer(pTime)) = (*stat)(unsafe.Pointer(bp)).Fst_mtim.Ftv_sec
 54279  	}
 54280  	return rc
 54281  }
 54282  
 54283  func sqlite3_quota_file_truesize(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54284  	bp := tls.Alloc(128)
 54285  	defer tls.Free(128)
 54286  
 54287  	var rc int32
 54288  
 54289  	rc = libc.Xfstat(tls, func() int32 {
 54290  		if !(libc.X__isthreaded != 0) {
 54291  			return int32((*FILE)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).Ff)).F_file)
 54292  		}
 54293  		return libc.Xfileno(tls, (*quota_FILE)(unsafe.Pointer(p)).Ff)
 54294  	}(), bp)
 54295  	if rc == 0 {
 54296  		return (*stat)(unsafe.Pointer(bp)).Fst_size
 54297  	}
 54298  	return int64(-1)
 54299  }
 54300  
 54301  func sqlite3_quota_file_size(tls *libc.TLS, p uintptr) sqlite3_int64 {
 54302  	if (*quota_FILE)(unsafe.Pointer(p)).FpFile != 0 {
 54303  		return (*quotaFile)(unsafe.Pointer((*quota_FILE)(unsafe.Pointer(p)).FpFile)).FiSize
 54304  	}
 54305  	return int64(-1)
 54306  }
 54307  
 54308  func sqlite3_quota_file_available(tls *libc.TLS, p uintptr) int64 {
 54309  	var f uintptr = (*quota_FILE)(unsafe.Pointer(p)).Ff
 54310  	var pos1 int64
 54311  	var pos2 int64
 54312  	var rc int32
 54313  	pos1 = libc.Xftell(tls, f)
 54314  	if pos1 < int64(0) {
 54315  		return int64(-1)
 54316  	}
 54317  	rc = libc.Xfseek(tls, f, int64(0), SEEK_END)
 54318  	if rc != 0 {
 54319  		return int64(-1)
 54320  	}
 54321  	pos2 = libc.Xftell(tls, f)
 54322  	if pos2 < int64(0) {
 54323  		return int64(-1)
 54324  	}
 54325  	rc = libc.Xfseek(tls, f, pos1, SEEK_SET)
 54326  	if rc != 0 {
 54327  		return int64(-1)
 54328  	}
 54329  	return pos2 - pos1
 54330  }
 54331  
 54332  func sqlite3_quota_remove(tls *libc.TLS, zFilename uintptr) int32 {
 54333  	var zFull uintptr
 54334  	var nFull size_t
 54335  	var rc int32
 54336  	var pGroup uintptr
 54337  	var pFile uintptr
 54338  	var pNextFile uintptr
 54339  	var diff int32
 54340  	var c int8
 54341  
 54342  	zFull = sqlite3.Xsqlite3_malloc(tls, gQuota.FsThisVfs.FmxPathname+1)
 54343  	if zFull == uintptr(0) {
 54344  		return SQLITE_NOMEM
 54345  	}
 54346  	rc = (*struct {
 54347  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 54348  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(gQuota.FpOrigVfs)).FxFullPathname})).f(tls, gQuota.FpOrigVfs, zFilename,
 54349  		gQuota.FsThisVfs.FmxPathname+1, zFull)
 54350  	if rc != 0 {
 54351  		sqlite3.Xsqlite3_free(tls, zFull)
 54352  		return rc
 54353  	}
 54354  
 54355  	nFull = libc.Xstrlen(tls, zFull)
 54356  	if nFull > uint64(0) && (int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '/' || int32(*(*int8)(unsafe.Pointer(zFull + uintptr(nFull-uint64(1))))) == '\\') {
 54357  		nFull--
 54358  		*(*int8)(unsafe.Pointer(zFull + uintptr(nFull))) = int8(0)
 54359  	}
 54360  
 54361  	quotaEnter(tls)
 54362  	pGroup = quotaGroupFind(tls, zFull)
 54363  	if pGroup != 0 {
 54364  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0 && rc == SQLITE_OK; pFile = pNextFile {
 54365  			pNextFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext
 54366  			diff = libc.Xstrncmp(tls, zFull, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename, nFull)
 54367  			if diff == 0 && (int32(libc.AssignInt8(&c, *(*int8)(unsafe.Pointer((*quotaFile)(unsafe.Pointer(pFile)).FzFilename + uintptr(nFull))))) == 0 || int32(c) == '/' || int32(c) == '\\') {
 54368  				if (*quotaFile)(unsafe.Pointer(pFile)).FnRef != 0 {
 54369  					(*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose = 1
 54370  				} else {
 54371  					rc = (*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  					quotaGroupDeref(tls, pGroup)
 54376  				}
 54377  			}
 54378  		}
 54379  	}
 54380  	quotaLeave(tls)
 54381  	sqlite3.Xsqlite3_free(tls, zFull)
 54382  	return rc
 54383  }
 54384  
 54385  type TclQuotaCallback1 = struct {
 54386  	Finterp  uintptr
 54387  	FpScript uintptr
 54388  }
 54389  
 54390  type TclQuotaCallback = TclQuotaCallback1
 54391  
 54392  func tclQuotaCallback(tls *libc.TLS, zFilename uintptr, piLimit uintptr, iSize sqlite3_int64, pArg uintptr) {
 54393  	bp := tls.Alloc(16)
 54394  	defer tls.Free(16)
 54395  
 54396  	var p uintptr
 54397  	var pEval uintptr
 54398  	var pVarname uintptr
 54399  
 54400  	var rc int32
 54401  
 54402  	p = pArg
 54403  	if p == uintptr(0) {
 54404  		return
 54405  	}
 54406  
 54407  	pVarname = tcl.XTcl_NewStringObj(tls, ts+35928, -1)
 54408  	(*Tcl_Obj)(unsafe.Pointer(pVarname)).FrefCount++
 54409  	sqlite3.Xsqlite3_randomness(tls, int32(unsafe.Sizeof(uint32(0))), bp)
 54410  	tcl.XTcl_AppendObjToObj(tls, pVarname, tcl.XTcl_NewIntObj(tls, int32(*(*uint32)(unsafe.Pointer(bp))&uint32(0x7FFFFFFF))))
 54411  	tcl.XTcl_ObjSetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), tcl.XTcl_NewWideIntObj(tls, *(*sqlite3_int64)(unsafe.Pointer(piLimit))), 0)
 54412  
 54413  	pEval = tcl.XTcl_DuplicateObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript)
 54414  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 54415  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewStringObj(tls, zFilename, -1))
 54416  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, pVarname)
 54417  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pEval, tcl.XTcl_NewWideIntObj(tls, iSize))
 54418  	rc = tcl.XTcl_EvalObjEx(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 54419  
 54420  	if rc == TCL_OK {
 54421  		var pLimit uintptr = tcl.XTcl_ObjGetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pVarname, uintptr(0), 0)
 54422  		rc = tcl.XTcl_GetWideIntFromObj(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, pLimit, bp+8)
 54423  		*(*sqlite3_int64)(unsafe.Pointer(piLimit)) = *(*Tcl_WideInt)(unsafe.Pointer(bp + 8))
 54424  		tcl.XTcl_UnsetVar2(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetString(tls, pVarname), uintptr(0), 0)
 54425  	}
 54426  
 54427  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54428  		var _objPtr uintptr = pEval
 54429  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54430  			tcl.XTclFreeObj(tls, _objPtr)
 54431  		}
 54432  	}
 54433  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 54434  		var _objPtr uintptr = pVarname
 54435  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54436  			tcl.XTclFreeObj(tls, _objPtr)
 54437  		}
 54438  	}
 54439  	if rc != TCL_OK {
 54440  		tcl.XTcl_BackgroundError(tls, (*TclQuotaCallback)(unsafe.Pointer(p)).Finterp)
 54441  	}
 54442  }
 54443  
 54444  func tclCallbackDestructor(tls *libc.TLS, pObj uintptr) {
 54445  	var p uintptr = pObj
 54446  	if p != 0 {
 54447  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 54448  			var _objPtr uintptr = (*TclQuotaCallback)(unsafe.Pointer(p)).FpScript
 54449  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 54450  				tcl.XTclFreeObj(tls, _objPtr)
 54451  			}
 54452  		}
 54453  		sqlite3.Xsqlite3_free(tls, p)
 54454  	}
 54455  }
 54456  
 54457  func test_quota_initialize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54458  	bp := tls.Alloc(4)
 54459  	defer tls.Free(4)
 54460  
 54461  	var zName uintptr
 54462  
 54463  	var rc int32
 54464  
 54465  	if objc != 3 {
 54466  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+34817)
 54467  		return TCL_ERROR
 54468  	}
 54469  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54470  	if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54471  		return TCL_ERROR
 54472  	}
 54473  	if int32(*(*int8)(unsafe.Pointer(zName))) == 0 {
 54474  		zName = uintptr(0)
 54475  	}
 54476  
 54477  	rc = sqlite3_quota_initialize(tls, zName, *(*int32)(unsafe.Pointer(bp)))
 54478  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54479  
 54480  	return TCL_OK
 54481  }
 54482  
 54483  func test_quota_shutdown(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54484  	var rc int32
 54485  
 54486  	if objc != 1 {
 54487  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 54488  		return TCL_ERROR
 54489  	}
 54490  
 54491  	rc = sqlite3_quota_shutdown(tls)
 54492  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54493  
 54494  	return TCL_OK
 54495  }
 54496  
 54497  func test_quota_set(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54498  	bp := tls.Alloc(12)
 54499  	defer tls.Free(12)
 54500  
 54501  	var zPattern uintptr
 54502  
 54503  	var pScript uintptr
 54504  	var rc int32
 54505  	var p uintptr
 54506  
 54507  	var xDestroy uintptr
 54508  	var xCallback uintptr
 54509  
 54510  	if objc != 4 {
 54511  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35939)
 54512  		return TCL_ERROR
 54513  	}
 54514  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54515  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54516  		return TCL_ERROR
 54517  	}
 54518  	pScript = *(*uintptr)(unsafe.Pointer(objv + 3*8))
 54519  	tcl.XTcl_GetStringFromObj(tls, pScript, bp+8)
 54520  
 54521  	if *(*int32)(unsafe.Pointer(bp + 8)) > 0 {
 54522  		p = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(TclQuotaCallback{})))
 54523  		if !(p != 0) {
 54524  			tcl.XTcl_SetResult(tls, interp, ts+32746, uintptr(0))
 54525  			return TCL_OK
 54526  		}
 54527  		libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(TclQuotaCallback{})))
 54528  		(*TclQuotaCallback)(unsafe.Pointer(p)).Finterp = interp
 54529  		(*Tcl_Obj)(unsafe.Pointer(pScript)).FrefCount++
 54530  		(*TclQuotaCallback)(unsafe.Pointer(p)).FpScript = pScript
 54531  		xDestroy = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{tclCallbackDestructor}))
 54532  		xCallback = *(*uintptr)(unsafe.Pointer(&struct {
 54533  			f func(*libc.TLS, uintptr, uintptr, sqlite3_int64, uintptr)
 54534  		}{tclQuotaCallback}))
 54535  	} else {
 54536  		p = uintptr(0)
 54537  		xDestroy = uintptr(0)
 54538  		xCallback = uintptr(0)
 54539  	}
 54540  
 54541  	rc = sqlite3_quota_set(tls, zPattern, *(*Tcl_WideInt)(unsafe.Pointer(bp)), xCallback, p, xDestroy)
 54542  
 54543  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54544  	return TCL_OK
 54545  }
 54546  
 54547  func test_quota_file(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54548  	var zFilename uintptr
 54549  	var rc int32
 54550  
 54551  	if objc != 2 {
 54552  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 54553  		return TCL_ERROR
 54554  	}
 54555  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54556  
 54557  	rc = sqlite3_quota_file(tls, zFilename)
 54558  
 54559  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 54560  	return TCL_OK
 54561  }
 54562  
 54563  func test_quota_dump(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54564  	bp := tls.Alloc(1008)
 54565  	defer tls.Free(1008)
 54566  
 54567  	var pResult uintptr
 54568  	var pGroupTerm uintptr
 54569  	var pFileTerm uintptr
 54570  	var pGroup uintptr
 54571  	var pFile uintptr
 54572  
 54573  	pResult = tcl.XTcl_NewObj(tls)
 54574  	quotaEnter(tls)
 54575  	for pGroup = gQuota.FpGroup; pGroup != 0; pGroup = (*quotaGroup)(unsafe.Pointer(pGroup)).FpNext {
 54576  		pGroupTerm = tcl.XTcl_NewObj(tls)
 54577  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54578  			tcl.XTcl_NewStringObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FzPattern, -1))
 54579  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54580  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiLimit))
 54581  		tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm,
 54582  			tcl.XTcl_NewWideIntObj(tls, (*quotaGroup)(unsafe.Pointer(pGroup)).FiSize))
 54583  		for pFile = (*quotaGroup)(unsafe.Pointer(pGroup)).FpFiles; pFile != 0; pFile = (*quotaFile)(unsafe.Pointer(pFile)).FpNext {
 54584  			var i int32
 54585  
 54586  			pFileTerm = tcl.XTcl_NewObj(tls)
 54587  			sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([1000]int8{})), bp+8, ts, libc.VaList(bp, (*quotaFile)(unsafe.Pointer(pFile)).FzFilename))
 54588  			for i = 0; *(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) != 0; i++ {
 54589  				if int32(*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i)))) == '\\' {
 54590  					*(*int8)(unsafe.Pointer(bp + 8 + uintptr(i))) = int8('/')
 54591  				}
 54592  			}
 54593  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54594  				tcl.XTcl_NewStringObj(tls, bp+8, -1))
 54595  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54596  				tcl.XTcl_NewWideIntObj(tls, (*quotaFile)(unsafe.Pointer(pFile)).FiSize))
 54597  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54598  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FnRef)))
 54599  			tcl.XTcl_ListObjAppendElement(tls, interp, pFileTerm,
 54600  				tcl.XTcl_NewWideIntObj(tls, int64((*quotaFile)(unsafe.Pointer(pFile)).FdeleteOnClose)))
 54601  			tcl.XTcl_ListObjAppendElement(tls, interp, pGroupTerm, pFileTerm)
 54602  		}
 54603  		tcl.XTcl_ListObjAppendElement(tls, interp, pResult, pGroupTerm)
 54604  	}
 54605  	quotaLeave(tls)
 54606  	tcl.XTcl_SetObjResult(tls, interp, pResult)
 54607  	return TCL_OK
 54608  }
 54609  
 54610  func test_quota_fopen(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54611  	bp := tls.Alloc(58)
 54612  	defer tls.Free(58)
 54613  
 54614  	var zFilename uintptr
 54615  	var zMode uintptr
 54616  	var p uintptr
 54617  
 54618  	if objc != 3 {
 54619  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35960)
 54620  		return TCL_ERROR
 54621  	}
 54622  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54623  	zMode = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54624  	p = sqlite3_quota_fopen(tls, zFilename, zMode)
 54625  	sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+8, ts+9889, libc.VaList(bp, p))
 54626  	tcl.XTcl_SetResult(tls, interp, bp+8, uintptr(1))
 54627  	return TCL_OK
 54628  }
 54629  
 54630  func test_quota_fread(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54631  	bp := tls.Alloc(8)
 54632  	defer tls.Free(8)
 54633  
 54634  	var p uintptr
 54635  	var zBuf uintptr
 54636  
 54637  	var got size_t
 54638  
 54639  	if objc != 4 {
 54640  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35974)
 54641  		return TCL_ERROR
 54642  	}
 54643  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54644  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54645  		return TCL_ERROR
 54646  	}
 54647  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 54648  		return TCL_ERROR
 54649  	}
 54650  	zBuf = sqlite3.Xsqlite3_malloc(tls, *(*int32)(unsafe.Pointer(bp))**(*int32)(unsafe.Pointer(bp + 4))+1)
 54651  	if zBuf == uintptr(0) {
 54652  		tcl.XTcl_SetResult(tls, interp, ts+2069, uintptr(0))
 54653  		return TCL_ERROR
 54654  	}
 54655  	got = sqlite3_quota_fread(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 54656  	*(*int8)(unsafe.Pointer(zBuf + uintptr(got*size_t(*(*int32)(unsafe.Pointer(bp)))))) = int8(0)
 54657  	tcl.XTcl_SetResult(tls, interp, zBuf, uintptr(1))
 54658  	sqlite3.Xsqlite3_free(tls, zBuf)
 54659  	return TCL_OK
 54660  }
 54661  
 54662  func test_quota_fwrite(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54663  	bp := tls.Alloc(8)
 54664  	defer tls.Free(8)
 54665  
 54666  	var p uintptr
 54667  	var zBuf uintptr
 54668  
 54669  	var got size_t
 54670  
 54671  	if objc != 5 {
 54672  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+35992)
 54673  		return TCL_ERROR
 54674  	}
 54675  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54676  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54677  		return TCL_ERROR
 54678  	}
 54679  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 54680  		return TCL_ERROR
 54681  	}
 54682  	zBuf = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 54683  	got = sqlite3_quota_fwrite(tls, zBuf, uint64(*(*int32)(unsafe.Pointer(bp))), uint64(*(*int32)(unsafe.Pointer(bp + 4))), p)
 54684  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, int64(got)))
 54685  	return TCL_OK
 54686  }
 54687  
 54688  func test_quota_fclose(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54689  	var p uintptr
 54690  	var rc int32
 54691  
 54692  	if objc != 2 {
 54693  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54694  		return TCL_ERROR
 54695  	}
 54696  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54697  	rc = sqlite3_quota_fclose(tls, p)
 54698  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54699  	return TCL_OK
 54700  }
 54701  
 54702  func test_quota_fflush(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54703  	bp := tls.Alloc(4)
 54704  	defer tls.Free(4)
 54705  
 54706  	var p uintptr
 54707  	var rc int32
 54708  	*(*int32)(unsafe.Pointer(bp)) = 0
 54709  
 54710  	if objc != 2 && objc != 3 {
 54711  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36018)
 54712  		return TCL_ERROR
 54713  	}
 54714  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54715  	if objc == 3 {
 54716  		if tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54717  			return TCL_ERROR
 54718  		}
 54719  	}
 54720  	rc = sqlite3_quota_fflush(tls, p, *(*int32)(unsafe.Pointer(bp)))
 54721  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54722  	return TCL_OK
 54723  }
 54724  
 54725  func test_quota_fseek(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54726  	bp := tls.Alloc(20)
 54727  	defer tls.Free(20)
 54728  
 54729  	var p uintptr
 54730  
 54731  	var zWhence uintptr
 54732  	var whence int32
 54733  	var rc int32
 54734  
 54735  	if objc != 4 {
 54736  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36036)
 54737  		return TCL_ERROR
 54738  	}
 54739  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54740  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 54741  		return TCL_ERROR
 54742  	}
 54743  	zWhence = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 54744  	if libc.Xstrcmp(tls, zWhence, ts+36057) == 0 {
 54745  		whence = SEEK_SET
 54746  	} else if libc.Xstrcmp(tls, zWhence, ts+36066) == 0 {
 54747  		whence = SEEK_CUR
 54748  	} else if libc.Xstrcmp(tls, zWhence, ts+36075) == 0 {
 54749  		whence = SEEK_END
 54750  	} else {
 54751  		tcl.XTcl_AppendResult(tls, interp,
 54752  			libc.VaList(bp, ts+36084, uintptr(0)))
 54753  		return TCL_ERROR
 54754  	}
 54755  	rc = sqlite3_quota_fseek(tls, p, int64(*(*int32)(unsafe.Pointer(bp + 16))), whence)
 54756  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54757  	return TCL_OK
 54758  }
 54759  
 54760  func test_quota_rewind(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54761  	var p uintptr
 54762  	if objc != 2 {
 54763  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54764  		return TCL_ERROR
 54765  	}
 54766  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54767  	sqlite3_quota_rewind(tls, p)
 54768  	return TCL_OK
 54769  }
 54770  
 54771  func test_quota_ftell(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54772  	var p uintptr
 54773  	var x sqlite3_int64
 54774  	if objc != 2 {
 54775  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54776  		return TCL_ERROR
 54777  	}
 54778  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54779  	x = sqlite3_quota_ftell(tls, p)
 54780  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54781  	return TCL_OK
 54782  }
 54783  
 54784  func test_quota_ftruncate(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54785  	bp := tls.Alloc(8)
 54786  	defer tls.Free(8)
 54787  
 54788  	var p uintptr
 54789  	var x sqlite3_int64
 54790  
 54791  	var rc int32
 54792  	if objc != 3 {
 54793  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36133)
 54794  		return TCL_ERROR
 54795  	}
 54796  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54797  	if tcl.XTcl_GetWideIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 {
 54798  		return TCL_ERROR
 54799  	}
 54800  	x = *(*Tcl_WideInt)(unsafe.Pointer(bp))
 54801  	rc = sqlite3_quota_ftruncate(tls, p, x)
 54802  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54803  	return TCL_OK
 54804  }
 54805  
 54806  func test_quota_file_size(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54807  	var p uintptr
 54808  	var x sqlite3_int64
 54809  	if objc != 2 {
 54810  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54811  		return TCL_ERROR
 54812  	}
 54813  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54814  	x = sqlite3_quota_file_size(tls, p)
 54815  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54816  	return TCL_OK
 54817  }
 54818  
 54819  func test_quota_file_truesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54820  	var p uintptr
 54821  	var x sqlite3_int64
 54822  	if objc != 2 {
 54823  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54824  		return TCL_ERROR
 54825  	}
 54826  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54827  	x = sqlite3_quota_file_truesize(tls, p)
 54828  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54829  	return TCL_OK
 54830  }
 54831  
 54832  func test_quota_file_mtime(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54833  	bp := tls.Alloc(8)
 54834  	defer tls.Free(8)
 54835  
 54836  	var p uintptr
 54837  
 54838  	if objc != 2 {
 54839  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54840  		return TCL_ERROR
 54841  	}
 54842  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54843  	*(*time_t)(unsafe.Pointer(bp)) = int64(0)
 54844  	sqlite3_quota_file_mtime(tls, p, bp)
 54845  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, *(*time_t)(unsafe.Pointer(bp))))
 54846  	return TCL_OK
 54847  }
 54848  
 54849  func test_quota_remove(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54850  	var zFilename uintptr
 54851  	var rc int32
 54852  	if objc != 2 {
 54853  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32930)
 54854  		return TCL_ERROR
 54855  	}
 54856  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54857  	rc = sqlite3_quota_remove(tls, zFilename)
 54858  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54859  	return TCL_OK
 54860  }
 54861  
 54862  func test_quota_glob(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54863  	var zPattern uintptr
 54864  	var zText uintptr
 54865  	var rc int32
 54866  	if objc != 3 {
 54867  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+36145)
 54868  		return TCL_ERROR
 54869  	}
 54870  	zPattern = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 54871  	zText = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 54872  	rc = quotaStrglob(tls, zPattern, zText)
 54873  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, rc))
 54874  	return TCL_OK
 54875  }
 54876  
 54877  func test_quota_file_available(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54878  	var p uintptr
 54879  	var x sqlite3_int64
 54880  	if objc != 2 {
 54881  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54882  		return TCL_ERROR
 54883  	}
 54884  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54885  	x = sqlite3_quota_file_available(tls, p)
 54886  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewWideIntObj(tls, x))
 54887  	return TCL_OK
 54888  }
 54889  
 54890  func test_quota_ferror(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 54891  	var p uintptr
 54892  	var x int32
 54893  	if objc != 2 {
 54894  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+28660)
 54895  		return TCL_ERROR
 54896  	}
 54897  	p = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 54898  	x = sqlite3_quota_ferror(tls, p)
 54899  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, x))
 54900  	return TCL_OK
 54901  }
 54902  
 54903  func Sqlitequota_Init(tls *libc.TLS, interp uintptr) int32 {
 54904  	var i int32
 54905  
 54906  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aCmd9))/uint64(unsafe.Sizeof(struct {
 54907  		FzName uintptr
 54908  		FxProc uintptr
 54909  	}{})); i++ {
 54910  		tcl.XTcl_CreateObjCommand(tls, interp, aCmd9[i].FzName, aCmd9[i].FxProc, uintptr(0), uintptr(0))
 54911  	}
 54912  
 54913  	return TCL_OK
 54914  }
 54915  
 54916  var aCmd9 = [21]struct {
 54917  	FzName uintptr
 54918  	FxProc uintptr
 54919  }{
 54920  	{FzName: ts + 36158, FxProc: 0},
 54921  	{FzName: ts + 36183, FxProc: 0},
 54922  	{FzName: ts + 36206, FxProc: 0},
 54923  	{FzName: ts + 36224, FxProc: 0},
 54924  	{FzName: ts + 36243, FxProc: 0},
 54925  	{FzName: ts + 36262, FxProc: 0},
 54926  	{FzName: ts + 36282, FxProc: 0},
 54927  	{FzName: ts + 36302, FxProc: 0},
 54928  	{FzName: ts + 36323, FxProc: 0},
 54929  	{FzName: ts + 36344, FxProc: 0},
 54930  	{FzName: ts + 36365, FxProc: 0},
 54931  	{FzName: ts + 36385, FxProc: 0},
 54932  	{FzName: ts + 36406, FxProc: 0},
 54933  	{FzName: ts + 36426, FxProc: 0},
 54934  	{FzName: ts + 36450, FxProc: 0},
 54935  	{FzName: ts + 36474, FxProc: 0},
 54936  	{FzName: ts + 36502, FxProc: 0},
 54937  	{FzName: ts + 36527, FxProc: 0},
 54938  	{FzName: ts + 36548, FxProc: 0},
 54939  	{FzName: ts + 36567, FxProc: 0},
 54940  	{FzName: ts + 36596, FxProc: 0},
 54941  }
 54942  
 54943  type Circle1 = struct {
 54944  	FaBox [2]struct {
 54945  		Fxmin float64
 54946  		Fxmax float64
 54947  		Fymin float64
 54948  		Fymax float64
 54949  	}
 54950  	Fcenterx     float64
 54951  	Fcentery     float64
 54952  	Fradius      float64
 54953  	FmxArea      float64
 54954  	FeScoreType  int32
 54955  	F__ccgo_pad1 [4]byte
 54956  }
 54957  
 54958  type Circle = Circle1
 54959  type Box = struct {
 54960  	Fxmin float64
 54961  	Fxmax float64
 54962  	Fymin float64
 54963  	Fymax float64
 54964  }
 54965  
 54966  func circle_del(tls *libc.TLS, p uintptr) {
 54967  	sqlite3.Xsqlite3_free(tls, p)
 54968  }
 54969  
 54970  func circle_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, pRes uintptr) int32 {
 54971  	var i int32
 54972  	var pCircle uintptr
 54973  	var xmin float64
 54974  	var xmax float64
 54975  	var ymin float64
 54976  	var ymax float64
 54977  
 54978  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord))
 54979  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8))
 54980  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8))
 54981  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8))
 54982  	pCircle = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 54983  	if pCircle == uintptr(0) {
 54984  		if nCoord != 4 {
 54985  			return SQLITE_ERROR
 54986  		}
 54987  
 54988  		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 {
 54989  			return SQLITE_ERROR
 54990  		}
 54991  
 54992  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 54993  		if !(pCircle != 0) {
 54994  			return SQLITE_NOMEM
 54995  		}
 54996  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 54997  
 54998  		(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 54999  		(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55000  		(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55001  
 55002  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55003  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55004  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55005  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55006  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55007  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55008  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55009  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55010  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = (xmax-xmin)*(ymax-ymin) + 1.0
 55011  	}
 55012  
 55013  	for i = 0; i < 4; i++ {
 55014  		var x float64
 55015  		if i&0x01 != 0 {
 55016  			x = xmax
 55017  		} else {
 55018  			x = xmin
 55019  		}
 55020  		var y float64
 55021  		if i&0x02 != 0 {
 55022  			y = ymax
 55023  		} else {
 55024  			y = ymin
 55025  		}
 55026  		var d2 float64
 55027  
 55028  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55029  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55030  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55031  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55032  			return SQLITE_OK
 55033  		}
 55034  	}
 55035  
 55036  	for i = 0; i < 2; i++ {
 55037  		if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55038  			xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55039  			ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55040  			ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55041  			*(*int32)(unsafe.Pointer(pRes)) = 1
 55042  			return SQLITE_OK
 55043  		}
 55044  	}
 55045  
 55046  	*(*int32)(unsafe.Pointer(pRes)) = 0
 55047  	return SQLITE_OK
 55048  }
 55049  
 55050  func circle_query_func(tls *libc.TLS, p uintptr) int32 {
 55051  	var i int32
 55052  	var pCircle uintptr
 55053  	var xmin float64
 55054  	var xmax float64
 55055  	var ymin float64
 55056  	var ymax float64
 55057  	var nWithin int32 = 0
 55058  
 55059  	xmin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55060  	xmax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55061  	ymin = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55062  	ymax = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55063  	pCircle = (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FpUser
 55064  	if pCircle == uintptr(0) {
 55065  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnCoord != 4 {
 55066  			return SQLITE_ERROR
 55067  		}
 55068  
 55069  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 && (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 1 {
 55070  			return SQLITE_ERROR
 55071  		}
 55072  
 55073  		pCircle = libc.AssignPtrUintptr(p+24, sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Circle{}))))
 55074  		if !(pCircle != 0) {
 55075  			return SQLITE_NOMEM
 55076  		}
 55077  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{circle_del}))
 55078  
 55079  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam == 4 {
 55080  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55081  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55082  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55083  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(*(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8)))
 55084  		} else {
 55085  			var z uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FapSqlParam)))
 55086  			(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = 0.0
 55087  			(*Circle)(unsafe.Pointer(pCircle)).Fcentery = 0.0
 55088  			(*Circle)(unsafe.Pointer(pCircle)).Fradius = 0.0
 55089  			(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = 0
 55090  			for z != 0 && *(*int8)(unsafe.Pointer(z)) != 0 {
 55091  				if int32(*(*int8)(unsafe.Pointer(z))) == 'r' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55092  					(*Circle)(unsafe.Pointer(pCircle)).Fradius = libc.Xatof(tls, z+2)
 55093  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'x' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55094  					(*Circle)(unsafe.Pointer(pCircle)).Fcenterx = libc.Xatof(tls, z+2)
 55095  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'y' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55096  					(*Circle)(unsafe.Pointer(pCircle)).Fcentery = libc.Xatof(tls, z+2)
 55097  				} else if int32(*(*int8)(unsafe.Pointer(z))) == 'e' && int32(*(*int8)(unsafe.Pointer(z + 1))) == ':' {
 55098  					(*Circle)(unsafe.Pointer(pCircle)).FeScoreType = libc.Int32FromFloat64(libc.Xatof(tls, z+2))
 55099  				} else if int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55100  					z++
 55101  					continue
 55102  				}
 55103  				for int32(*(*int8)(unsafe.Pointer(z))) != 0 && int32(*(*int8)(unsafe.Pointer(z))) != ' ' {
 55104  					z++
 55105  				}
 55106  				for int32(*(*int8)(unsafe.Pointer(z))) == ' ' {
 55107  					z++
 55108  				}
 55109  			}
 55110  		}
 55111  		if (*Circle)(unsafe.Pointer(pCircle)).Fradius < 0.0 {
 55112  			sqlite3.Xsqlite3_free(tls, pCircle)
 55113  			return SQLITE_NOMEM
 55114  		}
 55115  
 55116  		(*Box)(unsafe.Pointer(pCircle)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55117  		(*Box)(unsafe.Pointer(pCircle)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx
 55118  		(*Box)(unsafe.Pointer(pCircle)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55119  		(*Box)(unsafe.Pointer(pCircle)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55120  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmin = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx + (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55121  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fxmax = (*Circle)(unsafe.Pointer(pCircle)).Fcenterx - (*Circle)(unsafe.Pointer(pCircle)).Fradius
 55122  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymin = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55123  		(*Box)(unsafe.Pointer(pCircle + 1*32)).Fymax = (*Circle)(unsafe.Pointer(pCircle)).Fcentery
 55124  		(*Circle)(unsafe.Pointer(pCircle)).FmxArea = float64(200.0) * 200.0
 55125  	}
 55126  
 55127  	for i = 0; i < 4; i++ {
 55128  		var x float64
 55129  		if i&0x01 != 0 {
 55130  			x = xmax
 55131  		} else {
 55132  			x = xmin
 55133  		}
 55134  		var y float64
 55135  		if i&0x02 != 0 {
 55136  			y = ymax
 55137  		} else {
 55138  			y = ymin
 55139  		}
 55140  		var d2 float64
 55141  
 55142  		d2 = (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx) * (x - (*Circle)(unsafe.Pointer(pCircle)).Fcenterx)
 55143  		d2 = d2 + (y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)*(y-(*Circle)(unsafe.Pointer(pCircle)).Fcentery)
 55144  		if d2 < (*Circle)(unsafe.Pointer(pCircle)).Fradius*(*Circle)(unsafe.Pointer(pCircle)).Fradius {
 55145  			nWithin++
 55146  		}
 55147  	}
 55148  
 55149  	if nWithin == 0 {
 55150  		for i = 0; i < 2; i++ {
 55151  			if xmin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmin &&
 55152  				xmax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fxmax &&
 55153  				ymin <= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymin &&
 55154  				ymax >= (*Box)(unsafe.Pointer(pCircle+uintptr(i)*32)).Fymax {
 55155  				nWithin = 1
 55156  				break
 55157  			}
 55158  		}
 55159  	}
 55160  
 55161  	if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 1 {
 55162  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55163  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 2 {
 55164  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55165  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 3 {
 55166  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel == 1 {
 55167  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 1.0 - (xmax-xmin)*(ymax-ymin)/(*Circle)(unsafe.Pointer(pCircle)).FmxArea
 55168  			if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore < 0.01 {
 55169  				(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.01
 55170  			}
 55171  		} else {
 55172  			(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = 0.0
 55173  		}
 55174  	} else if (*Circle)(unsafe.Pointer(pCircle)).FeScoreType == 4 {
 55175  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55176  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55177  			nWithin = 0
 55178  		}
 55179  	} else {
 55180  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55181  		if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiRowid&int64(1) != 0 {
 55182  			nWithin = 0
 55183  		}
 55184  	}
 55185  	if nWithin == 0 {
 55186  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55187  	} else if nWithin >= 4 {
 55188  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55189  	} else {
 55190  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55191  	}
 55192  	return SQLITE_OK
 55193  }
 55194  
 55195  func bfs_query_func(tls *libc.TLS, p uintptr) int32 {
 55196  	var x0 float64
 55197  	var x1 float64
 55198  	var y0 float64
 55199  	var y1 float64
 55200  	var bx0 float64
 55201  	var bx1 float64
 55202  	var by0 float64
 55203  	var by1 float64
 55204  
 55205  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FnParam != 4 {
 55206  		return SQLITE_ERROR
 55207  	}
 55208  	x0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord))
 55209  	x1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 1*8))
 55210  	y0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 2*8))
 55211  	y1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaCoord + 3*8))
 55212  	bx0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam))
 55213  	bx1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 1*8))
 55214  	by0 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 2*8))
 55215  	by1 = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FaParam + 3*8))
 55216  	(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FrScore = sqlite3_rtree_dbl(100 - (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FiLevel)
 55217  	if (*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeParentWithin == FULLY_WITHIN {
 55218  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55219  	} else if x0 >= bx0 && x1 <= bx1 && y0 >= by0 && y1 <= by1 {
 55220  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = FULLY_WITHIN
 55221  	} else if x1 >= bx0 && x0 <= bx1 && y1 >= by0 && y0 <= by1 {
 55222  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = PARTLY_WITHIN
 55223  	} else {
 55224  		(*sqlite3_rtree_query_info)(unsafe.Pointer(p)).FeWithin = NOT_WITHIN
 55225  	}
 55226  	return SQLITE_OK
 55227  }
 55228  
 55229  type Cube1 = struct {
 55230  	Fx      float64
 55231  	Fy      float64
 55232  	Fz      float64
 55233  	Fwidth  float64
 55234  	Fheight float64
 55235  	Fdepth  float64
 55236  }
 55237  
 55238  type Cube = Cube1
 55239  
 55240  func cube_context_free(tls *libc.TLS, p uintptr) {
 55241  	sqlite3.Xsqlite3_free(tls, p)
 55242  }
 55243  
 55244  var gHere int32 = 42
 55245  
 55246  func cube_geom(tls *libc.TLS, p uintptr, nCoord int32, aCoord uintptr, piRes uintptr) int32 {
 55247  	var pCube uintptr = (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser
 55248  
 55249  	if pCube == uintptr(0) {
 55250  		if (*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FnParam != 6 || nCoord != 6 ||
 55251  			*(*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 {
 55252  			return SQLITE_ERROR
 55253  		}
 55254  		pCube = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Cube{})))
 55255  		if !(pCube != 0) {
 55256  			return SQLITE_NOMEM
 55257  		}
 55258  		(*Cube)(unsafe.Pointer(pCube)).Fx = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam))
 55259  		(*Cube)(unsafe.Pointer(pCube)).Fy = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 1*8))
 55260  		(*Cube)(unsafe.Pointer(pCube)).Fz = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 2*8))
 55261  		(*Cube)(unsafe.Pointer(pCube)).Fwidth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 3*8))
 55262  		(*Cube)(unsafe.Pointer(pCube)).Fheight = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 4*8))
 55263  		(*Cube)(unsafe.Pointer(pCube)).Fdepth = *(*sqlite3_rtree_dbl)(unsafe.Pointer((*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FaParam + 5*8))
 55264  
 55265  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FpUser = pCube
 55266  		(*sqlite3_rtree_geometry)(unsafe.Pointer(p)).FxDelUser = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{cube_context_free}))
 55267  	}
 55268  
 55269  	*(*int32)(unsafe.Pointer(piRes)) = 0
 55270  	if *(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord)) <= (*Cube)(unsafe.Pointer(pCube)).Fx+(*Cube)(unsafe.Pointer(pCube)).Fwidth &&
 55271  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 1*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fx &&
 55272  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 2*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fy+(*Cube)(unsafe.Pointer(pCube)).Fheight &&
 55273  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 3*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fy &&
 55274  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 4*8)) <= (*Cube)(unsafe.Pointer(pCube)).Fz+(*Cube)(unsafe.Pointer(pCube)).Fdepth &&
 55275  		*(*sqlite3_rtree_dbl)(unsafe.Pointer(aCoord + 5*8)) >= (*Cube)(unsafe.Pointer(pCube)).Fz {
 55276  		*(*int32)(unsafe.Pointer(piRes)) = 1
 55277  	}
 55278  
 55279  	return SQLITE_OK
 55280  }
 55281  
 55282  func register_cube_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55283  	bp := tls.Alloc(8)
 55284  	defer tls.Free(8)
 55285  
 55286  	var rc int32
 55287  
 55288  	if objc != 2 {
 55289  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55290  		return TCL_ERROR
 55291  	}
 55292  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55293  		return TCL_ERROR
 55294  	}
 55295  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36617, *(*uintptr)(unsafe.Pointer(&struct {
 55296  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55297  	}{cube_geom})), uintptr(unsafe.Pointer(&gHere)))
 55298  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55299  	return TCL_OK
 55300  }
 55301  
 55302  func register_circle_geom(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 55303  	bp := tls.Alloc(8)
 55304  	defer tls.Free(8)
 55305  
 55306  	var rc int32
 55307  
 55308  	if objc != 2 {
 55309  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55310  		return TCL_ERROR
 55311  	}
 55312  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55313  		return TCL_ERROR
 55314  	}
 55315  	rc = sqlite3.Xsqlite3_rtree_geometry_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36622, *(*uintptr)(unsafe.Pointer(&struct {
 55316  		f func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32
 55317  	}{circle_geom})), uintptr(0))
 55318  	if rc == SQLITE_OK {
 55319  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36629,
 55320  			*(*uintptr)(unsafe.Pointer(&struct {
 55321  				f func(*libc.TLS, uintptr) int32
 55322  			}{circle_query_func})), uintptr(0), uintptr(0))
 55323  	}
 55324  	if rc == SQLITE_OK {
 55325  		rc = sqlite3.Xsqlite3_rtree_query_callback(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+36637,
 55326  			*(*uintptr)(unsafe.Pointer(&struct {
 55327  				f func(*libc.TLS, uintptr) int32
 55328  			}{bfs_query_func})), uintptr(0), uintptr(0))
 55329  	}
 55330  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 55331  	return TCL_OK
 55332  }
 55333  
 55334  func Sqlitetestrtree_Init(tls *libc.TLS, interp uintptr) int32 {
 55335  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36656, *(*uintptr)(unsafe.Pointer(&struct {
 55336  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55337  	}{register_cube_geom})), uintptr(0), uintptr(0))
 55338  	tcl.XTcl_CreateObjCommand(tls, interp, ts+36675, *(*uintptr)(unsafe.Pointer(&struct {
 55339  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 55340  	}{register_circle_geom})), uintptr(0), uintptr(0))
 55341  	return TCL_OK
 55342  }
 55343  
 55344  type schema_vtab1 = struct {
 55345  	Fbase sqlite3_vtab
 55346  	Fdb   uintptr
 55347  }
 55348  
 55349  type schema_vtab = schema_vtab1
 55350  type schema_cursor1 = struct {
 55351  	Fbase        sqlite3_vtab_cursor
 55352  	FpDbList     uintptr
 55353  	FpTableList  uintptr
 55354  	FpColumnList uintptr
 55355  	Frowid       int32
 55356  	F__ccgo_pad1 [4]byte
 55357  }
 55358  
 55359  type schema_cursor = schema_cursor1
 55360  
 55361  func schemaDestroy(tls *libc.TLS, pVtab uintptr) int32 {
 55362  	sqlite3.Xsqlite3_free(tls, pVtab)
 55363  	return 0
 55364  }
 55365  
 55366  func schemaCreate(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 55367  	var rc int32 = SQLITE_NOMEM
 55368  	var pVtab uintptr = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_vtab{})))
 55369  	if pVtab != 0 {
 55370  		libc.Xmemset(tls, pVtab, 0, uint64(unsafe.Sizeof(schema_vtab{})))
 55371  		(*schema_vtab)(unsafe.Pointer(pVtab)).Fdb = db
 55372  		rc = sqlite3.Xsqlite3_declare_vtab(tls, db, ts+36696)
 55373  	}
 55374  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 55375  	return rc
 55376  }
 55377  
 55378  func schemaOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 55379  	var rc int32 = SQLITE_NOMEM
 55380  	var pCur uintptr
 55381  	pCur = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(schema_cursor{})))
 55382  	if pCur != 0 {
 55383  		libc.Xmemset(tls, pCur, 0, uint64(unsafe.Sizeof(schema_cursor{})))
 55384  		*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 55385  		rc = SQLITE_OK
 55386  	}
 55387  	return rc
 55388  }
 55389  
 55390  func schemaClose(tls *libc.TLS, cur uintptr) int32 {
 55391  	var pCur uintptr = cur
 55392  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)
 55393  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)
 55394  	sqlite3.Xsqlite3_finalize(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)
 55395  	sqlite3.Xsqlite3_free(tls, pCur)
 55396  	return SQLITE_OK
 55397  }
 55398  
 55399  func schemaColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 55400  	var pCur uintptr = cur
 55401  	switch i {
 55402  	case 0:
 55403  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1))
 55404  		break
 55405  	case 1:
 55406  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0))
 55407  		break
 55408  	default:
 55409  		sqlite3.Xsqlite3_result_value(tls, ctx, sqlite3.Xsqlite3_column_value(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList, i-2))
 55410  		break
 55411  	}
 55412  	return SQLITE_OK
 55413  }
 55414  
 55415  func schemaRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 55416  	var pCur uintptr = cur
 55417  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = sqlite_int64((*schema_cursor)(unsafe.Pointer(pCur)).Frowid)
 55418  	return SQLITE_OK
 55419  }
 55420  
 55421  func finalize(tls *libc.TLS, ppStmt uintptr) int32 {
 55422  	var rc int32 = sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(ppStmt)))
 55423  	*(*uintptr)(unsafe.Pointer(ppStmt)) = uintptr(0)
 55424  	return rc
 55425  }
 55426  
 55427  func schemaEof(tls *libc.TLS, cur uintptr) int32 {
 55428  	var pCur uintptr = cur
 55429  	return func() int32 {
 55430  		if (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList != 0 {
 55431  			return 0
 55432  		}
 55433  		return 1
 55434  	}()
 55435  }
 55436  
 55437  func schemaNext(tls *libc.TLS, cur uintptr) int32 {
 55438  	bp := tls.Alloc(24)
 55439  	defer tls.Free(24)
 55440  
 55441  	var rc int32
 55442  	var pCur uintptr
 55443  	var pVtab uintptr
 55444  	var zSql uintptr
 55445  	var pDbList uintptr
 55446  	rc = SQLITE_OK
 55447  	pCur = cur
 55448  	pVtab = (*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab
 55449  	zSql = uintptr(0)
 55450  
 55451  __1:
 55452  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpColumnList)) {
 55453  		goto __2
 55454  	}
 55455  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+24))) {
 55456  		goto __3
 55457  	}
 55458  	goto next_exit
 55459  __3:
 55460  	;
 55461  __4:
 55462  	if !(!(int32((*schema_cursor)(unsafe.Pointer(pCur)).FpTableList) != 0) || SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList)) {
 55463  		goto __5
 55464  	}
 55465  	if !(SQLITE_OK != libc.AssignInt32(&rc, finalize(tls, pCur+16))) {
 55466  		goto __6
 55467  	}
 55468  	goto next_exit
 55469  __6:
 55470  	;
 55471  __7:
 55472  	if !(SQLITE_ROW != sqlite3.Xsqlite3_step(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList)) {
 55473  		goto __8
 55474  	}
 55475  	rc = finalize(tls, pCur+8)
 55476  	goto next_exit
 55477  	goto __7
 55478  __8:
 55479  	;
 55480  	if !(sqlite3.Xsqlite3_column_int(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 0) == 1) {
 55481  		goto __9
 55482  	}
 55483  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 55484  		ts+36768, 0)
 55485  	goto __10
 55486  __9:
 55487  	pDbList = (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList
 55488  	zSql = sqlite3.Xsqlite3_mprintf(tls,
 55489  		ts+36823,
 55490  		libc.VaList(bp, sqlite3.Xsqlite3_column_text(tls, pDbList, 1)))
 55491  __10:
 55492  	;
 55493  	if !!(zSql != 0) {
 55494  		goto __11
 55495  	}
 55496  	rc = SQLITE_NOMEM
 55497  	goto next_exit
 55498  __11:
 55499  	;
 55500  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+16, uintptr(0))
 55501  	sqlite3.Xsqlite3_free(tls, zSql)
 55502  	if !(rc != SQLITE_OK) {
 55503  		goto __12
 55504  	}
 55505  	goto next_exit
 55506  __12:
 55507  	;
 55508  	goto __4
 55509  __5:
 55510  	;
 55511  	zSql = sqlite3.Xsqlite3_mprintf(tls, ts+36876,
 55512  		libc.VaList(bp+8, sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpDbList, 1),
 55513  			sqlite3.Xsqlite3_column_text(tls, (*schema_cursor)(unsafe.Pointer(pCur)).FpTableList, 0)))
 55514  
 55515  	if !!(zSql != 0) {
 55516  		goto __13
 55517  	}
 55518  	rc = SQLITE_NOMEM
 55519  	goto next_exit
 55520  __13:
 55521  	;
 55522  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, zSql, -1, pCur+24, uintptr(0))
 55523  	sqlite3.Xsqlite3_free(tls, zSql)
 55524  	if !(rc != SQLITE_OK) {
 55525  		goto __14
 55526  	}
 55527  	goto next_exit
 55528  __14:
 55529  	;
 55530  	goto __1
 55531  __2:
 55532  	;
 55533  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid++
 55534  
 55535  next_exit:
 55536  	return rc
 55537  }
 55538  
 55539  func schemaFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 55540  	var rc int32
 55541  	var pVtab uintptr = (*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab
 55542  	var pCur uintptr = pVtabCursor
 55543  	(*schema_cursor)(unsafe.Pointer(pCur)).Frowid = 0
 55544  	finalize(tls, pCur+16)
 55545  	finalize(tls, pCur+24)
 55546  	finalize(tls, pCur+8)
 55547  	rc = sqlite3.Xsqlite3_prepare(tls, (*schema_vtab)(unsafe.Pointer(pVtab)).Fdb, ts+36901, -1, pCur+8, uintptr(0))
 55548  	return func() int32 {
 55549  		if rc == SQLITE_OK {
 55550  			return schemaNext(tls, pVtabCursor)
 55551  		}
 55552  		return rc
 55553  	}()
 55554  }
 55555  
 55556  func schemaBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 55557  	return SQLITE_OK
 55558  }
 55559  
 55560  var schemaModule = sqlite3_module{
 55561  	FxCreate:     0,
 55562  	FxConnect:    0,
 55563  	FxBestIndex:  0,
 55564  	FxDisconnect: 0,
 55565  	FxDestroy:    0,
 55566  	FxOpen:       0,
 55567  	FxClose:      0,
 55568  	FxFilter:     0,
 55569  	FxNext:       0,
 55570  	FxEof:        0,
 55571  	FxColumn:     0,
 55572  	FxRowid:      0,
 55573  }
 55574  
 55575  func register_schema_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 55576  	bp := tls.Alloc(8)
 55577  	defer tls.Free(8)
 55578  
 55579  	if objc != 2 {
 55580  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 55581  		return TCL_ERROR
 55582  	}
 55583  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 55584  		return TCL_ERROR
 55585  	}
 55586  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+4808, uintptr(unsafe.Pointer(&schemaModule)), uintptr(0))
 55587  	return TCL_OK
 55588  }
 55589  
 55590  func Sqlitetestschema_Init(tls *libc.TLS, interp uintptr) int32 {
 55591  	var i int32
 55592  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd12))/uint64(unsafe.Sizeof(struct {
 55593  		FzName      uintptr
 55594  		FxProc      uintptr
 55595  		FclientData uintptr
 55596  	}{})); i++ {
 55597  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd12[i].FzName,
 55598  			aObjCmd12[i].FxProc, aObjCmd12[i].FclientData, uintptr(0))
 55599  	}
 55600  	return TCL_OK
 55601  }
 55602  
 55603  var aObjCmd12 = [1]struct {
 55604  	FzName      uintptr
 55605  	FxProc      uintptr
 55606  	FclientData uintptr
 55607  }{
 55608  	{FzName: ts + 36922, FxProc: 0},
 55609  }
 55610  
 55611  type SqlMessage1 = struct {
 55612  	Fop           int32
 55613  	F__ccgo_pad1  [4]byte
 55614  	FpDb          uintptr
 55615  	FpStmt        uintptr
 55616  	FerrCode      int32
 55617  	F__ccgo_pad2  [4]byte
 55618  	FzIn          uintptr
 55619  	FnByte        int32
 55620  	F__ccgo_pad3  [4]byte
 55621  	FzOut         uintptr
 55622  	FpNext        uintptr
 55623  	FpPrev        uintptr
 55624  	FclientMutex  pthread_mutex_t
 55625  	FclientWakeup pthread_cond_t
 55626  }
 55627  
 55628  type SqlMessage = SqlMessage1
 55629  
 55630  type ServerState = struct {
 55631  	FqueueMutex   pthread_mutex_t
 55632  	FserverMutex  pthread_mutex_t
 55633  	FserverWakeup pthread_cond_t
 55634  	FserverHalt   int32
 55635  	F__ccgo_pad1  [4]byte
 55636  	FpQueueHead   uintptr
 55637  	FpQueueTail   uintptr
 55638  }
 55639  
 55640  var g4 = ServerState{}
 55641  
 55642  func sendToServer(tls *libc.TLS, pMsg uintptr) {
 55643  	libc.Xpthread_mutex_init(tls, pMsg+72, uintptr(0))
 55644  	libc.Xpthread_cond_init(tls, pMsg+80, uintptr(0))
 55645  
 55646  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 55647  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpNext = g4.FpQueueHead
 55648  	if g4.FpQueueHead == uintptr(0) {
 55649  		g4.FpQueueTail = pMsg
 55650  	} else {
 55651  		(*SqlMessage)(unsafe.Pointer(g4.FpQueueHead)).FpPrev = pMsg
 55652  	}
 55653  	(*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev = uintptr(0)
 55654  	g4.FpQueueHead = pMsg
 55655  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 55656  
 55657  	libc.Xpthread_mutex_lock(tls, pMsg+72)
 55658  	libc.Xpthread_cond_signal(tls, uintptr(unsafe.Pointer(&g4))+16)
 55659  	for (*SqlMessage)(unsafe.Pointer(pMsg)).Fop != MSG_Done {
 55660  		libc.Xpthread_cond_wait(tls, pMsg+80, pMsg+72)
 55661  	}
 55662  	libc.Xpthread_mutex_unlock(tls, pMsg+72)
 55663  
 55664  	libc.Xpthread_mutex_destroy(tls, pMsg+72)
 55665  	libc.Xpthread_cond_destroy(tls, pMsg+80)
 55666  }
 55667  
 55668  func sqlite3_client_open(tls *libc.TLS, zDatabaseName uintptr, ppDb uintptr) int32 {
 55669  	bp := tls.Alloc(88)
 55670  	defer tls.Free(88)
 55671  
 55672  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Open
 55673  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zDatabaseName
 55674  	sendToServer(tls, bp)
 55675  	*(*uintptr)(unsafe.Pointer(ppDb)) = (*SqlMessage)(unsafe.Pointer(bp)).FpDb
 55676  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55677  }
 55678  
 55679  func sqlite3_client_prepare(tls *libc.TLS, pDb uintptr, zSql uintptr, nByte int32, ppStmt uintptr, pzTail uintptr) int32 {
 55680  	bp := tls.Alloc(88)
 55681  	defer tls.Free(88)
 55682  
 55683  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Prepare
 55684  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 55685  	(*SqlMessage)(unsafe.Pointer(bp)).FzIn = zSql
 55686  	(*SqlMessage)(unsafe.Pointer(bp)).FnByte = nByte
 55687  	sendToServer(tls, bp)
 55688  	*(*uintptr)(unsafe.Pointer(ppStmt)) = (*SqlMessage)(unsafe.Pointer(bp)).FpStmt
 55689  	if pzTail != 0 {
 55690  		*(*uintptr)(unsafe.Pointer(pzTail)) = (*SqlMessage)(unsafe.Pointer(bp)).FzOut
 55691  	}
 55692  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55693  }
 55694  
 55695  func sqlite3_client_step(tls *libc.TLS, pStmt uintptr) int32 {
 55696  	bp := tls.Alloc(88)
 55697  	defer tls.Free(88)
 55698  
 55699  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Step
 55700  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55701  	sendToServer(tls, bp)
 55702  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55703  }
 55704  
 55705  func sqlite3_client_reset(tls *libc.TLS, pStmt uintptr) int32 {
 55706  	bp := tls.Alloc(88)
 55707  	defer tls.Free(88)
 55708  
 55709  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Reset
 55710  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55711  	sendToServer(tls, bp)
 55712  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55713  }
 55714  
 55715  func sqlite3_client_finalize(tls *libc.TLS, pStmt uintptr) int32 {
 55716  	bp := tls.Alloc(88)
 55717  	defer tls.Free(88)
 55718  
 55719  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Finalize
 55720  	(*SqlMessage)(unsafe.Pointer(bp)).FpStmt = pStmt
 55721  	sendToServer(tls, bp)
 55722  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55723  }
 55724  
 55725  func sqlite3_client_close(tls *libc.TLS, pDb uintptr) int32 {
 55726  	bp := tls.Alloc(88)
 55727  	defer tls.Free(88)
 55728  
 55729  	(*SqlMessage)(unsafe.Pointer(bp)).Fop = MSG_Close
 55730  	(*SqlMessage)(unsafe.Pointer(bp)).FpDb = pDb
 55731  	sendToServer(tls, bp)
 55732  	return (*SqlMessage)(unsafe.Pointer(bp)).FerrCode
 55733  }
 55734  
 55735  func sqlite3_server(tls *libc.TLS, NotUsed uintptr) uintptr {
 55736  	if libc.Xpthread_mutex_trylock(tls, uintptr(unsafe.Pointer(&g4))+8) != 0 {
 55737  		return uintptr(0)
 55738  	}
 55739  	sqlite3.Xsqlite3_enable_shared_cache(tls, 1)
 55740  	for !(g4.FserverHalt != 0) {
 55741  		var pMsg uintptr
 55742  
 55743  		libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4)))
 55744  		for g4.FpQueueTail == uintptr(0) && g4.FserverHalt == 0 {
 55745  			libc.Xpthread_cond_wait(tls, uintptr(unsafe.Pointer(&g4))+16, uintptr(unsafe.Pointer(&g4)))
 55746  		}
 55747  		pMsg = g4.FpQueueTail
 55748  		if pMsg != 0 {
 55749  			if (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev != 0 {
 55750  				(*SqlMessage)(unsafe.Pointer((*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev)).FpNext = uintptr(0)
 55751  			} else {
 55752  				g4.FpQueueHead = uintptr(0)
 55753  			}
 55754  			g4.FpQueueTail = (*SqlMessage)(unsafe.Pointer(pMsg)).FpPrev
 55755  		}
 55756  		libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4)))
 55757  		if pMsg == uintptr(0) {
 55758  			break
 55759  		}
 55760  
 55761  		libc.Xpthread_mutex_lock(tls, pMsg+72)
 55762  		switch (*SqlMessage)(unsafe.Pointer(pMsg)).Fop {
 55763  		case MSG_Open:
 55764  			{
 55765  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_open(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, pMsg+8)
 55766  				break
 55767  
 55768  			}
 55769  		case MSG_Prepare:
 55770  			{
 55771  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_prepare(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb, (*SqlMessage)(unsafe.Pointer(pMsg)).FzIn, (*SqlMessage)(unsafe.Pointer(pMsg)).FnByte,
 55772  					pMsg+16, pMsg+48)
 55773  				break
 55774  
 55775  			}
 55776  		case MSG_Step:
 55777  			{
 55778  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_step(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55779  				break
 55780  
 55781  			}
 55782  		case MSG_Reset:
 55783  			{
 55784  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_reset(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55785  				break
 55786  
 55787  			}
 55788  		case MSG_Finalize:
 55789  			{
 55790  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_finalize(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpStmt)
 55791  				break
 55792  
 55793  			}
 55794  		case MSG_Close:
 55795  			{
 55796  				(*SqlMessage)(unsafe.Pointer(pMsg)).FerrCode = sqlite3.Xsqlite3_close(tls, (*SqlMessage)(unsafe.Pointer(pMsg)).FpDb)
 55797  				break
 55798  
 55799  			}
 55800  		}
 55801  
 55802  		(*SqlMessage)(unsafe.Pointer(pMsg)).Fop = MSG_Done
 55803  		libc.Xpthread_mutex_unlock(tls, pMsg+72)
 55804  		libc.Xpthread_cond_signal(tls, pMsg+80)
 55805  	}
 55806  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55807  	return uintptr(0)
 55808  }
 55809  
 55810  func sqlite3_server_start(tls *libc.TLS) {
 55811  	bp := tls.Alloc(8)
 55812  	defer tls.Free(8)
 55813  
 55814  	var rc int32
 55815  	g4.FserverHalt = 0
 55816  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 55817  		f func(*libc.TLS, uintptr) uintptr
 55818  	}{sqlite3_server})), uintptr(0))
 55819  	if rc == 0 {
 55820  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 55821  	}
 55822  }
 55823  
 55824  func serverWrapper(tls *libc.TLS, pnDecr uintptr) uintptr {
 55825  	var p uintptr = sqlite3_server(tls, uintptr(0))
 55826  	*(*int32)(unsafe.Pointer(pnDecr))--
 55827  	return p
 55828  }
 55829  
 55830  func sqlite3_server_start2(tls *libc.TLS, pnDecr uintptr) {
 55831  	bp := tls.Alloc(8)
 55832  	defer tls.Free(8)
 55833  
 55834  	var rc int32
 55835  	g4.FserverHalt = 0
 55836  	rc = libc.Xpthread_create(tls, bp, uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 55837  		f func(*libc.TLS, uintptr) uintptr
 55838  	}{serverWrapper})), pnDecr)
 55839  	if rc == 0 {
 55840  		libc.Xpthread_detach(tls, *(*pthread_t)(unsafe.Pointer(bp)))
 55841  	}
 55842  }
 55843  
 55844  func sqlite3_server_stop(tls *libc.TLS) {
 55845  	g4.FserverHalt = 1
 55846  	libc.Xpthread_cond_broadcast(tls, uintptr(unsafe.Pointer(&g4))+16)
 55847  	libc.Xpthread_mutex_lock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55848  	libc.Xpthread_mutex_unlock(tls, uintptr(unsafe.Pointer(&g4))+8)
 55849  }
 55850  
 55851  type SuperlockBusy1 = struct {
 55852  	FxBusy       uintptr
 55853  	FpBusyArg    uintptr
 55854  	FnBusy       int32
 55855  	F__ccgo_pad1 [4]byte
 55856  }
 55857  
 55858  type SuperlockBusy = SuperlockBusy1
 55859  
 55860  type Superlock1 = struct {
 55861  	Fdb          uintptr
 55862  	FbWal        int32
 55863  	F__ccgo_pad1 [4]byte
 55864  }
 55865  
 55866  type Superlock = Superlock1
 55867  
 55868  func superlockBusyHandler(tls *libc.TLS, pCtx uintptr, UNUSED int32) int32 {
 55869  	var pBusy uintptr = pCtx
 55870  	if (*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy == uintptr(0) {
 55871  		return 0
 55872  	}
 55873  	return (*struct {
 55874  		f func(*libc.TLS, uintptr, int32) int32
 55875  	})(unsafe.Pointer(&struct{ uintptr }{(*SuperlockBusy)(unsafe.Pointer(pBusy)).FxBusy})).f(tls, (*SuperlockBusy)(unsafe.Pointer(pBusy)).FpBusyArg, libc.PostIncInt32(&(*SuperlockBusy)(unsafe.Pointer(pBusy)).FnBusy, 1))
 55876  }
 55877  
 55878  func superlockIsWal(tls *libc.TLS, pLock uintptr) int32 {
 55879  	bp := tls.Alloc(8)
 55880  	defer tls.Free(8)
 55881  
 55882  	var rc int32
 55883  
 55884  	rc = sqlite3.Xsqlite3_prepare(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+36945, -1, bp, uintptr(0))
 55885  	if rc != SQLITE_OK {
 55886  		return rc
 55887  	}
 55888  
 55889  	(*Superlock)(unsafe.Pointer(pLock)).FbWal = 0
 55890  	if SQLITE_ROW == sqlite3.Xsqlite3_step(tls, *(*uintptr)(unsafe.Pointer(bp))) {
 55891  		var zMode uintptr = sqlite3.Xsqlite3_column_text(tls, *(*uintptr)(unsafe.Pointer(bp)), 0)
 55892  		if zMode != 0 && libc.Xstrlen(tls, zMode) == uint64(3) && sqlite3.Xsqlite3_strnicmp(tls, ts+29946, zMode, 3) == 0 {
 55893  			(*Superlock)(unsafe.Pointer(pLock)).FbWal = 1
 55894  		}
 55895  	}
 55896  
 55897  	return sqlite3.Xsqlite3_finalize(tls, *(*uintptr)(unsafe.Pointer(bp)))
 55898  }
 55899  
 55900  func superlockShmLock(tls *libc.TLS, fd uintptr, idx int32, nByte int32, pBusy uintptr) int32 {
 55901  	var rc int32
 55902  	var xShmLock uintptr = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(fd)).FpMethods)).FxShmLock
 55903  	for __ccgo := true; __ccgo; __ccgo = rc == SQLITE_BUSY && superlockBusyHandler(tls, pBusy, 0) != 0 {
 55904  		rc = (*struct {
 55905  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55906  		})(unsafe.Pointer(&struct{ uintptr }{xShmLock})).f(tls, fd, idx, nByte, SQLITE_SHM_LOCK|SQLITE_SHM_EXCLUSIVE)
 55907  	}
 55908  	return rc
 55909  }
 55910  
 55911  func superlockWalLock(tls *libc.TLS, db uintptr, pBusy uintptr) int32 {
 55912  	bp := tls.Alloc(16)
 55913  	defer tls.Free(16)
 55914  
 55915  	var rc int32
 55916  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 55917  	*(*uintptr)(unsafe.Pointer(bp + 8)) = uintptr(0)
 55918  
 55919  	rc = sqlite3.Xsqlite3_file_control(tls, db, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 55920  	if rc != SQLITE_OK {
 55921  		return rc
 55922  	}
 55923  
 55924  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 2, 1, pBusy)
 55925  	if rc != SQLITE_OK {
 55926  		return rc
 55927  	}
 55928  
 55929  	rc = (*struct {
 55930  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 55931  	})(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+8)
 55932  	if rc != SQLITE_OK {
 55933  		return rc
 55934  	}
 55935  	libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(bp + 8)), 0, uint64(32))
 55936  
 55937  	rc = superlockShmLock(tls, *(*uintptr)(unsafe.Pointer(bp)), 3, SQLITE_SHM_NLOCK-3, pBusy)
 55938  	return rc
 55939  }
 55940  
 55941  func sqlite3demo_superunlock(tls *libc.TLS, pLock uintptr) {
 55942  	bp := tls.Alloc(8)
 55943  	defer tls.Free(8)
 55944  
 55945  	var p uintptr = pLock
 55946  	if (*Superlock)(unsafe.Pointer(p)).FbWal != 0 {
 55947  		var rc int32
 55948  		var flags int32 = SQLITE_SHM_UNLOCK | SQLITE_SHM_EXCLUSIVE
 55949  		*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 55950  		rc = sqlite3.Xsqlite3_file_control(tls, (*Superlock)(unsafe.Pointer(p)).Fdb, ts+85, SQLITE_FCNTL_FILE_POINTER, bp)
 55951  		if rc == SQLITE_OK {
 55952  			(*struct {
 55953  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55954  			})(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)
 55955  			(*struct {
 55956  				f func(*libc.TLS, uintptr, int32, int32, int32) int32
 55957  			})(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)
 55958  		}
 55959  	}
 55960  	sqlite3.Xsqlite3_close(tls, (*Superlock)(unsafe.Pointer(p)).Fdb)
 55961  	sqlite3.Xsqlite3_free(tls, p)
 55962  }
 55963  
 55964  func sqlite3demo_superlock(tls *libc.TLS, zPath uintptr, zVfs uintptr, xBusy uintptr, pBusyArg uintptr, ppLock uintptr) int32 {
 55965  	bp := tls.Alloc(24)
 55966  	defer tls.Free(24)
 55967  
 55968  	*(*SuperlockBusy)(unsafe.Pointer(bp)) = SuperlockBusy{}
 55969  	var rc int32
 55970  	var pLock uintptr
 55971  
 55972  	pLock = sqlite3.Xsqlite3_malloc(tls, int32(unsafe.Sizeof(Superlock{})))
 55973  	if !(pLock != 0) {
 55974  		return SQLITE_NOMEM
 55975  	}
 55976  	libc.Xmemset(tls, pLock, 0, uint64(unsafe.Sizeof(Superlock{})))
 55977  
 55978  	rc = sqlite3.Xsqlite3_open_v2(tls,
 55979  		zPath, pLock, SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, zVfs)
 55980  
 55981  	if rc == SQLITE_OK {
 55982  		(*SuperlockBusy)(unsafe.Pointer(bp)).FxBusy = xBusy
 55983  		(*SuperlockBusy)(unsafe.Pointer(bp)).FpBusyArg = pBusyArg
 55984  		sqlite3.Xsqlite3_busy_handler(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, *(*uintptr)(unsafe.Pointer(&struct {
 55985  			f func(*libc.TLS, uintptr, int32) int32
 55986  		}{superlockBusyHandler})), bp)
 55987  		rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+13217, uintptr(0), uintptr(0), uintptr(0))
 55988  	}
 55989  
 55990  	if rc == SQLITE_OK {
 55991  		if SQLITE_OK == libc.AssignInt32(&rc, superlockIsWal(tls, pLock)) && (*Superlock)(unsafe.Pointer(pLock)).FbWal != 0 {
 55992  			rc = sqlite3.Xsqlite3_exec(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, ts+11628, uintptr(0), uintptr(0), uintptr(0))
 55993  			if rc == SQLITE_OK {
 55994  				rc = superlockWalLock(tls, (*Superlock)(unsafe.Pointer(pLock)).Fdb, bp)
 55995  			}
 55996  		}
 55997  	}
 55998  
 55999  	if rc != SQLITE_OK {
 56000  		sqlite3demo_superunlock(tls, pLock)
 56001  		*(*uintptr)(unsafe.Pointer(ppLock)) = uintptr(0)
 56002  	} else {
 56003  		*(*uintptr)(unsafe.Pointer(ppLock)) = pLock
 56004  	}
 56005  
 56006  	return rc
 56007  }
 56008  
 56009  type InterpAndScript1 = struct {
 56010  	Finterp  uintptr
 56011  	FpScript uintptr
 56012  }
 56013  
 56014  type InterpAndScript = InterpAndScript1
 56015  
 56016  func superunlock_del(tls *libc.TLS, cd ClientData) {
 56017  	sqlite3demo_superunlock(tls, cd)
 56018  }
 56019  
 56020  func superunlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56021  	if objc != 1 {
 56022  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+584)
 56023  		return TCL_ERROR
 56024  	}
 56025  	tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 56026  	return TCL_OK
 56027  }
 56028  
 56029  func superlock_busy(tls *libc.TLS, pCtx uintptr, nBusy int32) int32 {
 56030  	bp := tls.Alloc(4)
 56031  	defer tls.Free(4)
 56032  
 56033  	var p uintptr = pCtx
 56034  	var pEval uintptr
 56035  	*(*int32)(unsafe.Pointer(bp)) = 0
 56036  
 56037  	pEval = tcl.XTcl_DuplicateObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).FpScript)
 56038  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 56039  	tcl.XTcl_ListObjAppendElement(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewIntObj(tls, nBusy))
 56040  	tcl.XTcl_EvalObjEx(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 56041  	tcl.XTcl_GetIntFromObj(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp, tcl.XTcl_GetObjResult(tls, (*InterpAndScript)(unsafe.Pointer(p)).Finterp), bp)
 56042  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56043  		var _objPtr uintptr = pEval
 56044  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56045  			tcl.XTclFreeObj(tls, _objPtr)
 56046  		}
 56047  	}
 56048  
 56049  	return *(*int32)(unsafe.Pointer(bp))
 56050  }
 56051  
 56052  func superlock_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56053  	bp := tls.Alloc(40)
 56054  	defer tls.Free(40)
 56055  
 56056  	var zPath uintptr
 56057  	var zVfs uintptr = uintptr(0)
 56058  	*(*InterpAndScript)(unsafe.Pointer(bp + 16)) = InterpAndScript{}
 56059  	var xBusy uintptr = uintptr(0)
 56060  	var rc int32
 56061  
 56062  	if objc < 3 || objc > 5 {
 56063  		tcl.XTcl_WrongNumArgs(tls,
 56064  			interp, 1, objv, ts+36970)
 56065  		return TCL_ERROR
 56066  	}
 56067  
 56068  	zPath = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 56069  
 56070  	if objc > 3 {
 56071  		zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 56072  		if libc.Xstrlen(tls, zVfs) == uint64(0) {
 56073  			zVfs = uintptr(0)
 56074  		}
 56075  	}
 56076  	if objc > 4 {
 56077  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).Finterp = interp
 56078  		(*InterpAndScript)(unsafe.Pointer(bp + 16)).FpScript = *(*uintptr)(unsafe.Pointer(objv + 4*8))
 56079  		xBusy = *(*uintptr)(unsafe.Pointer(&struct {
 56080  			f func(*libc.TLS, uintptr, int32) int32
 56081  		}{superlock_busy}))
 56082  	}
 56083  
 56084  	rc = sqlite3demo_superlock(tls, zPath, zVfs, xBusy, bp+16, bp+32)
 56085  
 56086  	if rc != SQLITE_OK {
 56087  		tcl.XTcl_ResetResult(tls, interp)
 56088  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, sqlite3.Xsqlite3ErrStr(tls, rc), 0))
 56089  		return TCL_ERROR
 56090  	}
 56091  
 56092  	tcl.XTcl_CreateObjCommand(tls,
 56093  		interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), *(*uintptr)(unsafe.Pointer(&struct {
 56094  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56095  		}{superunlock_cmd})), *(*uintptr)(unsafe.Pointer(bp + 32)), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{superunlock_del})))
 56096  	tcl.XTcl_SetObjResult(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 56097  	return TCL_OK
 56098  }
 56099  
 56100  func SqliteSuperlock_Init(tls *libc.TLS, interp uintptr) int32 {
 56101  	tcl.XTcl_CreateObjCommand(tls, interp, ts+37011, *(*uintptr)(unsafe.Pointer(&struct {
 56102  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56103  	}{superlock_cmd})), uintptr(0), uintptr(0))
 56104  	return TCL_OK
 56105  }
 56106  
 56107  type TestSyscallGlobal = struct {
 56108  	FbPersist         int32
 56109  	FnCount           int32
 56110  	FnFail            int32
 56111  	Fpgsz             int32
 56112  	Forig_getpagesize sqlite3_syscall_ptr
 56113  }
 56114  
 56115  var gSyscall = TestSyscallGlobal{}
 56116  
 56117  type TestSyscallArray = struct {
 56118  	FzName         uintptr
 56119  	FxTest         sqlite3_syscall_ptr
 56120  	FxOrig         sqlite3_syscall_ptr
 56121  	Fdefault_errno int32
 56122  	Fcustom_errno  int32
 56123  }
 56124  
 56125  var aSyscall = [19]TestSyscallArray{
 56126  	{FzName: ts + 37033, FxTest: 0, Fdefault_errno: EACCES},
 56127  	{FzName: ts + 9490, FxTest: 0},
 56128  	{FzName: ts + 37038, FxTest: 0},
 56129  	{FzName: ts + 37045, FxTest: 0},
 56130  	{FzName: ts + 37052, FxTest: 0},
 56131  	{FzName: ts + 37057, FxTest: 0},
 56132  	{FzName: ts + 37063, FxTest: 0, Fdefault_errno: EIO},
 56133  	{FzName: ts + 37073, FxTest: 0, Fdefault_errno: EACCES},
 56134  	{FzName: ts + 25126, FxTest: 0},
 56135  	{FzName: ts + 37079, FxTest: 0},
 56136  	{FzName: ts + 37085, FxTest: 0},
 56137  	{FzName: ts + 25131, FxTest: 0},
 56138  	{FzName: ts + 37093, FxTest: 0},
 56139  	{FzName: ts + 37100, FxTest: 0},
 56140  	{FzName: ts + 37109, FxTest: 0},
 56141  	{FzName: ts + 37116, FxTest: 0},
 56142  	{FzName: ts + 29040, FxTest: 0},
 56143  	{FzName: ts + 37126, FxTest: 0},
 56144  	{},
 56145  }
 56146  
 56147  func tsIsFail(tls *libc.TLS) int32 {
 56148  	gSyscall.FnCount--
 56149  	if gSyscall.FnCount == 0 || gSyscall.FnFail != 0 && gSyscall.FbPersist != 0 {
 56150  		gSyscall.FnFail++
 56151  		return 1
 56152  	}
 56153  	return 0
 56154  }
 56155  
 56156  func tsErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56157  	var i int32
 56158  	var nFunc int32 = int32(libc.Xstrlen(tls, zFunc))
 56159  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56160  		if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(nFunc) {
 56161  			continue
 56162  		}
 56163  		if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(nFunc)) != 0 {
 56164  			continue
 56165  		}
 56166  		return aSyscall[i].Fcustom_errno
 56167  	}
 56168  
 56169  	return 0
 56170  }
 56171  
 56172  func tsIsFailErrno(tls *libc.TLS, zFunc uintptr) int32 {
 56173  	if tsIsFail(tls) != 0 {
 56174  		*(*int32)(unsafe.Pointer(libc.X__errno(tls))) = tsErrno(tls, zFunc)
 56175  		return 1
 56176  	}
 56177  	return 0
 56178  }
 56179  
 56180  func ts_open(tls *libc.TLS, zFile uintptr, flags int32, mode int32) int32 {
 56181  	if tsIsFailErrno(tls, ts+37033) != 0 {
 56182  		return -1
 56183  	}
 56184  	return (*(*func(*libc.TLS, uintptr, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16)))(tls, zFile, flags, mode)
 56185  }
 56186  
 56187  func ts_close(tls *libc.TLS, fd int32) int32 {
 56188  	if tsIsFail(tls) != 0 {
 56189  		(*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56190  		return -1
 56191  	}
 56192  	return (*(*func(*libc.TLS, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 1*32 + 16)))(tls, fd)
 56193  }
 56194  
 56195  func ts_access(tls *libc.TLS, zPath uintptr, mode int32) int32 {
 56196  	if tsIsFail(tls) != 0 {
 56197  		return -1
 56198  	}
 56199  	return (*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 2*32 + 16)))(tls, zPath, mode)
 56200  }
 56201  
 56202  func ts_getcwd(tls *libc.TLS, zPath uintptr, nPath size_t) uintptr {
 56203  	if tsIsFail(tls) != 0 {
 56204  		return uintptr(0)
 56205  	}
 56206  	return (*(*func(*libc.TLS, uintptr, size_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 3*32 + 16)))(tls, zPath, nPath)
 56207  }
 56208  
 56209  func ts_stat(tls *libc.TLS, zPath uintptr, p uintptr) int32 {
 56210  	if tsIsFail(tls) != 0 {
 56211  		return -1
 56212  	}
 56213  	return (*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 4*32 + 16)))(tls, zPath, p)
 56214  }
 56215  
 56216  func ts_fstat(tls *libc.TLS, fd int32, p uintptr) int32 {
 56217  	if tsIsFailErrno(tls, ts+37057) != 0 {
 56218  		return -1
 56219  	}
 56220  	return (*(*func(*libc.TLS, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 5*32 + 16)))(tls, fd, p)
 56221  }
 56222  
 56223  func ts_ftruncate(tls *libc.TLS, fd int32, n off_t) int32 {
 56224  	if tsIsFailErrno(tls, ts+37063) != 0 {
 56225  		return -1
 56226  	}
 56227  	return (*(*func(*libc.TLS, int32, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 6*32 + 16)))(tls, fd, n)
 56228  }
 56229  
 56230  func ts_fcntl(tls *libc.TLS, fd int32, cmd int32, va uintptr) int32 {
 56231  	bp := tls.Alloc(8)
 56232  	defer tls.Free(8)
 56233  
 56234  	var ap va_list
 56235  	_ = ap
 56236  	var pArg uintptr
 56237  	if tsIsFailErrno(tls, ts+37073) != 0 {
 56238  		return -1
 56239  	}
 56240  	ap = va
 56241  	pArg = libc.VaUintptr(&ap)
 56242  	return (*(*func(*libc.TLS, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 7*32 + 16)))(tls, fd, cmd, libc.VaList(bp, pArg))
 56243  }
 56244  
 56245  func ts_read(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56246  	if tsIsFailErrno(tls, ts+25126) != 0 {
 56247  		return -1
 56248  	}
 56249  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8*32 + 16)))(tls, fd, aBuf, nBuf))
 56250  }
 56251  
 56252  func ts_pread(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56253  	if tsIsFailErrno(tls, ts+37079) != 0 {
 56254  		return -1
 56255  	}
 56256  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t, off_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 9*32 + 16)))(tls, fd, aBuf, nBuf, off))
 56257  }
 56258  
 56259  func ts_pread64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56260  	if tsIsFailErrno(tls, ts+37085) != 0 {
 56261  		return -1
 56262  	}
 56263  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 10*32 + 16)))(tls, fd, aBuf, nBuf, off))
 56264  }
 56265  
 56266  func ts_write(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t) int32 {
 56267  	if tsIsFailErrno(tls, ts+25131) != 0 {
 56268  		if tsErrno(tls, ts+25131) == EINTR {
 56269  			(*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf/uint64(2))
 56270  		}
 56271  		return -1
 56272  	}
 56273  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 11*32 + 16)))(tls, fd, aBuf, nBuf))
 56274  }
 56275  
 56276  func ts_pwrite(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off off_t) int32 {
 56277  	if tsIsFailErrno(tls, ts+37093) != 0 {
 56278  		return -1
 56279  	}
 56280  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t, off_t) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 12*32 + 16)))(tls, fd, aBuf, nBuf, off))
 56281  }
 56282  
 56283  func ts_pwrite64(tls *libc.TLS, fd int32, aBuf uintptr, nBuf size_t, off sqlite3_uint64) int32 {
 56284  	if tsIsFailErrno(tls, ts+37100) != 0 {
 56285  		return -1
 56286  	}
 56287  	return int32((*(*func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) ssize_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 13*32 + 16)))(tls, fd, aBuf, nBuf, off))
 56288  }
 56289  
 56290  func ts_fchmod(tls *libc.TLS, fd int32, mode mode_t) int32 {
 56291  	if tsIsFail(tls) != 0 {
 56292  		return -1
 56293  	}
 56294  	return (*(*func(*libc.TLS, int32, mode_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 14*32 + 16)))(tls, fd, mode)
 56295  }
 56296  
 56297  func ts_fallocate(tls *libc.TLS, fd int32, off off_t, len off_t) int32 {
 56298  	if tsIsFail(tls) != 0 {
 56299  		return tsErrno(tls, ts+37116)
 56300  	}
 56301  	return (*(*func(*libc.TLS, int32, off_t, off_t) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 15*32 + 16)))(tls, fd, off, len)
 56302  }
 56303  
 56304  func ts_mmap(tls *libc.TLS, pAddr uintptr, nByte size_t, prot int32, flags int32, fd int32, iOff off_t) uintptr {
 56305  	if tsIsFailErrno(tls, ts+29040) != 0 {
 56306  		return libc.UintptrFromInt32(-1)
 56307  	}
 56308  	return (*(*func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 16*32 + 16)))(tls, pAddr, nByte, prot, flags, fd, iOff)
 56309  }
 56310  
 56311  func ts_mremap(tls *libc.TLS, a uintptr, b size_t, c size_t, d int32, va uintptr) uintptr {
 56312  	bp := tls.Alloc(8)
 56313  	defer tls.Free(8)
 56314  
 56315  	var ap va_list
 56316  	_ = ap
 56317  	var pArg uintptr
 56318  	if tsIsFailErrno(tls, ts+37126) != 0 {
 56319  		return libc.UintptrFromInt32(-1)
 56320  	}
 56321  	ap = va
 56322  	pArg = libc.VaUintptr(&ap)
 56323  	return (*(*func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 17*32 + 16)))(tls, a, b, c, d, libc.VaList(bp, pArg))
 56324  }
 56325  
 56326  func test_syscall_install(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56327  	bp := tls.Alloc(20)
 56328  	defer tls.Free(20)
 56329  
 56330  	var pVfs uintptr
 56331  
 56332  	var i int32
 56333  
 56334  	if objc != 3 {
 56335  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37133)
 56336  		return TCL_ERROR
 56337  	}
 56338  	if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp, bp+8) != 0 {
 56339  		return TCL_ERROR
 56340  	}
 56341  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56342  
 56343  	for i = 0; i < *(*int32)(unsafe.Pointer(bp)); i++ {
 56344  		var rc int32 = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56345  			*(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 8)) + uintptr(i)*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp+16)
 56346  		if rc != 0 {
 56347  			return rc
 56348  		}
 56349  		if aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig == uintptr(0) {
 56350  			aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxOrig = (*struct {
 56351  				f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56352  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName)
 56353  			(*struct {
 56354  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56355  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FzName, aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].FxTest)
 56356  		}
 56357  		aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fcustom_errno = aSyscall[*(*int32)(unsafe.Pointer(bp + 16))].Fdefault_errno
 56358  	}
 56359  
 56360  	return TCL_OK
 56361  }
 56362  
 56363  func test_syscall_uninstall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56364  	var pVfs uintptr
 56365  	var i int32
 56366  
 56367  	if objc != 2 {
 56368  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56369  		return TCL_ERROR
 56370  	}
 56371  
 56372  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56373  	for i = 0; aSyscall[i].FzName != 0; i++ {
 56374  		if aSyscall[i].FxOrig != 0 {
 56375  			(*struct {
 56376  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56377  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, aSyscall[i].FzName, uintptr(0))
 56378  			aSyscall[i].FxOrig = uintptr(0)
 56379  		}
 56380  	}
 56381  	return TCL_OK
 56382  }
 56383  
 56384  func test_syscall_reset(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56385  	bp := tls.Alloc(4)
 56386  	defer tls.Free(4)
 56387  
 56388  	var pVfs uintptr
 56389  	var i int32
 56390  	var rc int32
 56391  
 56392  	if objc != 2 && objc != 3 {
 56393  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56394  		return TCL_ERROR
 56395  	}
 56396  
 56397  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56398  	if objc == 2 {
 56399  		rc = (*struct {
 56400  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56401  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, uintptr(0), uintptr(0))
 56402  		for i = 0; aSyscall[i].FzName != 0; i++ {
 56403  			aSyscall[i].FxOrig = uintptr(0)
 56404  		}
 56405  	} else {
 56406  		var zFunc uintptr = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp)
 56407  		rc = (*struct {
 56408  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56409  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), uintptr(0))
 56410  		for i = 0; rc == SQLITE_OK && aSyscall[i].FzName != 0; i++ {
 56411  			if libc.Xstrlen(tls, aSyscall[i].FzName) != size_t(*(*int32)(unsafe.Pointer(bp))) {
 56412  				continue
 56413  			}
 56414  			if libc.Xmemcmp(tls, aSyscall[i].FzName, zFunc, uint64(*(*int32)(unsafe.Pointer(bp)))) != 0 {
 56415  				continue
 56416  			}
 56417  			aSyscall[i].FxOrig = uintptr(0)
 56418  		}
 56419  	}
 56420  	if rc != SQLITE_OK {
 56421  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 56422  		return TCL_ERROR
 56423  	}
 56424  
 56425  	tcl.XTcl_ResetResult(tls, interp)
 56426  	return TCL_OK
 56427  }
 56428  
 56429  func test_syscall_exists(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56430  	var pVfs uintptr
 56431  	var x sqlite3_syscall_ptr
 56432  
 56433  	if objc != 3 {
 56434  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56435  		return TCL_ERROR
 56436  	}
 56437  
 56438  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56439  	x = (*struct {
 56440  		f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56441  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))))
 56442  
 56443  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, libc.Bool32(libc.Bool32(x != uintptr(0)) != 0)))
 56444  	return TCL_OK
 56445  }
 56446  
 56447  func test_syscall_fault(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56448  	bp := tls.Alloc(8)
 56449  	defer tls.Free(8)
 56450  
 56451  	*(*int32)(unsafe.Pointer(bp)) = 0
 56452  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 56453  
 56454  	if objc != 2 && objc != 4 {
 56455  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37158)
 56456  		return TCL_ERROR
 56457  	}
 56458  
 56459  	if objc == 4 {
 56460  		if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp) != 0 ||
 56461  			tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+4) != 0 {
 56462  			return TCL_ERROR
 56463  		}
 56464  	}
 56465  
 56466  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, gSyscall.FnFail))
 56467  	gSyscall.FnCount = *(*int32)(unsafe.Pointer(bp))
 56468  	gSyscall.FbPersist = *(*int32)(unsafe.Pointer(bp + 4))
 56469  	gSyscall.FnFail = 0
 56470  	return TCL_OK
 56471  }
 56472  
 56473  func test_syscall_errno(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56474  	bp := tls.Alloc(204)
 56475  	defer tls.Free(204)
 56476  
 56477  	var rc int32
 56478  
 56479  	*(*[12]Errno)(unsafe.Pointer(bp + 8)) = [12]Errno{
 56480  		{Fz: ts + 37174, Fi: EACCES},
 56481  		{Fz: ts + 37181, Fi: EINTR},
 56482  		{Fz: ts + 37187, Fi: EIO},
 56483  		{Fz: ts + 37191, Fi: EOVERFLOW},
 56484  		{Fz: ts + 37201, Fi: ENOMEM},
 56485  		{Fz: ts + 37208, Fi: EAGAIN},
 56486  		{Fz: ts + 37215, Fi: ETIMEDOUT},
 56487  		{Fz: ts + 37225, Fi: EBUSY},
 56488  		{Fz: ts + 37231, Fi: EPERM},
 56489  		{Fz: ts + 37237, Fi: EDEADLK},
 56490  		{Fz: ts + 37245, Fi: ENOLCK},
 56491  		{},
 56492  	}
 56493  
 56494  	if objc != 4 {
 56495  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37252)
 56496  		return TCL_ERROR
 56497  	}
 56498  
 56499  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56500  		*(*uintptr)(unsafe.Pointer(objv + 2*8)), uintptr(unsafe.Pointer(&aSyscall)), int32(unsafe.Sizeof(TestSyscallArray{})), ts+37146, 0, bp)
 56501  	if rc != TCL_OK {
 56502  		return rc
 56503  	}
 56504  	rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56505  		*(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(Errno{})), ts+37266, 0, bp+200)
 56506  	if rc != TCL_OK {
 56507  		return rc
 56508  	}
 56509  
 56510  	aSyscall[*(*int32)(unsafe.Pointer(bp))].Fcustom_errno = (*Errno)(unsafe.Pointer(bp + 8 + uintptr(*(*int32)(unsafe.Pointer(bp + 200)))*16)).Fi
 56511  	return TCL_OK
 56512  }
 56513  
 56514  type Errno = struct {
 56515  	Fz           uintptr
 56516  	Fi           int32
 56517  	F__ccgo_pad1 [4]byte
 56518  }
 56519  
 56520  func test_syscall_list(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56521  	var zSys uintptr
 56522  	var pVfs uintptr
 56523  	var pList uintptr
 56524  
 56525  	if objc != 2 {
 56526  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56527  		return TCL_ERROR
 56528  	}
 56529  
 56530  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56531  	pList = tcl.XTcl_NewObj(tls)
 56532  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 56533  	for zSys = (*struct {
 56534  		f func(*libc.TLS, uintptr, uintptr) uintptr
 56535  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, uintptr(0)); zSys != uintptr(0); zSys = (*struct {
 56536  		f func(*libc.TLS, uintptr, uintptr) uintptr
 56537  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxNextSystemCall})).f(tls, pVfs, zSys) {
 56538  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, zSys, -1))
 56539  	}
 56540  
 56541  	tcl.XTcl_SetObjResult(tls, interp, pList)
 56542  	for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56543  		var _objPtr uintptr = pList
 56544  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56545  			tcl.XTclFreeObj(tls, _objPtr)
 56546  		}
 56547  	}
 56548  	return TCL_OK
 56549  }
 56550  
 56551  func test_syscall_defaultvfs(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56552  	var pVfs uintptr
 56553  
 56554  	if objc != 2 {
 56555  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+584)
 56556  		return TCL_ERROR
 56557  	}
 56558  
 56559  	pVfs = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56560  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName, -1))
 56561  	return TCL_OK
 56562  }
 56563  
 56564  func ts_getpagesize(tls *libc.TLS) int32 {
 56565  	return gSyscall.Fpgsz
 56566  }
 56567  
 56568  func test_syscall_pagesize(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56569  	bp := tls.Alloc(20)
 56570  	defer tls.Free(20)
 56571  
 56572  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56573  
 56574  	if objc != 3 {
 56575  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+37272)
 56576  		return TCL_ERROR
 56577  	}
 56578  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16) != 0 {
 56579  		return TCL_ERROR
 56580  	}
 56581  
 56582  	if *(*int32)(unsafe.Pointer(bp + 16)) < 0 {
 56583  		if gSyscall.Forig_getpagesize != 0 {
 56584  			(*struct {
 56585  				f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56586  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls, pVfs, ts+37277, gSyscall.Forig_getpagesize)
 56587  		}
 56588  	} else {
 56589  		if *(*int32)(unsafe.Pointer(bp + 16)) < 512 || *(*int32)(unsafe.Pointer(bp + 16))&(*(*int32)(unsafe.Pointer(bp + 16))-1) != 0 {
 56590  			tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37289, 0))
 56591  			return TCL_ERROR
 56592  		}
 56593  		gSyscall.Forig_getpagesize = (*struct {
 56594  			f func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr
 56595  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxGetSystemCall})).f(tls, pVfs, ts+37277)
 56596  		gSyscall.Fpgsz = *(*int32)(unsafe.Pointer(bp + 16))
 56597  		(*struct {
 56598  			f func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32
 56599  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall})).f(tls,
 56600  			pVfs, ts+37277, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS) int32 }{ts_getpagesize})))
 56601  	}
 56602  
 56603  	return TCL_OK
 56604  }
 56605  
 56606  func test_syscall(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 56607  	bp := tls.Alloc(180)
 56608  	defer tls.Free(180)
 56609  
 56610  	*(*[10]SyscallCmd)(unsafe.Pointer(bp + 16)) = [10]SyscallCmd{
 56611  		{FzName: ts + 37307, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56612  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56613  		}{test_syscall_fault}))},
 56614  		{FzName: ts + 37313, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56615  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56616  		}{test_syscall_install}))},
 56617  		{FzName: ts + 37321, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56618  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56619  		}{test_syscall_uninstall}))},
 56620  		{FzName: ts + 7933, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56621  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56622  		}{test_syscall_reset}))},
 56623  		{FzName: ts + 37266, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56624  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56625  		}{test_syscall_errno}))},
 56626  		{FzName: ts + 13516, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56627  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56628  		}{test_syscall_exists}))},
 56629  		{FzName: ts + 37331, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56630  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56631  		}{test_syscall_list}))},
 56632  		{FzName: ts + 37336, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56633  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56634  		}{test_syscall_defaultvfs}))},
 56635  		{FzName: ts + 37347, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56636  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56637  		}{test_syscall_pagesize}))},
 56638  		{},
 56639  	}
 56640  
 56641  	var rc int32
 56642  	var pVfs uintptr = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 56643  
 56644  	if objc < 2 {
 56645  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+32982)
 56646  		return TCL_ERROR
 56647  	}
 56648  	if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion < 3 || (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FxSetSystemCall == uintptr(0) {
 56649  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+37356, 0))
 56650  		rc = TCL_ERROR
 56651  	} else {
 56652  		rc = tcl.XTcl_GetIndexFromObjStruct(tls, interp,
 56653  			*(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+16, int32(unsafe.Sizeof(SyscallCmd{})), ts+2014, 0, bp+176)
 56654  	}
 56655  	if rc != TCL_OK {
 56656  		return rc
 56657  	}
 56658  	return (*struct {
 56659  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56660  	})(unsafe.Pointer(&struct{ uintptr }{(*SyscallCmd)(unsafe.Pointer(bp + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 176)))*16)).FxCmd})).f(tls, clientData, interp, objc, objv)
 56661  }
 56662  
 56663  type SyscallCmd = struct {
 56664  	FzName uintptr
 56665  	FxCmd  uintptr
 56666  }
 56667  
 56668  func SqlitetestSyscall_Init(tls *libc.TLS, interp uintptr) int32 {
 56669  	bp := tls.Alloc(16)
 56670  	defer tls.Free(16)
 56671  
 56672  	*(*[1]SyscallCmd)(unsafe.Pointer(bp)) = [1]SyscallCmd{
 56673  		{FzName: ts + 37392, FxCmd: *(*uintptr)(unsafe.Pointer(&struct {
 56674  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 56675  		}{test_syscall}))},
 56676  	}
 56677  	var i int32
 56678  
 56679  	for i = 0; uint64(i) < uint64(unsafe.Sizeof([1]SyscallCmd{}))/uint64(unsafe.Sizeof(SyscallCmd{})); i++ {
 56680  		tcl.XTcl_CreateObjCommand(tls, interp, (*SyscallCmd)(unsafe.Pointer(bp+uintptr(i)*16)).FzName, (*SyscallCmd)(unsafe.Pointer(bp+uintptr(i)*16)).FxCmd, uintptr(0), uintptr(0))
 56681  	}
 56682  	return TCL_OK
 56683  }
 56684  
 56685  func sqlite3TestInit(tls *libc.TLS, interp uintptr) uintptr {
 56686  	bp := tls.Alloc(80)
 56687  	defer tls.Free(80)
 56688  
 56689  	{
 56690  		libc.Xgetrlimit(tls, RLIMIT_CORE, bp)
 56691  		(*rlimit)(unsafe.Pointer(bp)).Frlim_cur = (*rlimit)(unsafe.Pointer(bp)).Frlim_max
 56692  		libc.Xsetrlimit(tls, RLIMIT_CORE, bp)
 56693  
 56694  	}
 56695  
 56696  	if tcl.XTcl_GetCommandInfo(tls, interp, ts+14267, bp+16) == 0 {
 56697  		Sqlite3_Init(tls, interp)
 56698  	}
 56699  	Md5_Init(tls, interp)
 56700  	Sqliteconfig_Init(tls, interp)
 56701  	Sqlitetest1_Init(tls, interp)
 56702  	Sqlitetest2_Init(tls, interp)
 56703  	Sqlitetest3_Init(tls, interp)
 56704  	Sqlitetest4_Init(tls, interp)
 56705  	Sqlitetest5_Init(tls, interp)
 56706  	Sqlitetest6_Init(tls, interp)
 56707  	Sqlitetest7_Init(tls, interp)
 56708  	Sqlitetest8_Init(tls, interp)
 56709  	Sqlitetest9_Init(tls, interp)
 56710  	Sqlitetestasync_Init(tls, interp)
 56711  	Sqlitetest_autoext_Init(tls, interp)
 56712  	Sqlitetest_blob_Init(tls, interp)
 56713  	Sqlitetest_demovfs_Init(tls, interp)
 56714  	Sqlitetest_func_Init(tls, interp)
 56715  	Sqlitetest_hexio_Init(tls, interp)
 56716  	Sqlitetest_init_Init(tls, interp)
 56717  	Sqlitetest_malloc_Init(tls, interp)
 56718  	Sqlitetest_mutex_Init(tls, interp)
 56719  	Sqlitetestschema_Init(tls, interp)
 56720  	Sqlitetesttclvar_Init(tls, interp)
 56721  	Sqlitetestfs_Init(tls, interp)
 56722  	SqlitetestThread_Init(tls, interp)
 56723  	SqlitetestOnefile_Init(tls)
 56724  	SqlitetestOsinst_Init(tls, interp)
 56725  	Sqlitetestbackup_Init(tls, interp)
 56726  	Sqlitetestintarray_Init(tls, interp)
 56727  	Sqlitetestvfs_Init(tls, interp)
 56728  	Sqlitetestrtree_Init(tls, interp)
 56729  	Sqlitetestrtreedoc_Init(tls, interp)
 56730  	Sqlitequota_Init(tls, interp)
 56731  	Sqlitemultiplex_Init(tls, interp)
 56732  	SqliteSuperlock_Init(tls, interp)
 56733  	SqlitetestSyscall_Init(tls, interp)
 56734  	TestSession_Init(tls, interp)
 56735  	Fts5tcl_Init(tls, interp)
 56736  	SqliteRbu_Init(tls, interp)
 56737  	Sqlitetesttcl_Init(tls, interp)
 56738  
 56739  	TestExpert_Init(tls, interp)
 56740  	Sqlitetest_window_Init(tls, interp)
 56741  	Sqlitetestvdbecov_Init(tls, interp)
 56742  
 56743  	tcl.XTcl_CreateObjCommand(tls,
 56744  		interp, ts+37405, *(*uintptr)(unsafe.Pointer(&struct {
 56745  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 56746  		}{load_testfixture_extensions})), uintptr(0), uintptr(0))
 56747  	return uintptr(0)
 56748  }
 56749  
 56750  func load_testfixture_extensions(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 56751  	var slave uintptr
 56752  	if objc != 2 {
 56753  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+37433)
 56754  		return TCL_ERROR
 56755  	}
 56756  
 56757  	slave = tcl.XTcl_GetSlave(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 56758  	if !(slave != 0) {
 56759  		return TCL_ERROR
 56760  	}
 56761  
 56762  	sqlite3TestInit(tls, slave)
 56763  	return TCL_OK
 56764  }
 56765  
 56766  type tclvar_vtab1 = struct {
 56767  	Fbase   sqlite3_vtab
 56768  	Finterp uintptr
 56769  }
 56770  
 56771  type tclvar_vtab = tclvar_vtab1
 56772  type tclvar_cursor1 = struct {
 56773  	Fbase   sqlite3_vtab_cursor
 56774  	FpList1 uintptr
 56775  	FpList2 uintptr
 56776  	Fi1     int32
 56777  	Fi2     int32
 56778  }
 56779  
 56780  type tclvar_cursor = tclvar_cursor1
 56781  
 56782  func tclvarConnect(tls *libc.TLS, db uintptr, pAux uintptr, argc int32, argv uintptr, ppVtab uintptr, pzErr uintptr) int32 {
 56783  	var pVtab uintptr
 56784  	pVtab = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_vtab{})))
 56785  	if pVtab == uintptr(0) {
 56786  		return SQLITE_NOMEM
 56787  	}
 56788  	*(*uintptr)(unsafe.Pointer(ppVtab)) = pVtab
 56789  	(*tclvar_vtab)(unsafe.Pointer(pVtab)).Finterp = pAux
 56790  	sqlite3.Xsqlite3_declare_vtab(tls, db, uintptr(unsafe.Pointer(&zSchema)))
 56791  	return SQLITE_OK
 56792  }
 56793  
 56794  var zSchema = *(*[100]int8)(unsafe.Pointer(ts + 37439))
 56795  
 56796  func tclvarDisconnect(tls *libc.TLS, pVtab uintptr) int32 {
 56797  	sqlite3.Xsqlite3_free(tls, pVtab)
 56798  	return SQLITE_OK
 56799  }
 56800  
 56801  func tclvarOpen(tls *libc.TLS, pVTab uintptr, ppCursor uintptr) int32 {
 56802  	var pCur uintptr
 56803  	pCur = sqlite3.Xsqlite3MallocZero(tls, uint64(unsafe.Sizeof(tclvar_cursor{})))
 56804  	*(*uintptr)(unsafe.Pointer(ppCursor)) = pCur
 56805  	return SQLITE_OK
 56806  }
 56807  
 56808  func tclvarClose(tls *libc.TLS, cur uintptr) int32 {
 56809  	var pCur uintptr = cur
 56810  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 56811  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56812  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 56813  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56814  				tcl.XTclFreeObj(tls, _objPtr)
 56815  			}
 56816  		}
 56817  	}
 56818  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 56819  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56820  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56821  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56822  				tcl.XTclFreeObj(tls, _objPtr)
 56823  			}
 56824  		}
 56825  	}
 56826  	sqlite3.Xsqlite3_free(tls, pCur)
 56827  	return SQLITE_OK
 56828  }
 56829  
 56830  func next2(tls *libc.TLS, interp uintptr, pCur uintptr, pObj uintptr) int32 {
 56831  	bp := tls.Alloc(4)
 56832  	defer tls.Free(4)
 56833  
 56834  	var p uintptr
 56835  
 56836  	if pObj != 0 {
 56837  		if !(int32((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2) != 0) {
 56838  			p = tcl.XTcl_NewStringObj(tls, ts+37539, -1)
 56839  			(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 56840  			tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, pObj)
 56841  			tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 56842  			for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56843  				var _objPtr uintptr = p
 56844  				if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56845  					tcl.XTclFreeObj(tls, _objPtr)
 56846  				}
 56847  			}
 56848  			(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = tcl.XTcl_GetObjResult(tls, interp)
 56849  			(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2)).FrefCount++
 56850  
 56851  		} else {
 56852  			*(*int32)(unsafe.Pointer(bp)) = 0
 56853  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2++
 56854  			tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, bp)
 56855  			if (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 >= *(*int32)(unsafe.Pointer(bp)) {
 56856  				for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56857  					var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56858  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56859  						tcl.XTclFreeObj(tls, _objPtr)
 56860  					}
 56861  				}
 56862  				(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 56863  				(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 56864  				return 0
 56865  			}
 56866  		}
 56867  	}
 56868  
 56869  	return 1
 56870  }
 56871  
 56872  func tclvarNext(tls *libc.TLS, cur uintptr) int32 {
 56873  	bp := tls.Alloc(16)
 56874  	defer tls.Free(16)
 56875  
 56876  	*(*int32)(unsafe.Pointer(bp)) = 0
 56877  	var ok int32 = 0
 56878  
 56879  	var pCur uintptr = cur
 56880  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 56881  
 56882  	tcl.XTcl_ListObjLength(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, bp)
 56883  	for !(ok != 0) && (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 < *(*int32)(unsafe.Pointer(bp)) {
 56884  		tcl.XTcl_ListObjIndex(tls, uintptr(0), (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+8)
 56885  		ok = next2(tls, interp, pCur, *(*uintptr)(unsafe.Pointer(bp + 8)))
 56886  		if !(ok != 0) {
 56887  			(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1++
 56888  		}
 56889  	}
 56890  
 56891  	return 0
 56892  }
 56893  
 56894  func tclvarFilter(tls *libc.TLS, pVtabCursor uintptr, idxNum int32, idxStr uintptr, argc int32, argv uintptr) int32 {
 56895  	var pCur uintptr = pVtabCursor
 56896  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(pVtabCursor)).FpVtab)).Finterp
 56897  	var p uintptr = tcl.XTcl_NewStringObj(tls, ts+37551, -1)
 56898  
 56899  	var zEq uintptr = ts + 584
 56900  	var zMatch uintptr = ts + 584
 56901  	var zGlob uintptr = ts + 584
 56902  	var zRegexp uintptr = ts + 584
 56903  	var zLike uintptr = ts + 584
 56904  	var i int32
 56905  
 56906  	for i = 0; *(*int8)(unsafe.Pointer(idxStr + uintptr(i))) != 0; i++ {
 56907  		switch int32(*(*int8)(unsafe.Pointer(idxStr + uintptr(i)))) {
 56908  		case 'e':
 56909  			zEq = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56910  			break
 56911  		case 'm':
 56912  			zMatch = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56913  			break
 56914  		case 'g':
 56915  			zGlob = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56916  			break
 56917  		case 'r':
 56918  			zRegexp = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56919  			break
 56920  		case 'l':
 56921  			zLike = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + uintptr(i)*8)))
 56922  			break
 56923  		default:
 56924  		}
 56925  	}
 56926  
 56927  	(*Tcl_Obj)(unsafe.Pointer(p)).FrefCount++
 56928  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zEq, -1))
 56929  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zMatch, -1))
 56930  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zGlob, -1))
 56931  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zRegexp, -1))
 56932  	tcl.XTcl_ListObjAppendElement(tls, uintptr(0), p, tcl.XTcl_NewStringObj(tls, zLike, -1))
 56933  
 56934  	tcl.XTcl_EvalObjEx(tls, interp, p, TCL_EVAL_GLOBAL)
 56935  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 != 0 {
 56936  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 56937  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1
 56938  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56939  				tcl.XTclFreeObj(tls, _objPtr)
 56940  			}
 56941  		}
 56942  	}
 56943  	if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 56944  		for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 56945  			var _objPtr uintptr = (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2
 56946  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56947  				tcl.XTclFreeObj(tls, _objPtr)
 56948  			}
 56949  		}
 56950  		(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 = uintptr(0)
 56951  	}
 56952  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1 = 0
 56953  	(*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2 = 0
 56954  	(*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1 = tcl.XTcl_GetObjResult(tls, interp)
 56955  	(*Tcl_Obj)(unsafe.Pointer((*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1)).FrefCount++
 56956  
 56957  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 56958  		var _objPtr uintptr = p
 56959  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 56960  			tcl.XTclFreeObj(tls, _objPtr)
 56961  		}
 56962  	}
 56963  	return tclvarNext(tls, pVtabCursor)
 56964  }
 56965  
 56966  func tclvarColumn(tls *libc.TLS, cur uintptr, ctx uintptr, i int32) int32 {
 56967  	bp := tls.Alloc(32)
 56968  	defer tls.Free(32)
 56969  
 56970  	var z1 uintptr
 56971  	var z2 uintptr = ts + 584
 56972  	var pCur uintptr = cur
 56973  	var interp uintptr = (*tclvar_vtab)(unsafe.Pointer((*sqlite3_vtab_cursor)(unsafe.Pointer(cur)).FpVtab)).Finterp
 56974  
 56975  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList1, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi1, bp+16)
 56976  	tcl.XTcl_ListObjIndex(tls, interp, (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2, (*tclvar_cursor)(unsafe.Pointer(pCur)).Fi2, bp+24)
 56977  	z1 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 16)))
 56978  	if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 56979  		z2 = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(bp + 24)))
 56980  	}
 56981  	switch i {
 56982  	case 0:
 56983  		{
 56984  			sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 56985  			break
 56986  
 56987  		}
 56988  	case 1:
 56989  		{
 56990  			sqlite3.Xsqlite3_result_text(tls, ctx, z2, -1, libc.UintptrFromInt32(-1))
 56991  			break
 56992  
 56993  		}
 56994  	case 2:
 56995  		{
 56996  			var pVal uintptr = tcl.XTcl_GetVar2Ex(tls, interp, z1, func() uintptr {
 56997  				if *(*int8)(unsafe.Pointer(z2)) != 0 {
 56998  					return z2
 56999  				}
 57000  				return uintptr(0)
 57001  			}(), TCL_GLOBAL_ONLY)
 57002  			sqlite3.Xsqlite3_result_text(tls, ctx, tcl.XTcl_GetString(tls, pVal), -1, libc.UintptrFromInt32(-1))
 57003  			break
 57004  
 57005  		}
 57006  	case 3:
 57007  		{
 57008  			var z3 uintptr
 57009  			if *(*uintptr)(unsafe.Pointer(bp + 24)) != 0 {
 57010  				z3 = sqlite3.Xsqlite3_mprintf(tls, ts+37569, libc.VaList(bp, z1, z2))
 57011  				sqlite3.Xsqlite3_result_text(tls, ctx, z3, -1, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sqlite3.Xsqlite3_free})))
 57012  			} else {
 57013  				sqlite3.Xsqlite3_result_text(tls, ctx, z1, -1, libc.UintptrFromInt32(-1))
 57014  			}
 57015  			break
 57016  
 57017  		}
 57018  	}
 57019  	return SQLITE_OK
 57020  }
 57021  
 57022  func tclvarRowid(tls *libc.TLS, cur uintptr, pRowid uintptr) int32 {
 57023  	*(*sqlite_int64)(unsafe.Pointer(pRowid)) = int64(0)
 57024  	return SQLITE_OK
 57025  }
 57026  
 57027  func tclvarEof(tls *libc.TLS, cur uintptr) int32 {
 57028  	var pCur uintptr = cur
 57029  	return func() int32 {
 57030  		if (*tclvar_cursor)(unsafe.Pointer(pCur)).FpList2 != 0 {
 57031  			return 0
 57032  		}
 57033  		return 1
 57034  	}()
 57035  }
 57036  
 57037  func tclvarAddToIdxstr(tls *libc.TLS, zStr uintptr, x int8) int32 {
 57038  	var i int32
 57039  	for i = 0; *(*int8)(unsafe.Pointer(zStr + uintptr(i))) != 0; i++ {
 57040  		if int32(*(*int8)(unsafe.Pointer(zStr + uintptr(i)))) == int32(x) {
 57041  			return 1
 57042  		}
 57043  	}
 57044  	*(*int8)(unsafe.Pointer(zStr + uintptr(i))) = x
 57045  	*(*int8)(unsafe.Pointer(zStr + uintptr(i+1))) = int8(0)
 57046  	return 0
 57047  }
 57048  
 57049  func tclvarSetOmit(tls *libc.TLS, interp uintptr) int32 {
 57050  	bp := tls.Alloc(4)
 57051  	defer tls.Free(4)
 57052  
 57053  	var rc int32
 57054  	*(*int32)(unsafe.Pointer(bp)) = 0
 57055  	var pRes uintptr
 57056  	rc = tcl.XTcl_Eval(tls, interp,
 57057  		ts+37576)
 57058  	if rc == TCL_OK {
 57059  		pRes = tcl.XTcl_GetObjResult(tls, interp)
 57060  		rc = tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), pRes, bp)
 57061  	}
 57062  	return libc.Bool32(rc == TCL_OK && *(*int32)(unsafe.Pointer(bp)) != 0)
 57063  }
 57064  
 57065  func tclvarBestIndex(tls *libc.TLS, tab uintptr, pIdxInfo uintptr) int32 {
 57066  	var pTab uintptr = tab
 57067  	var ii int32
 57068  	var zStr uintptr = sqlite3.Xsqlite3_malloc(tls, 32)
 57069  	var iStr int32 = 0
 57070  
 57071  	if zStr == uintptr(0) {
 57072  		return SQLITE_NOMEM
 57073  	}
 57074  	*(*int8)(unsafe.Pointer(zStr)) = int8(0)
 57075  
 57076  	for ii = 0; ii < (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FnConstraint; ii++ {
 57077  		var pCons uintptr = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraint + uintptr(ii)*12
 57078  		var pUsage uintptr
 57079  
 57080  		pUsage = (*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FaConstraintUsage + uintptr(ii)*8
 57081  		if (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fusable != 0 {
 57082  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_EQ && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57083  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('e')) {
 57084  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57085  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(0)
 57086  				}
 57087  			}
 57088  
 57089  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_MATCH && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 0 {
 57090  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('m')) {
 57091  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57092  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(1)
 57093  				}
 57094  			}
 57095  
 57096  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_GLOB && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57097  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('g')) {
 57098  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57099  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57100  				}
 57101  			}
 57102  
 57103  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_REGEXP && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57104  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('r')) {
 57105  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57106  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57107  				}
 57108  			}
 57109  
 57110  			if int32((*sqlite3_index_constraint)(unsafe.Pointer(pCons)).Fop) == SQLITE_INDEX_CONSTRAINT_LIKE && (*sqlite3_index_constraint)(unsafe.Pointer(pCons)).FiColumn == 2 {
 57111  				if 0 == tclvarAddToIdxstr(tls, zStr, int8('l')) {
 57112  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).FargvIndex = libc.PreIncInt32(&iStr, 1)
 57113  					(*sqlite3_index_constraint_usage)(unsafe.Pointer(pUsage)).Fomit = uint8(tclvarSetOmit(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp))
 57114  				}
 57115  			}
 57116  		}
 57117  	}
 57118  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FidxStr = zStr
 57119  	(*sqlite3_index_info)(unsafe.Pointer(pIdxInfo)).FneedToFreeIdxStr = 1
 57120  
 57121  	return SQLITE_OK
 57122  }
 57123  
 57124  func tclvarUpdate(tls *libc.TLS, tab uintptr, argc int32, argv uintptr, pRowid uintptr) int32 {
 57125  	var pTab uintptr = tab
 57126  	if argc == 1 {
 57127  		var zVar uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57128  		tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zVar, uintptr(0), TCL_GLOBAL_ONLY)
 57129  		return SQLITE_OK
 57130  	}
 57131  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_NULL {
 57132  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57133  		var zName uintptr
 57134  		if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8))) != SQLITE_TEXT {
 57135  			(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37637, 0)
 57136  			return SQLITE_ERROR
 57137  		}
 57138  		zName = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 5*8)))
 57139  		if zValue != 0 {
 57140  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57141  		} else {
 57142  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zName, uintptr(0), TCL_GLOBAL_ONLY)
 57143  		}
 57144  		return SQLITE_OK
 57145  	}
 57146  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv))) == SQLITE_TEXT &&
 57147  		sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8))) == SQLITE_TEXT {
 57148  		var zOldName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv)))
 57149  		var zNewName uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)))
 57150  		var zValue uintptr = sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(argv + 4*8)))
 57151  
 57152  		if libc.Xstrcmp(tls, zOldName, zNewName) != 0 || zValue == uintptr(0) {
 57153  			tcl.XTcl_UnsetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zOldName, uintptr(0), TCL_GLOBAL_ONLY)
 57154  		}
 57155  		if zValue != uintptr(0) {
 57156  			tcl.XTcl_SetVar2(tls, (*tclvar_vtab)(unsafe.Pointer(pTab)).Finterp, zNewName, uintptr(0), zValue, TCL_GLOBAL_ONLY)
 57157  		}
 57158  		return SQLITE_OK
 57159  	}
 57160  	(*sqlite3_vtab)(unsafe.Pointer(tab)).FzErrMsg = sqlite3.Xsqlite3_mprintf(tls, ts+37672, 0)
 57161  	return SQLITE_ERROR
 57162  }
 57163  
 57164  var tclvarModule = sqlite3_module{
 57165  	FxCreate:     0,
 57166  	FxConnect:    0,
 57167  	FxBestIndex:  0,
 57168  	FxDisconnect: 0,
 57169  	FxDestroy:    0,
 57170  	FxOpen:       0,
 57171  	FxClose:      0,
 57172  	FxFilter:     0,
 57173  	FxNext:       0,
 57174  	FxEof:        0,
 57175  	FxColumn:     0,
 57176  	FxRowid:      0,
 57177  	FxUpdate:     0,
 57178  }
 57179  
 57180  func register_tclvar_module(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57181  	bp := tls.Alloc(8)
 57182  	defer tls.Free(8)
 57183  
 57184  	var rc int32 = TCL_OK
 57185  
 57186  	if objc != 2 {
 57187  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 57188  		return TCL_ERROR
 57189  	}
 57190  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 57191  		return TCL_ERROR
 57192  	}
 57193  	sqlite3.Xsqlite3_create_module(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+29859, uintptr(unsafe.Pointer(&tclvarModule)), interp)
 57194  	rc = tcl.XTcl_Eval(tls, interp,
 57195  		ts+37703)
 57196  	return rc
 57197  }
 57198  
 57199  func Sqlitetesttclvar_Init(tls *libc.TLS, interp uintptr) int32 {
 57200  	var i int32
 57201  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd13))/uint64(unsafe.Sizeof(struct {
 57202  		FzName      uintptr
 57203  		FxProc      uintptr
 57204  		FclientData uintptr
 57205  	}{})); i++ {
 57206  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd13[i].FzName,
 57207  			aObjCmd13[i].FxProc, aObjCmd13[i].FclientData, uintptr(0))
 57208  	}
 57209  	return TCL_OK
 57210  }
 57211  
 57212  var aObjCmd13 = [1]struct {
 57213  	FzName      uintptr
 57214  	FxProc      uintptr
 57215  	FclientData uintptr
 57216  }{
 57217  	{FzName: ts + 38239, FxProc: 0},
 57218  }
 57219  
 57220  type SqlThread1 = struct {
 57221  	Fparent   Tcl_ThreadId
 57222  	Finterp   uintptr
 57223  	FzScript  uintptr
 57224  	FzVarname uintptr
 57225  }
 57226  
 57227  type SqlThread = SqlThread1
 57228  
 57229  type EvalEvent1 = struct {
 57230  	Fbase    Tcl_Event
 57231  	FzScript uintptr
 57232  	Finterp  uintptr
 57233  }
 57234  
 57235  type EvalEvent = EvalEvent1
 57236  
 57237  func tclScriptEvent(tls *libc.TLS, evPtr uintptr, flags int32) int32 {
 57238  	var rc int32
 57239  	var p uintptr = evPtr
 57240  	rc = tcl.XTcl_Eval(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp, (*EvalEvent)(unsafe.Pointer(p)).FzScript)
 57241  	if rc != TCL_OK {
 57242  		tcl.XTcl_BackgroundError(tls, (*EvalEvent)(unsafe.Pointer(p)).Finterp)
 57243  	}
 57244  	_ = flags
 57245  	return 1
 57246  }
 57247  
 57248  func postToParent(tls *libc.TLS, p uintptr, pScript uintptr) {
 57249  	bp := tls.Alloc(4)
 57250  	defer tls.Free(4)
 57251  
 57252  	var pEvent uintptr
 57253  	var zMsg uintptr
 57254  
 57255  	zMsg = tcl.XTcl_GetStringFromObj(tls, pScript, bp)
 57256  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp)))+uint64(1)))
 57257  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57258  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57259  		f func(*libc.TLS, uintptr, int32) int32
 57260  	}{tclScriptEvent}))
 57261  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57262  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp))+1))
 57263  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57264  
 57265  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57266  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57267  }
 57268  
 57269  func tclScriptThread(tls *libc.TLS, pSqlThread ClientData) {
 57270  	var interp uintptr
 57271  	var pRes uintptr
 57272  	var pList uintptr
 57273  	var rc int32
 57274  	var p uintptr = pSqlThread
 57275  
 57276  	interp = tcl.XTcl_CreateInterp(tls)
 57277  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57278  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57279  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57280  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57281  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57282  	}{sqlthread_proc})), pSqlThread, uintptr(0))
 57283  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57284  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57285  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57286  	tcl.XTcl_CreateObjCommand(tls, interp,
 57287  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57288  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57289  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57290  	tcl.XTcl_CreateObjCommand(tls, interp,
 57291  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57292  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57293  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57294  	Sqlitetest1_Init(tls, interp)
 57295  	Sqlitetest_mutex_Init(tls, interp)
 57296  	Sqlite3_Init(tls, interp)
 57297  
 57298  	rc = tcl.XTcl_Eval(tls, interp, (*SqlThread)(unsafe.Pointer(p)).FzScript)
 57299  	pRes = tcl.XTcl_GetObjResult(tls, interp)
 57300  	pList = tcl.XTcl_NewObj(tls)
 57301  	(*Tcl_Obj)(unsafe.Pointer(pList)).FrefCount++
 57302  	(*Tcl_Obj)(unsafe.Pointer(pRes)).FrefCount++
 57303  
 57304  	if rc != TCL_OK {
 57305  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+9674, -1))
 57306  		tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57307  		postToParent(tls, p, pList)
 57308  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57309  			var _objPtr uintptr = pList
 57310  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57311  				tcl.XTclFreeObj(tls, _objPtr)
 57312  			}
 57313  		}
 57314  		pList = tcl.XTcl_NewObj(tls)
 57315  	}
 57316  
 57317  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, ts+38367, -1))
 57318  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, tcl.XTcl_NewStringObj(tls, (*SqlThread)(unsafe.Pointer(p)).FzVarname, -1))
 57319  	tcl.XTcl_ListObjAppendElement(tls, interp, pList, pRes)
 57320  	postToParent(tls, p, pList)
 57321  
 57322  	tcl.XTcl_Free(tls, p)
 57323  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 57324  		var _objPtr uintptr = pList
 57325  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57326  			tcl.XTclFreeObj(tls, _objPtr)
 57327  		}
 57328  	}
 57329  	for __ccgo2 := true; __ccgo2; __ccgo2 = 0 != 0 {
 57330  		var _objPtr uintptr = pRes
 57331  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57332  			tcl.XTclFreeObj(tls, _objPtr)
 57333  		}
 57334  	}
 57335  	tcl.XTcl_DeleteInterp(tls, interp)
 57336  	for tcl.XTcl_DoOneEvent(tls, libc.CplInt32(int32(1)<<1)|int32(1)<<1) != 0 {
 57337  	}
 57338  	tcl.XTcl_ExitThread(tls, 0)
 57339  
 57340  }
 57341  
 57342  func sqlthread_spawn(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57343  	bp := tls.Alloc(32)
 57344  	defer tls.Free(32)
 57345  
 57346  	var pNew uintptr
 57347  	var rc int32
 57348  
 57349  	var zVarname uintptr
 57350  
 57351  	var zScript uintptr
 57352  
 57353  	var nStack int32 = 0
 57354  	var flags int32 = 0000
 57355  
 57356  	_ = clientData
 57357  	_ = objc
 57358  
 57359  	zVarname = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57360  	zScript = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+20)
 57361  
 57362  	pNew = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(SqlThread{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(*(*int32)(unsafe.Pointer(bp + 20)))+uint64(2)))
 57363  	(*SqlThread)(unsafe.Pointer(pNew)).FzVarname = pNew + 1*32
 57364  	(*SqlThread)(unsafe.Pointer(pNew)).FzScript = (*SqlThread)(unsafe.Pointer(pNew)).FzVarname + uintptr(*(*int32)(unsafe.Pointer(bp + 16))+1)
 57365  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzVarname, zVarname, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57366  	libc.Xmemcpy(tls, (*SqlThread)(unsafe.Pointer(pNew)).FzScript, zScript, uint64(*(*int32)(unsafe.Pointer(bp + 20))+1))
 57367  	(*SqlThread)(unsafe.Pointer(pNew)).Fparent = tcl.XTcl_GetCurrentThread(tls)
 57368  	(*SqlThread)(unsafe.Pointer(pNew)).Finterp = interp
 57369  
 57370  	rc = tcl.XTcl_CreateThread(tls, bp+24, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{tclScriptThread})), pNew, nStack, flags)
 57371  	if rc != TCL_OK {
 57372  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38371, 0))
 57373  		tcl.XTcl_Free(tls, pNew)
 57374  		return TCL_ERROR
 57375  	}
 57376  
 57377  	return TCL_OK
 57378  }
 57379  
 57380  func sqlthread_parent(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57381  	bp := tls.Alloc(20)
 57382  	defer tls.Free(20)
 57383  
 57384  	var pEvent uintptr
 57385  	var zMsg uintptr
 57386  
 57387  	var p uintptr = clientData
 57388  
 57389  	_ = objc
 57390  
 57391  	if p == uintptr(0) {
 57392  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38399, 0))
 57393  		return TCL_ERROR
 57394  	}
 57395  
 57396  	zMsg = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+16)
 57397  	pEvent = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(EvalEvent{}))+uint64(*(*int32)(unsafe.Pointer(bp + 16)))+uint64(1)))
 57398  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.FnextPtr = uintptr(0)
 57399  	(*EvalEvent)(unsafe.Pointer(pEvent)).Fbase.Fproc = *(*uintptr)(unsafe.Pointer(&struct {
 57400  		f func(*libc.TLS, uintptr, int32) int32
 57401  	}{tclScriptEvent}))
 57402  	(*EvalEvent)(unsafe.Pointer(pEvent)).FzScript = pEvent + 1*32
 57403  	libc.Xmemcpy(tls, (*EvalEvent)(unsafe.Pointer(pEvent)).FzScript, zMsg, uint64(*(*int32)(unsafe.Pointer(bp + 16))+1))
 57404  	(*EvalEvent)(unsafe.Pointer(pEvent)).Finterp = (*SqlThread)(unsafe.Pointer(p)).Finterp
 57405  	tcl.XTcl_ThreadQueueEvent(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent, pEvent, TCL_QUEUE_TAIL)
 57406  	tcl.XTcl_ThreadAlert(tls, (*SqlThread)(unsafe.Pointer(p)).Fparent)
 57407  
 57408  	return TCL_OK
 57409  }
 57410  
 57411  func xBusy(tls *libc.TLS, pArg uintptr, nBusy int32) int32 {
 57412  	_ = pArg
 57413  	_ = nBusy
 57414  	sqlite3.Xsqlite3_sleep(tls, 50)
 57415  	return 1
 57416  }
 57417  
 57418  func sqlthread_open(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57419  	bp := tls.Alloc(124)
 57420  	defer tls.Free(124)
 57421  
 57422  	var zFilename uintptr
 57423  
 57424  	_ = clientData
 57425  	_ = objc
 57426  
 57427  	zFilename = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57428  	sqlite3.Xsqlite3_open(tls, zFilename, bp+16)
 57429  	Md5_Register(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), uintptr(0), uintptr(0))
 57430  	sqlite3.Xsqlite3_busy_handler(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), *(*uintptr)(unsafe.Pointer(&struct {
 57431  		f func(*libc.TLS, uintptr, int32) int32
 57432  	}{xBusy})), uintptr(0))
 57433  
 57434  	if sqlite3TestMakePointerStr(tls, interp, bp+24, *(*uintptr)(unsafe.Pointer(bp + 16))) != 0 {
 57435  		return TCL_ERROR
 57436  	}
 57437  	tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, bp+24, 0))
 57438  
 57439  	return TCL_OK
 57440  }
 57441  
 57442  func sqlthread_id(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57443  	var id Tcl_ThreadId = tcl.XTcl_GetCurrentThread(tls)
 57444  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(id)))
 57445  	_ = clientData
 57446  	_ = objc
 57447  	_ = objv
 57448  	return TCL_OK
 57449  }
 57450  
 57451  func sqlthread_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57452  	bp := tls.Alloc(164)
 57453  	defer tls.Free(164)
 57454  
 57455  	*(*[5]struct {
 57456  		FzName       uintptr
 57457  		FxProc       uintptr
 57458  		FnArg        int32
 57459  		F__ccgo_pad1 [4]byte
 57460  		FzUsage      uintptr
 57461  	})(unsafe.Pointer(bp)) = [5]struct {
 57462  		FzName       uintptr
 57463  		FxProc       uintptr
 57464  		FnArg        int32
 57465  		F__ccgo_pad1 [4]byte
 57466  		FzUsage      uintptr
 57467  	}{
 57468  		{FzName: ts + 38416, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57469  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57470  		}{sqlthread_parent})), FnArg: 1, FzUsage: ts + 10187},
 57471  		{FzName: ts + 38423, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57472  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57473  		}{sqlthread_spawn})), FnArg: 2, FzUsage: ts + 38429},
 57474  		{FzName: ts + 37033, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57475  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57476  		}{sqlthread_open})), FnArg: 1, FzUsage: ts + 38444},
 57477  		{FzName: ts + 38451, FxProc: *(*uintptr)(unsafe.Pointer(&struct {
 57478  			f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57479  		}{sqlthread_id})), FzUsage: ts + 584},
 57480  		{},
 57481  	}
 57482  	var pSub uintptr
 57483  	var rc int32
 57484  
 57485  	if objc < 2 {
 57486  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2523)
 57487  		return TCL_ERROR
 57488  	}
 57489  
 57490  	rc = tcl.XTcl_GetIndexFromObjStruct(tls,
 57491  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp, int32(unsafe.Sizeof(struct {
 57492  			FzName       uintptr
 57493  			FxProc       uintptr
 57494  			FnArg        int32
 57495  			F__ccgo_pad1 [4]byte
 57496  			FzUsage      uintptr
 57497  		}{})), ts+2014, 0, bp+160)
 57498  	if rc != TCL_OK {
 57499  		return rc
 57500  	}
 57501  	pSub = bp + uintptr(*(*int32)(unsafe.Pointer(bp + 160)))*32
 57502  
 57503  	if objc < (*struct {
 57504  		FzName       uintptr
 57505  		FxProc       uintptr
 57506  		FnArg        int32
 57507  		F__ccgo_pad1 [4]byte
 57508  		FzUsage      uintptr
 57509  	})(unsafe.Pointer(pSub)).FnArg+2 {
 57510  		tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, (*struct {
 57511  			FzName       uintptr
 57512  			FxProc       uintptr
 57513  			FnArg        int32
 57514  			F__ccgo_pad1 [4]byte
 57515  			FzUsage      uintptr
 57516  		})(unsafe.Pointer(pSub)).FzUsage)
 57517  		return TCL_ERROR
 57518  	}
 57519  
 57520  	return (*struct {
 57521  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57522  	})(unsafe.Pointer(&struct{ uintptr }{(*struct {
 57523  		FzName       uintptr
 57524  		FxProc       uintptr
 57525  		FnArg        int32
 57526  		F__ccgo_pad1 [4]byte
 57527  		FzUsage      uintptr
 57528  	})(unsafe.Pointer(pSub)).FxProc})).f(tls, clientData, interp, objc, objv)
 57529  }
 57530  
 57531  func clock_seconds_proc(tls *libc.TLS, clientData ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 57532  	bp := tls.Alloc(16)
 57533  	defer tls.Free(16)
 57534  
 57535  	tcl.XTcl_GetTime(tls, bp)
 57536  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32((*Tcl_Time)(unsafe.Pointer(bp)).Fsec)))
 57537  	_ = clientData
 57538  	_ = objc
 57539  	_ = objv
 57540  	return TCL_OK
 57541  }
 57542  
 57543  type UnlockNotification1 = struct {
 57544  	Ffired       int32
 57545  	F__ccgo_pad1 [4]byte
 57546  	Fcond        pthread_cond_t
 57547  	Fmutex       pthread_mutex_t
 57548  }
 57549  
 57550  type UnlockNotification = UnlockNotification1
 57551  
 57552  func unlock_notify_cb(tls *libc.TLS, apArg uintptr, nArg int32) {
 57553  	var i int32
 57554  	for i = 0; i < nArg; i++ {
 57555  		var p uintptr = *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))
 57556  		libc.Xpthread_mutex_lock(tls, p+16)
 57557  		(*UnlockNotification)(unsafe.Pointer(p)).Ffired = 1
 57558  		libc.Xpthread_cond_signal(tls, p+8)
 57559  		libc.Xpthread_mutex_unlock(tls, p+16)
 57560  	}
 57561  }
 57562  
 57563  func wait_for_unlock_notify(tls *libc.TLS, db uintptr) int32 {
 57564  	bp := tls.Alloc(24)
 57565  	defer tls.Free(24)
 57566  
 57567  	var rc int32
 57568  
 57569  	(*UnlockNotification)(unsafe.Pointer(bp)).Ffired = 0
 57570  	libc.Xpthread_mutex_init(tls, bp+16, uintptr(0))
 57571  	libc.Xpthread_cond_init(tls, bp+8, uintptr(0))
 57572  
 57573  	rc = sqlite3.Xsqlite3_unlock_notify(tls, db, *(*uintptr)(unsafe.Pointer(&struct {
 57574  		f func(*libc.TLS, uintptr, int32)
 57575  	}{unlock_notify_cb})), bp)
 57576  
 57577  	if rc == SQLITE_OK {
 57578  		libc.Xpthread_mutex_lock(tls, bp+16)
 57579  		if !((*UnlockNotification)(unsafe.Pointer(bp)).Ffired != 0) {
 57580  			libc.Xpthread_cond_wait(tls, bp+8, bp+16)
 57581  		}
 57582  		libc.Xpthread_mutex_unlock(tls, bp+16)
 57583  	}
 57584  
 57585  	libc.Xpthread_cond_destroy(tls, bp+8)
 57586  	libc.Xpthread_mutex_destroy(tls, bp+16)
 57587  
 57588  	return rc
 57589  }
 57590  
 57591  func sqlite3_blocking_step(tls *libc.TLS, pStmt uintptr) int32 {
 57592  	var rc int32
 57593  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_step(tls, pStmt)) {
 57594  		rc = wait_for_unlock_notify(tls, sqlite3.Xsqlite3_db_handle(tls, pStmt))
 57595  		if rc != SQLITE_OK {
 57596  			break
 57597  		}
 57598  		sqlite3.Xsqlite3_reset(tls, pStmt)
 57599  	}
 57600  	return rc
 57601  }
 57602  
 57603  func sqlite3_blocking_prepare_v2(tls *libc.TLS, db uintptr, zSql uintptr, nSql int32, ppStmt uintptr, pz uintptr) int32 {
 57604  	var rc int32
 57605  	for SQLITE_LOCKED == libc.AssignInt32(&rc, sqlite3.Xsqlite3_prepare_v2(tls, db, zSql, nSql, ppStmt, pz)) {
 57606  		rc = wait_for_unlock_notify(tls, db)
 57607  		if rc != SQLITE_OK {
 57608  			break
 57609  		}
 57610  	}
 57611  	return rc
 57612  }
 57613  
 57614  func blocking_step_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57615  	var pStmt uintptr
 57616  	var rc int32
 57617  
 57618  	if objc != 2 {
 57619  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+17042)
 57620  		return TCL_ERROR
 57621  	}
 57622  
 57623  	pStmt = sqlite3TestTextToPtr(tls, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))))
 57624  	rc = sqlite3_blocking_step(tls, pStmt)
 57625  
 57626  	tcl.XTcl_SetResult(tls, interp, sqlite3.Xsqlite3ErrName(tls, rc), uintptr(0))
 57627  	return TCL_OK
 57628  }
 57629  
 57630  func blocking_prepare_v2_proc(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 57631  	bp := tls.Alloc(162)
 57632  	defer tls.Free(162)
 57633  
 57634  	var zSql uintptr
 57635  
 57636  	*(*uintptr)(unsafe.Pointer(bp + 104)) = uintptr(0)
 57637  	*(*uintptr)(unsafe.Pointer(bp + 96)) = uintptr(0)
 57638  
 57639  	var rc int32
 57640  	var isBlocking int32 = libc.BoolInt32(!(clientData == uintptr(0)))
 57641  
 57642  	if objc != 5 && objc != 4 {
 57643  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+14949,
 57644  			tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))), ts+17088, 0))
 57645  		return TCL_ERROR
 57646  	}
 57647  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+80) != 0 {
 57648  		return TCL_ERROR
 57649  	}
 57650  	zSql = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 57651  	if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+88) != 0 {
 57652  		return TCL_ERROR
 57653  	}
 57654  
 57655  	if isBlocking != 0 {
 57656  		rc = sqlite3_blocking_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 57657  	} else {
 57658  		rc = sqlite3.Xsqlite3_prepare_v2(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), zSql, *(*int32)(unsafe.Pointer(bp + 88)), bp+96, bp+104)
 57659  	}
 57660  
 57661  	if *(*uintptr)(unsafe.Pointer(bp + 104)) != 0 && objc >= 5 {
 57662  		if *(*int32)(unsafe.Pointer(bp + 88)) >= 0 {
 57663  			*(*int32)(unsafe.Pointer(bp + 88)) = int32(int64(*(*int32)(unsafe.Pointer(bp + 88))) - (int64(*(*uintptr)(unsafe.Pointer(bp + 104)))-int64(zSql))/1)
 57664  		}
 57665  		tcl.XTcl_ObjSetVar2(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), uintptr(0), tcl.XTcl_NewStringObj(tls, *(*uintptr)(unsafe.Pointer(bp + 104)), *(*int32)(unsafe.Pointer(bp + 88))), 0)
 57666  	}
 57667  	if rc != SQLITE_OK {
 57668  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([50]int8{})), bp+112, ts+38454, libc.VaList(bp+32, sqlite3.Xsqlite3ErrName(tls, rc)))
 57669  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+40, bp+112, sqlite3.Xsqlite3_errmsg(tls, *(*uintptr)(unsafe.Pointer(bp + 80))), 0))
 57670  		return TCL_ERROR
 57671  	}
 57672  
 57673  	if *(*uintptr)(unsafe.Pointer(bp + 96)) != 0 {
 57674  		if sqlite3TestMakePointerStr(tls, interp, bp+112, *(*uintptr)(unsafe.Pointer(bp + 96))) != 0 {
 57675  			return TCL_ERROR
 57676  		}
 57677  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+64, bp+112, 0))
 57678  	}
 57679  	return TCL_OK
 57680  }
 57681  
 57682  func SqlitetestThread_Init(tls *libc.TLS, interp uintptr) int32 {
 57683  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38276, *(*uintptr)(unsafe.Pointer(&struct {
 57684  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57685  	}{sqlthread_proc})), uintptr(0), uintptr(0))
 57686  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38262, *(*uintptr)(unsafe.Pointer(&struct {
 57687  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 57688  	}{clock_seconds_proc})), uintptr(0), uintptr(0))
 57689  	tcl.XTcl_CreateObjCommand(tls, interp, ts+38286, *(*uintptr)(unsafe.Pointer(&struct {
 57690  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57691  	}{blocking_step_proc})), uintptr(0), uintptr(0))
 57692  	tcl.XTcl_CreateObjCommand(tls, interp,
 57693  		ts+38308, *(*uintptr)(unsafe.Pointer(&struct {
 57694  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57695  		}{blocking_prepare_v2_proc})), uintptr(1), uintptr(0))
 57696  	tcl.XTcl_CreateObjCommand(tls, interp,
 57697  		ts+38336, *(*uintptr)(unsafe.Pointer(&struct {
 57698  			f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 57699  		}{blocking_prepare_v2_proc})), uintptr(0), uintptr(0))
 57700  	return TCL_OK
 57701  }
 57702  
 57703  func Sqlitetestvdbecov_Init(tls *libc.TLS, interp uintptr) int32 {
 57704  	return TCL_OK
 57705  }
 57706  
 57707  type Testvfs1 = struct {
 57708  	FzName        uintptr
 57709  	FpParent      uintptr
 57710  	FpVfs         uintptr
 57711  	Finterp       uintptr
 57712  	FpScript      uintptr
 57713  	FpBuffer      uintptr
 57714  	FisNoshm      int32
 57715  	FisFullshm    int32
 57716  	Fmask         int32
 57717  	Fioerr_err    TestFaultInject
 57718  	Ffull_err     TestFaultInject
 57719  	Fcantopen_err TestFaultInject
 57720  	FiDevchar     int32
 57721  	FiSectorsize  int32
 57722  }
 57723  
 57724  type Testvfs = Testvfs1
 57725  type TestvfsBuffer1 = struct {
 57726  	FzFile       uintptr
 57727  	Fpgsz        int32
 57728  	F__ccgo_pad1 [4]byte
 57729  	FaPage       [1024]uintptr
 57730  	FpFile       uintptr
 57731  	FpNext       uintptr
 57732  }
 57733  
 57734  type TestvfsBuffer = TestvfsBuffer1
 57735  type TestvfsFile1 = struct {
 57736  	Fbase sqlite3_file
 57737  	FpFd  uintptr
 57738  }
 57739  
 57740  type TestvfsFile = TestvfsFile1
 57741  type TestvfsFd1 = struct {
 57742  	FpVfs       uintptr
 57743  	FzFilename  uintptr
 57744  	FpReal      uintptr
 57745  	FpShmId     uintptr
 57746  	FpShm       uintptr
 57747  	Fexcllock   u32
 57748  	Fsharedlock u32
 57749  	FpNext      uintptr
 57750  }
 57751  
 57752  type TestvfsFd = TestvfsFd1
 57753  
 57754  type TestFaultInject1 = struct {
 57755  	FiCnt   int32
 57756  	FeFault int32
 57757  	FnFail  int32
 57758  }
 57759  
 57760  type TestFaultInject = TestFaultInject1
 57761  
 57762  var tvfs_io_methods = sqlite3_io_methods{
 57763  	FiVersion:               3,
 57764  	FxClose:                 0,
 57765  	FxRead:                  0,
 57766  	FxWrite:                 0,
 57767  	FxTruncate:              0,
 57768  	FxSync:                  0,
 57769  	FxFileSize:              0,
 57770  	FxLock:                  0,
 57771  	FxUnlock:                0,
 57772  	FxCheckReservedLock:     0,
 57773  	FxFileControl:           0,
 57774  	FxSectorSize:            0,
 57775  	FxDeviceCharacteristics: 0,
 57776  	FxShmMap:                0,
 57777  	FxShmLock:               0,
 57778  	FxShmBarrier:            0,
 57779  	FxShmUnmap:              0,
 57780  	FxFetch:                 0,
 57781  	FxUnfetch:               0,
 57782  }
 57783  
 57784  func tvfsResultCode(tls *libc.TLS, p uintptr, pRc uintptr) int32 {
 57785  	bp := tls.Alloc(144)
 57786  	defer tls.Free(144)
 57787  
 57788  	*(*[9]errcode)(unsafe.Pointer(bp)) = [9]errcode{
 57789  		{FzCode: ts + 2127},
 57790  		{FeCode: SQLITE_ERROR, FzCode: ts + 2114},
 57791  		{FeCode: SQLITE_IOERR, FzCode: ts + 38458},
 57792  		{FeCode: SQLITE_LOCKED, FzCode: ts + 38471},
 57793  		{FeCode: SQLITE_BUSY, FzCode: ts + 38485},
 57794  		{FeCode: SQLITE_READONLY, FzCode: ts + 38497},
 57795  		{FeCode: SQLITE_READONLY | int32(5)<<8, FzCode: ts + 38513},
 57796  		{FeCode: SQLITE_NOTFOUND, FzCode: ts + 38538},
 57797  		{FeCode: -1, FzCode: ts + 38554},
 57798  	}
 57799  	var z uintptr
 57800  	var i int32
 57801  
 57802  	z = tcl.XTcl_GetStringResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57803  	for i = 0; i < int32(uint64(unsafe.Sizeof([9]errcode{}))/uint64(unsafe.Sizeof(errcode{}))); i++ {
 57804  		if 0 == libc.Xstrcmp(tls, z, (*errcode)(unsafe.Pointer(bp+uintptr(i)*16)).FzCode) {
 57805  			*(*int32)(unsafe.Pointer(pRc)) = (*errcode)(unsafe.Pointer(bp + uintptr(i)*16)).FeCode
 57806  			return 1
 57807  		}
 57808  	}
 57809  
 57810  	return 0
 57811  }
 57812  
 57813  type errcode = struct {
 57814  	FeCode       int32
 57815  	F__ccgo_pad1 [4]byte
 57816  	FzCode       uintptr
 57817  }
 57818  
 57819  func tvfsInjectFault(tls *libc.TLS, p uintptr) int32 {
 57820  	var ret int32 = 0
 57821  	if (*TestFaultInject)(unsafe.Pointer(p)).FeFault != 0 {
 57822  		(*TestFaultInject)(unsafe.Pointer(p)).FiCnt--
 57823  		if (*TestFaultInject)(unsafe.Pointer(p)).FiCnt == 0 || (*TestFaultInject)(unsafe.Pointer(p)).FiCnt < 0 && (*TestFaultInject)(unsafe.Pointer(p)).FeFault == FAULT_INJECT_PERSISTENT {
 57824  			ret = 1
 57825  			(*TestFaultInject)(unsafe.Pointer(p)).FnFail++
 57826  		}
 57827  	}
 57828  	return ret
 57829  }
 57830  
 57831  func tvfsInjectIoerr(tls *libc.TLS, p uintptr) int32 {
 57832  	return tvfsInjectFault(tls, p+60)
 57833  }
 57834  
 57835  func tvfsInjectFullerr(tls *libc.TLS, p uintptr) int32 {
 57836  	return tvfsInjectFault(tls, p+72)
 57837  }
 57838  
 57839  func tvfsInjectCantopenerr(tls *libc.TLS, p uintptr) int32 {
 57840  	return tvfsInjectFault(tls, p+84)
 57841  }
 57842  
 57843  func tvfsExecTcl(tls *libc.TLS, p uintptr, zMethod uintptr, arg1 uintptr, arg2 uintptr, arg3 uintptr, arg4 uintptr) {
 57844  	var rc int32
 57845  	var pEval uintptr
 57846  
 57847  	pEval = tcl.XTcl_DuplicateObj(tls, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 57848  	(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 57849  	tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, zMethod, -1))
 57850  	if arg1 != 0 {
 57851  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg1)
 57852  	}
 57853  	if arg2 != 0 {
 57854  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg2)
 57855  	}
 57856  	if arg3 != 0 {
 57857  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg3)
 57858  	}
 57859  	if arg4 != 0 {
 57860  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, arg4)
 57861  	}
 57862  
 57863  	rc = tcl.XTcl_EvalObjEx(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 57864  	if rc != TCL_OK {
 57865  		tcl.XTcl_BackgroundError(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57866  		tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 57867  	}
 57868  }
 57869  
 57870  func tvfsClose(tls *libc.TLS, pFile uintptr) int32 {
 57871  	var pTestfile uintptr = pFile
 57872  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd
 57873  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57874  
 57875  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CLOSE_MASK != 0 {
 57876  		tvfsExecTcl(tls, p, ts+35556,
 57877  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57878  	}
 57879  
 57880  	if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId != 0 {
 57881  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 57882  			var _objPtr uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId
 57883  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 57884  				tcl.XTclFreeObj(tls, _objPtr)
 57885  			}
 57886  		}
 57887  		(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 57888  	}
 57889  	if (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods != 0 {
 57890  		tcl.XTcl_Free(tls, (*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods)
 57891  	}
 57892  	sqlite3.Xsqlite3OsClose(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 57893  	tcl.XTcl_Free(tls, pFd)
 57894  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = uintptr(0)
 57895  	return SQLITE_OK
 57896  }
 57897  
 57898  func tvfsRead(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 57899  	bp := tls.Alloc(4)
 57900  	defer tls.Free(4)
 57901  
 57902  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57903  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57904  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57905  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 {
 57906  		tvfsExecTcl(tls, p, ts+35563,
 57907  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57908  		tvfsResultCode(tls, p, bp)
 57909  	}
 57910  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_READ_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 57911  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 57912  	}
 57913  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57914  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsRead(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 57915  	}
 57916  	return *(*int32)(unsafe.Pointer(bp))
 57917  }
 57918  
 57919  func tvfsWrite(tls *libc.TLS, pFile uintptr, zBuf uintptr, iAmt int32, iOfst sqlite_int64) int32 {
 57920  	bp := tls.Alloc(4)
 57921  	defer tls.Free(4)
 57922  
 57923  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57924  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57925  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57926  
 57927  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 {
 57928  		tvfsExecTcl(tls, p, ts+35569,
 57929  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 57930  			tcl.XTcl_NewWideIntObj(tls, iOfst), tcl.XTcl_NewIntObj(tls, iAmt))
 57931  		tvfsResultCode(tls, p, bp)
 57932  		if *(*int32)(unsafe.Pointer(bp)) < 0 {
 57933  			return SQLITE_OK
 57934  		}
 57935  	}
 57936  
 57937  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 57938  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 57939  	}
 57940  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 57941  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 57942  	}
 57943  
 57944  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57945  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsWrite(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, zBuf, iAmt, iOfst)
 57946  	}
 57947  	return *(*int32)(unsafe.Pointer(bp))
 57948  }
 57949  
 57950  func tvfsTruncate(tls *libc.TLS, pFile uintptr, size sqlite_int64) int32 {
 57951  	bp := tls.Alloc(4)
 57952  	defer tls.Free(4)
 57953  
 57954  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57955  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57956  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57957  
 57958  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_TRUNCATE_MASK != 0 {
 57959  		tvfsExecTcl(tls, p, ts+35576,
 57960  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 57961  		tvfsResultCode(tls, p, bp)
 57962  	}
 57963  
 57964  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 57965  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsTruncate(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, size)
 57966  	}
 57967  	return *(*int32)(unsafe.Pointer(bp))
 57968  }
 57969  
 57970  func tvfsSync(tls *libc.TLS, pFile uintptr, flags int32) int32 {
 57971  	bp := tls.Alloc(4)
 57972  	defer tls.Free(4)
 57973  
 57974  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 57975  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 57976  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 57977  
 57978  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SYNC_MASK != 0 {
 57979  		var zFlags uintptr = uintptr(0)
 57980  
 57981  		switch flags {
 57982  		case SQLITE_SYNC_NORMAL:
 57983  			zFlags = ts + 16397
 57984  			break
 57985  			fallthrough
 57986  		case SQLITE_SYNC_FULL:
 57987  			zFlags = ts + 18291
 57988  			break
 57989  			fallthrough
 57990  		case SQLITE_SYNC_NORMAL | SQLITE_SYNC_DATAONLY:
 57991  			zFlags = ts + 38566
 57992  			break
 57993  			fallthrough
 57994  		case SQLITE_SYNC_FULL | SQLITE_SYNC_DATAONLY:
 57995  			zFlags = ts + 38582
 57996  			break
 57997  			fallthrough
 57998  		default:
 57999  		}
 58000  
 58001  		tvfsExecTcl(tls, p, ts+27843,
 58002  			tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58003  			tcl.XTcl_NewStringObj(tls, zFlags, -1), uintptr(0))
 58004  		tvfsResultCode(tls, p, bp)
 58005  	}
 58006  
 58007  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && tvfsInjectFullerr(tls, p) != 0 {
 58008  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_FULL
 58009  	}
 58010  
 58011  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58012  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsSync(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, flags)
 58013  	}
 58014  
 58015  	return *(*int32)(unsafe.Pointer(bp))
 58016  }
 58017  
 58018  func tvfsFileSize(tls *libc.TLS, pFile uintptr, pSize uintptr) int32 {
 58019  	var p uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58020  	return sqlite3.Xsqlite3OsFileSize(tls, (*TestvfsFd)(unsafe.Pointer(p)).FpReal, pSize)
 58021  }
 58022  
 58023  func tvfsLock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58024  	bp := tls.Alloc(38)
 58025  	defer tls.Free(38)
 58026  
 58027  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58028  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58029  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_LOCK_MASK != 0 {
 58030  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58031  		tvfsExecTcl(tls, p, ts+35596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58032  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58033  	}
 58034  	return sqlite3.Xsqlite3OsLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58035  }
 58036  
 58037  func tvfsUnlock(tls *libc.TLS, pFile uintptr, eLock int32) int32 {
 58038  	bp := tls.Alloc(38)
 58039  	defer tls.Free(38)
 58040  
 58041  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58042  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58043  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_UNLOCK_MASK != 0 {
 58044  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([30]int8{})), bp+8, ts+1333, libc.VaList(bp, eLock))
 58045  		tvfsExecTcl(tls, p, ts+35602, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58046  			tcl.XTcl_NewStringObj(tls, bp+8, -1), uintptr(0), uintptr(0))
 58047  	}
 58048  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_WRITE_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58049  		return SQLITE_IOERR | int32(8)<<8
 58050  	}
 58051  	return sqlite3.Xsqlite3OsUnlock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, eLock)
 58052  }
 58053  
 58054  func tvfsCheckReservedLock(tls *libc.TLS, pFile uintptr, pResOut uintptr) int32 {
 58055  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58056  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58057  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_CKLOCK_MASK != 0 {
 58058  		tvfsExecTcl(tls, p, ts+38596, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58059  			uintptr(0), uintptr(0), uintptr(0))
 58060  	}
 58061  	return sqlite3.Xsqlite3OsCheckReservedLock(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, pResOut)
 58062  }
 58063  
 58064  func tvfsFileControl(tls *libc.TLS, pFile uintptr, op int32, pArg uintptr) int32 {
 58065  	bp := tls.Alloc(68)
 58066  	defer tls.Free(68)
 58067  
 58068  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58069  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58070  	if op == SQLITE_FCNTL_PRAGMA {
 58071  		var argv uintptr = pArg
 58072  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+9674) == 0 {
 58073  			var rc int32 = SQLITE_ERROR
 58074  			if *(*uintptr)(unsafe.Pointer(argv + 2*8)) != 0 {
 58075  				var z uintptr = *(*uintptr)(unsafe.Pointer(argv + 2*8))
 58076  				var x int32 = libc.Xatoi(tls, z)
 58077  				if x != 0 {
 58078  					rc = x
 58079  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x04 != 0 {
 58080  						z++
 58081  					}
 58082  					for int32(sqlite3.Xsqlite3CtypeMap[uint8(*(*int8)(unsafe.Pointer(z)))])&0x01 != 0 {
 58083  						z++
 58084  					}
 58085  				}
 58086  				if *(*int8)(unsafe.Pointer(z)) != 0 {
 58087  					*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp, z))
 58088  				}
 58089  			}
 58090  			return rc
 58091  		}
 58092  		if sqlite3.Xsqlite3_stricmp(tls, *(*uintptr)(unsafe.Pointer(argv + 1*8)), ts+4794) == 0 {
 58093  			*(*uintptr)(unsafe.Pointer(argv)) = sqlite3.Xsqlite3_mprintf(tls, ts, libc.VaList(bp+8, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58094  			return SQLITE_OK
 58095  		}
 58096  	}
 58097  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FCNTL_MASK != 0 {
 58098  		*(*[3]Fcntl)(unsafe.Pointer(bp + 16)) = [3]Fcntl{
 58099  			{FiFnctl: SQLITE_FCNTL_BEGIN_ATOMIC_WRITE, FzFnctl: ts + 38615},
 58100  			{FiFnctl: SQLITE_FCNTL_COMMIT_ATOMIC_WRITE, FzFnctl: ts + 38634},
 58101  			{FiFnctl: SQLITE_FCNTL_ZIPVFS, FzFnctl: ts + 38654},
 58102  		}
 58103  		var i int32
 58104  		for i = 0; uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})); i++ {
 58105  			if op == (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FiFnctl {
 58106  				break
 58107  			}
 58108  		}
 58109  		if uint64(i) < uint64(unsafe.Sizeof([3]Fcntl{}))/uint64(unsafe.Sizeof(Fcntl{})) {
 58110  			*(*int32)(unsafe.Pointer(bp + 64)) = 0
 58111  			tvfsExecTcl(tls, p, ts+35624,
 58112  				tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1),
 58113  				tcl.XTcl_NewStringObj(tls, (*Fcntl)(unsafe.Pointer(bp+16+uintptr(i)*16)).FzFnctl, -1),
 58114  				uintptr(0), uintptr(0))
 58115  			tvfsResultCode(tls, p, bp+64)
 58116  			if *(*int32)(unsafe.Pointer(bp + 64)) != 0 {
 58117  				return func() int32 {
 58118  					if *(*int32)(unsafe.Pointer(bp + 64)) < 0 {
 58119  						return SQLITE_OK
 58120  					}
 58121  					return *(*int32)(unsafe.Pointer(bp + 64))
 58122  				}()
 58123  			}
 58124  		}
 58125  	}
 58126  	return sqlite3.Xsqlite3OsFileControl(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, op, pArg)
 58127  }
 58128  
 58129  type Fcntl = struct {
 58130  	FiFnctl      int32
 58131  	F__ccgo_pad1 [4]byte
 58132  	FzFnctl      uintptr
 58133  }
 58134  
 58135  func tvfsSectorSize(tls *libc.TLS, pFile uintptr) int32 {
 58136  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58137  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58138  	if (*Testvfs)(unsafe.Pointer(p)).FiSectorsize >= 0 {
 58139  		return (*Testvfs)(unsafe.Pointer(p)).FiSectorsize
 58140  	}
 58141  	return sqlite3.Xsqlite3OsSectorSize(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58142  }
 58143  
 58144  func tvfsDeviceCharacteristics(tls *libc.TLS, pFile uintptr) int32 {
 58145  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58146  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58147  	if (*Testvfs)(unsafe.Pointer(p)).FiDevchar >= 0 {
 58148  		return (*Testvfs)(unsafe.Pointer(p)).FiDevchar
 58149  	}
 58150  	return sqlite3.Xsqlite3OsDeviceCharacteristics(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)
 58151  }
 58152  
 58153  func tvfsOpen(tls *libc.TLS, pVfs uintptr, zName uintptr, pFile uintptr, flags int32, pOutFlags uintptr) int32 {
 58154  	bp := tls.Alloc(4)
 58155  	defer tls.Free(4)
 58156  
 58157  	var pTestfile uintptr = pFile
 58158  	var pFd uintptr
 58159  	var pId uintptr = uintptr(0)
 58160  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58161  
 58162  	pFd = tcl.XTcl_Alloc(tls, uint32(uint64(unsafe.Sizeof(TestvfsFd{}))+uint64((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FszOsFile)))
 58163  	libc.Xmemset(tls, pFd, 0, uint64(unsafe.Sizeof(TestvfsFd{}))+uint64((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent)).FszOsFile))
 58164  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58165  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = uintptr(0)
 58166  	(*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename = zName
 58167  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs = pVfs
 58168  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpReal = pFd + 1*56
 58169  	libc.Xmemset(tls, pTestfile, 0, uint64(unsafe.Sizeof(TestvfsFile{})))
 58170  	(*TestvfsFile)(unsafe.Pointer(pTestfile)).FpFd = pFd
 58171  
 58172  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58173  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 {
 58174  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58175  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58176  		if flags&SQLITE_OPEN_MAIN_DB != 0 {
 58177  			var z uintptr = zName + uintptr(libc.Xstrlen(tls, zName)+uint64(1))
 58178  			for *(*int8)(unsafe.Pointer(z)) != 0 {
 58179  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58180  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58181  				tcl.XTcl_ListObjAppendElement(tls, uintptr(0), pArg, tcl.XTcl_NewStringObj(tls, z, -1))
 58182  				z += uintptr(libc.Xstrlen(tls, z) + uint64(1))
 58183  			}
 58184  		}
 58185  		tvfsExecTcl(tls, p, ts+27421, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), pArg, uintptr(0), uintptr(0))
 58186  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58187  			var _objPtr uintptr = pArg
 58188  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58189  				tcl.XTclFreeObj(tls, _objPtr)
 58190  			}
 58191  		}
 58192  		if tvfsResultCode(tls, p, bp) != 0 {
 58193  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58194  				return *(*int32)(unsafe.Pointer(bp))
 58195  			}
 58196  		} else {
 58197  			pId = tcl.XTcl_GetObjResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58198  		}
 58199  	}
 58200  
 58201  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_OPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58202  		return SQLITE_IOERR
 58203  	}
 58204  	if tvfsInjectCantopenerr(tls, p) != 0 {
 58205  		return SQLITE_CANTOPEN
 58206  	}
 58207  	if tvfsInjectFullerr(tls, p) != 0 {
 58208  		return SQLITE_FULL
 58209  	}
 58210  
 58211  	if !(pId != 0) {
 58212  		pId = tcl.XTcl_NewStringObj(tls, ts+38661, -1)
 58213  	}
 58214  	(*Tcl_Obj)(unsafe.Pointer(pId)).FrefCount++
 58215  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId = pId
 58216  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58217  
 58218  	*(*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)
 58219  	if (*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods != 0 {
 58220  		var pMethods uintptr
 58221  		var nByte int32
 58222  
 58223  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 {
 58224  			nByte = int32(unsafe.Sizeof(sqlite3_io_methods{}))
 58225  		} else {
 58226  			nByte = int32(uintptr(0) + 104)
 58227  		}
 58228  
 58229  		pMethods = tcl.XTcl_Alloc(tls, uint32(nByte))
 58230  		libc.Xmemcpy(tls, pMethods, uintptr(unsafe.Pointer(&tvfs_io_methods)), uint64(nByte))
 58231  		(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpReal)).FpMethods)).FiVersion
 58232  		if (*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion > (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion {
 58233  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FiVersion = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion
 58234  		}
 58235  		if (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion > 1 && (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FisNoshm != 0 {
 58236  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmUnmap = uintptr(0)
 58237  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmLock = uintptr(0)
 58238  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmBarrier = uintptr(0)
 58239  			(*sqlite3_io_methods)(unsafe.Pointer(pMethods)).FxShmMap = uintptr(0)
 58240  		}
 58241  		(*sqlite3_file)(unsafe.Pointer(pFile)).FpMethods = pMethods
 58242  	}
 58243  
 58244  	return *(*int32)(unsafe.Pointer(bp))
 58245  }
 58246  
 58247  func tvfsDelete(tls *libc.TLS, pVfs uintptr, zPath uintptr, dirSync int32) int32 {
 58248  	bp := tls.Alloc(4)
 58249  	defer tls.Free(4)
 58250  
 58251  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58252  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58253  
 58254  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_DELETE_MASK != 0 {
 58255  		tvfsExecTcl(tls, p, ts+35661,
 58256  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewIntObj(tls, dirSync), uintptr(0), uintptr(0))
 58257  		tvfsResultCode(tls, p, bp)
 58258  	}
 58259  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK {
 58260  		*(*int32)(unsafe.Pointer(bp)) = sqlite3.Xsqlite3OsDelete(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, dirSync)
 58261  	}
 58262  	return *(*int32)(unsafe.Pointer(bp))
 58263  }
 58264  
 58265  func tvfsAccess(tls *libc.TLS, pVfs uintptr, zPath uintptr, flags int32, pResOut uintptr) int32 {
 58266  	bp := tls.Alloc(4)
 58267  	defer tls.Free(4)
 58268  
 58269  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58270  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_ACCESS_MASK != 0 {
 58271  		var zArg uintptr = uintptr(0)
 58272  		if flags == SQLITE_ACCESS_EXISTS {
 58273  			zArg = ts + 38666
 58274  		}
 58275  		if flags == SQLITE_ACCESS_READWRITE {
 58276  			zArg = ts + 38687
 58277  		}
 58278  		if flags == SQLITE_ACCESS_READ {
 58279  			zArg = ts + 38711
 58280  		}
 58281  		tvfsExecTcl(tls, p, ts+35669,
 58282  			tcl.XTcl_NewStringObj(tls, zPath, -1), tcl.XTcl_NewStringObj(tls, zArg, -1), uintptr(0), uintptr(0))
 58283  		if tvfsResultCode(tls, p, bp) != 0 {
 58284  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58285  				return *(*int32)(unsafe.Pointer(bp))
 58286  			}
 58287  		} else {
 58288  			var interp uintptr = (*Testvfs)(unsafe.Pointer(p)).Finterp
 58289  			if TCL_OK == tcl.XTcl_GetBooleanFromObj(tls, uintptr(0), tcl.XTcl_GetObjResult(tls, interp), pResOut) {
 58290  				return SQLITE_OK
 58291  			}
 58292  		}
 58293  	}
 58294  	return sqlite3.Xsqlite3OsAccess(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, flags, pResOut)
 58295  }
 58296  
 58297  func tvfsFullPathname(tls *libc.TLS, pVfs uintptr, zPath uintptr, nOut int32, zOut uintptr) int32 {
 58298  	bp := tls.Alloc(4)
 58299  	defer tls.Free(4)
 58300  
 58301  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData
 58302  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_FULLPATHNAME_MASK != 0 {
 58303  		tvfsExecTcl(tls, p, ts+35677, tcl.XTcl_NewStringObj(tls, zPath, -1), uintptr(0), uintptr(0), uintptr(0))
 58304  		if tvfsResultCode(tls, p, bp) != 0 {
 58305  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58306  				return *(*int32)(unsafe.Pointer(bp))
 58307  			}
 58308  		}
 58309  	}
 58310  	return sqlite3.Xsqlite3OsFullPathname(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, zPath, nOut, zOut)
 58311  }
 58312  
 58313  func tvfsRandomness(tls *libc.TLS, pVfs uintptr, nByte int32, zBufOut uintptr) int32 {
 58314  	return sqlite3.Xsqlite3OsRandomness(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nByte, zBufOut)
 58315  }
 58316  
 58317  func tvfsSleep(tls *libc.TLS, pVfs uintptr, nMicro int32) int32 {
 58318  	return sqlite3.Xsqlite3OsSleep(tls, (*Testvfs)(unsafe.Pointer((*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData)).FpParent, nMicro)
 58319  }
 58320  
 58321  func tvfsCurrentTime(tls *libc.TLS, pVfs uintptr, pTimeOut uintptr) int32 {
 58322  	return (*struct {
 58323  		f func(*libc.TLS, uintptr, uintptr) int32
 58324  	})(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)
 58325  }
 58326  
 58327  func tvfsShmOpen(tls *libc.TLS, pFile uintptr) int32 {
 58328  	bp := tls.Alloc(4)
 58329  	defer tls.Free(4)
 58330  
 58331  	var p uintptr
 58332  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58333  	var pBuffer uintptr
 58334  	var pFd uintptr
 58335  
 58336  	pFd = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58337  	p = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58338  
 58339  	tcl.XTcl_ResetResult(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp)
 58340  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 {
 58341  		tvfsExecTcl(tls, p, ts+38730, tcl.XTcl_NewStringObj(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, -1), uintptr(0), uintptr(0), uintptr(0))
 58342  		if tvfsResultCode(tls, p, bp) != 0 {
 58343  			if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58344  				return *(*int32)(unsafe.Pointer(bp))
 58345  			}
 58346  		}
 58347  	}
 58348  
 58349  	if (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMOPEN_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58350  		return SQLITE_IOERR
 58351  	}
 58352  
 58353  	for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 58354  		if 0 == libc.Xstrcmp(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile) {
 58355  			break
 58356  		}
 58357  	}
 58358  	if !(pBuffer != 0) {
 58359  		var szName int32 = int32(libc.Xstrlen(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename))
 58360  		var nByte int32 = int32(uint64(unsafe.Sizeof(TestvfsBuffer{})) + uint64(szName) + uint64(1))
 58361  		pBuffer = tcl.XTcl_Alloc(tls, uint32(nByte))
 58362  		libc.Xmemset(tls, pBuffer, 0, uint64(nByte))
 58363  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile = pBuffer + 1*8224
 58364  		libc.Xmemcpy(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, (*TestvfsFd)(unsafe.Pointer(pFd)).FzFilename, uint64(szName+1))
 58365  		(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext = (*Testvfs)(unsafe.Pointer(p)).FpBuffer
 58366  		(*Testvfs)(unsafe.Pointer(p)).FpBuffer = pBuffer
 58367  	}
 58368  
 58369  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile
 58370  	(*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile = pFd
 58371  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = pBuffer
 58372  	return *(*int32)(unsafe.Pointer(bp))
 58373  }
 58374  
 58375  func tvfsAllocPage(tls *libc.TLS, p uintptr, iPage int32, pgsz int32) {
 58376  	if *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) == uintptr(0) {
 58377  		*(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)) = tcl.XTcl_Alloc(tls, uint32(pgsz))
 58378  		libc.Xmemset(tls, *(*uintptr)(unsafe.Pointer(p + 16 + uintptr(iPage)*8)), 0, uint64(pgsz))
 58379  		(*TestvfsBuffer)(unsafe.Pointer(p)).Fpgsz = pgsz
 58380  	}
 58381  }
 58382  
 58383  func tvfsShmMap(tls *libc.TLS, pFile uintptr, iPage int32, pgsz int32, isWrite int32, pp uintptr) int32 {
 58384  	bp := tls.Alloc(4)
 58385  	defer tls.Free(4)
 58386  
 58387  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58388  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58389  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58390  
 58391  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58392  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58393  		return (*struct {
 58394  			f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 58395  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmMap})).f(tls, pReal, iPage, pgsz, isWrite, pp)
 58396  	}
 58397  
 58398  	if uintptr(0) == (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm {
 58399  		*(*int32)(unsafe.Pointer(bp)) = tvfsShmOpen(tls, pFile)
 58400  		if *(*int32)(unsafe.Pointer(bp)) != SQLITE_OK {
 58401  			return *(*int32)(unsafe.Pointer(bp))
 58402  		}
 58403  	}
 58404  
 58405  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 {
 58406  		var pArg uintptr = tcl.XTcl_NewObj(tls)
 58407  		(*Tcl_Obj)(unsafe.Pointer(pArg)).FrefCount++
 58408  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, iPage))
 58409  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, pgsz))
 58410  		tcl.XTcl_ListObjAppendElement(tls, (*Testvfs)(unsafe.Pointer(p)).Finterp, pArg, tcl.XTcl_NewIntObj(tls, isWrite))
 58411  		tvfsExecTcl(tls, p, ts+35754,
 58412  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, pArg, uintptr(0))
 58413  		tvfsResultCode(tls, p, bp)
 58414  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58415  			var _objPtr uintptr = pArg
 58416  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58417  				tcl.XTclFreeObj(tls, _objPtr)
 58418  			}
 58419  		}
 58420  	}
 58421  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMMAP_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58422  		*(*int32)(unsafe.Pointer(bp)) = SQLITE_IOERR
 58423  	}
 58424  
 58425  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK && isWrite != 0 && !(int32(*(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))) != 0) {
 58426  		tvfsAllocPage(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm, iPage, pgsz)
 58427  	}
 58428  	if *(*int32)(unsafe.Pointer(bp)) == SQLITE_OK || *(*int32)(unsafe.Pointer(bp)) == SQLITE_READONLY {
 58429  		*(*uintptr)(unsafe.Pointer(pp)) = *(*uintptr)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm + 16 + uintptr(iPage)*8))
 58430  	}
 58431  
 58432  	return *(*int32)(unsafe.Pointer(bp))
 58433  }
 58434  
 58435  func tvfsShmLock(tls *libc.TLS, pFile uintptr, ofst int32, n int32, flags int32) int32 {
 58436  	bp := tls.Alloc(100)
 58437  	defer tls.Free(100)
 58438  
 58439  	*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_OK
 58440  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58441  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58442  	var nLock int32
 58443  
 58444  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58445  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58446  		return (*struct {
 58447  			f func(*libc.TLS, uintptr, int32, int32, int32) int32
 58448  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmLock})).f(tls, pReal, ofst, n, flags)
 58449  	}
 58450  
 58451  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 {
 58452  		sqlite3.Xsqlite3_snprintf(tls, int32(unsafe.Sizeof([80]int8{})), bp+16, ts+17826, libc.VaList(bp, ofst, n))
 58453  		nLock = int32(libc.Xstrlen(tls, bp+16))
 58454  		if flags&SQLITE_SHM_LOCK != 0 {
 58455  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38739)
 58456  		} else {
 58457  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38745)
 58458  		}
 58459  		nLock = nLock + int32(libc.Xstrlen(tls, bp+16+uintptr(nLock)))
 58460  		if flags&SQLITE_SHM_SHARED != 0 {
 58461  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38753)
 58462  		} else {
 58463  			libc.Xstrcpy(tls, bp+16+uintptr(nLock), ts+38761)
 58464  		}
 58465  		tvfsExecTcl(tls, p, ts+35733,
 58466  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId,
 58467  			tcl.XTcl_NewStringObj(tls, bp+16, -1), uintptr(0))
 58468  		tvfsResultCode(tls, p, bp+96)
 58469  	}
 58470  
 58471  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMLOCK_MASK != 0 && tvfsInjectIoerr(tls, p) != 0 {
 58472  		*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_IOERR
 58473  	}
 58474  
 58475  	if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 58476  		var isLock int32 = flags & SQLITE_SHM_LOCK
 58477  		var isExcl int32 = flags & SQLITE_SHM_EXCLUSIVE
 58478  		var mask u32 = u32((int32(1)<<n - 1) << ofst)
 58479  		if isLock != 0 {
 58480  			var p2 uintptr
 58481  			for p2 = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FpFile; p2 != 0; p2 = (*TestvfsFd)(unsafe.Pointer(p2)).FpNext {
 58482  				if p2 == pFd {
 58483  					continue
 58484  				}
 58485  				if (*TestvfsFd)(unsafe.Pointer(p2)).Fexcllock&mask != 0 || isExcl != 0 && (*TestvfsFd)(unsafe.Pointer(p2)).Fsharedlock&mask != 0 {
 58486  					*(*int32)(unsafe.Pointer(bp + 96)) = SQLITE_BUSY
 58487  					break
 58488  				}
 58489  			}
 58490  			if *(*int32)(unsafe.Pointer(bp + 96)) == SQLITE_OK {
 58491  				if isExcl != 0 {
 58492  					*(*u32)(unsafe.Pointer(pFd + 40)) |= mask
 58493  				}
 58494  				if !(isExcl != 0) {
 58495  					*(*u32)(unsafe.Pointer(pFd + 44)) |= mask
 58496  				}
 58497  			}
 58498  		} else {
 58499  			if isExcl != 0 {
 58500  				*(*u32)(unsafe.Pointer(pFd + 40)) &= ^mask
 58501  			}
 58502  			if !(isExcl != 0) {
 58503  				*(*u32)(unsafe.Pointer(pFd + 44)) &= ^mask
 58504  			}
 58505  		}
 58506  	}
 58507  
 58508  	return *(*int32)(unsafe.Pointer(bp + 96))
 58509  }
 58510  
 58511  func tvfsShmBarrier(tls *libc.TLS, pFile uintptr) {
 58512  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58513  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58514  
 58515  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMBARRIER_MASK != 0 {
 58516  		var z uintptr
 58517  		if (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm != 0 {
 58518  			z = (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile
 58519  		} else {
 58520  			z = ts + 584
 58521  		}
 58522  		tvfsExecTcl(tls, p, ts+35742, tcl.XTcl_NewStringObj(tls, z, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58523  	}
 58524  
 58525  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58526  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58527  		(*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)
 58528  		return
 58529  	}
 58530  }
 58531  
 58532  func tvfsShmUnmap(tls *libc.TLS, pFile uintptr, deleteFlag int32) int32 {
 58533  	bp := tls.Alloc(4)
 58534  	defer tls.Free(4)
 58535  
 58536  	*(*int32)(unsafe.Pointer(bp)) = SQLITE_OK
 58537  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58538  	var p uintptr = (*sqlite3_vfs)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpVfs)).FpAppData
 58539  	var pBuffer uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpShm
 58540  	var ppFd uintptr
 58541  
 58542  	if (*Testvfs)(unsafe.Pointer(p)).FisFullshm != 0 {
 58543  		var pReal uintptr = (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal
 58544  		return (*struct {
 58545  			f func(*libc.TLS, uintptr, int32) int32
 58546  		})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(pReal)).FpMethods)).FxShmUnmap})).f(tls, pReal, deleteFlag)
 58547  	}
 58548  
 58549  	if !(pBuffer != 0) {
 58550  		return SQLITE_OK
 58551  	}
 58552  
 58553  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 && (*Testvfs)(unsafe.Pointer(p)).Fmask&TESTVFS_SHMCLOSE_MASK != 0 {
 58554  		tvfsExecTcl(tls, p, ts+35723,
 58555  			tcl.XTcl_NewStringObj(tls, (*TestvfsBuffer)(unsafe.Pointer((*TestvfsFd)(unsafe.Pointer(pFd)).FpShm)).FzFile, -1), (*TestvfsFd)(unsafe.Pointer(pFd)).FpShmId, uintptr(0), uintptr(0))
 58556  		tvfsResultCode(tls, p, bp)
 58557  	}
 58558  
 58559  	for ppFd = pBuffer + 8208; *(*uintptr)(unsafe.Pointer(ppFd)) != pFd; ppFd = *(*uintptr)(unsafe.Pointer(ppFd)) + 48 {
 58560  	}
 58561  
 58562  	*(*uintptr)(unsafe.Pointer(ppFd)) = (*TestvfsFd)(unsafe.Pointer(pFd)).FpNext
 58563  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpNext = uintptr(0)
 58564  
 58565  	if (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpFile == uintptr(0) {
 58566  		var i int32
 58567  		var pp uintptr
 58568  		for pp = p + 40; *(*uintptr)(unsafe.Pointer(pp)) != pBuffer; pp = *(*uintptr)(unsafe.Pointer(pp)) + 8216 {
 58569  		}
 58570  		*(*uintptr)(unsafe.Pointer(pp)) = (*TestvfsBuffer)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(pp)))).FpNext
 58571  		for i = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)) != 0; i++ {
 58572  			tcl.XTcl_Free(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(i)*8)))
 58573  		}
 58574  		tcl.XTcl_Free(tls, pBuffer)
 58575  	}
 58576  	(*TestvfsFd)(unsafe.Pointer(pFd)).FpShm = uintptr(0)
 58577  
 58578  	return *(*int32)(unsafe.Pointer(bp))
 58579  }
 58580  
 58581  func tvfsFetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, iAmt int32, pp uintptr) int32 {
 58582  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58583  	return sqlite3.Xsqlite3OsFetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, iAmt, pp)
 58584  }
 58585  
 58586  func tvfsUnfetch(tls *libc.TLS, pFile uintptr, iOfst sqlite3_int64, p uintptr) int32 {
 58587  	var pFd uintptr = (*TestvfsFile)(unsafe.Pointer(pFile)).FpFd
 58588  	return sqlite3.Xsqlite3OsUnfetch(tls, (*TestvfsFd)(unsafe.Pointer(pFd)).FpReal, iOfst, p)
 58589  }
 58590  
 58591  func testvfs_obj_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58592  	bp := tls.Alloc(568)
 58593  	defer tls.Free(568)
 58594  
 58595  	var p uintptr = cd
 58596  	*(*[10]TestvfsSubcmd)(unsafe.Pointer(bp + 96)) = [10]TestvfsSubcmd{
 58597  		{FzName: ts + 38772},
 58598  		{FzName: ts + 10138, FeCmd: uint32(1)},
 58599  		{FzName: ts + 38776, FeCmd: uint32(2)},
 58600  		{FzName: ts + 38783, FeCmd: uint32(3)},
 58601  		{FzName: ts + 38789, FeCmd: uint32(7)},
 58602  		{FzName: ts + 38797, FeCmd: uint32(8)},
 58603  		{FzName: ts + 38809, FeCmd: uint32(4)},
 58604  		{FzName: ts + 38816, FeCmd: uint32(5)},
 58605  		{FzName: ts + 38824, FeCmd: uint32(6)},
 58606  		{},
 58607  	}
 58608  
 58609  	if objc < 2 {
 58610  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+1999)
 58611  		return TCL_ERROR
 58612  	}
 58613  	if tcl.XTcl_GetIndexFromObjStruct(tls,
 58614  		interp, *(*uintptr)(unsafe.Pointer(objv + 1*8)), bp+96, int32(unsafe.Sizeof(TestvfsSubcmd{})), ts+38835, 0, bp+256) != 0 {
 58615  		return TCL_ERROR
 58616  	}
 58617  	tcl.XTcl_ResetResult(tls, interp)
 58618  
 58619  	switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 58620  	case uint32(0):
 58621  		{
 58622  			var pObj uintptr
 58623  			var rc int32
 58624  			var pBuffer uintptr
 58625  			var zName uintptr
 58626  			if objc != 3 && objc != 4 {
 58627  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38846)
 58628  				return TCL_ERROR
 58629  			}
 58630  			zName = tcl.XTcl_Alloc(tls, uint32((*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname))
 58631  			rc = (*struct {
 58632  				f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 58633  			})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FxFullPathname})).f(tls,
 58634  				(*Testvfs)(unsafe.Pointer(p)).FpParent, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))),
 58635  				(*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname, zName)
 58636  			if rc != SQLITE_OK {
 58637  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+38859,
 58638  					tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58639  				tcl.XTcl_Free(tls, zName)
 58640  				return TCL_ERROR
 58641  			}
 58642  			for pBuffer = (*Testvfs)(unsafe.Pointer(p)).FpBuffer; pBuffer != 0; pBuffer = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FpNext {
 58643  				if 0 == libc.Xstrcmp(tls, (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).FzFile, zName) {
 58644  					break
 58645  				}
 58646  			}
 58647  			tcl.XTcl_Free(tls, zName)
 58648  			if !(pBuffer != 0) {
 58649  				tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+24, ts+38885, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58650  				return TCL_ERROR
 58651  			}
 58652  			if objc == 4 {
 58653  				var a uintptr = tcl.XTcl_GetByteArrayFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+260)
 58654  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 58655  				if pgsz == 0 {
 58656  					pgsz = 65536
 58657  				}
 58658  				for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256))*pgsz < *(*int32)(unsafe.Pointer(bp + 260)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 58659  					var nByte int32 = pgsz
 58660  					tvfsAllocPage(tls, pBuffer, *(*int32)(unsafe.Pointer(bp + 256)), pgsz)
 58661  					if *(*int32)(unsafe.Pointer(bp + 260))-*(*int32)(unsafe.Pointer(bp + 256))*pgsz < pgsz {
 58662  						nByte = *(*int32)(unsafe.Pointer(bp + 260))
 58663  					}
 58664  					libc.Xmemcpy(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), a+uintptr(*(*int32)(unsafe.Pointer(bp + 256))*pgsz), uint64(nByte))
 58665  				}
 58666  			}
 58667  
 58668  			pObj = tcl.XTcl_NewObj(tls)
 58669  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)) != 0; *(*int32)(unsafe.Pointer(bp + 256))++ {
 58670  				var pgsz int32 = (*TestvfsBuffer)(unsafe.Pointer(pBuffer)).Fpgsz
 58671  				if pgsz == 0 {
 58672  					pgsz = 65536
 58673  				}
 58674  				tcl.XTcl_AppendObjToObj(tls, pObj, tcl.XTcl_NewByteArrayObj(tls, *(*uintptr)(unsafe.Pointer(pBuffer + 16 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)), pgsz))
 58675  			}
 58676  			tcl.XTcl_SetObjResult(tls, interp, pObj)
 58677  			break
 58678  
 58679  		}
 58680  
 58681  	case uint32(2):
 58682  		{
 58683  			*(*uintptr)(unsafe.Pointer(bp + 272)) = uintptr(0)
 58684  			*(*int32)(unsafe.Pointer(bp + 264)) = 0
 58685  			var mask int32 = 0
 58686  			if objc != 3 {
 58687  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+32419)
 58688  				return TCL_ERROR
 58689  			}
 58690  			if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+264, bp+272) != 0 {
 58691  				return TCL_ERROR
 58692  			}
 58693  			tcl.XTcl_ResetResult(tls, interp)
 58694  			for *(*int32)(unsafe.Pointer(bp + 256)) = 0; *(*int32)(unsafe.Pointer(bp + 256)) < *(*int32)(unsafe.Pointer(bp + 264)); *(*int32)(unsafe.Pointer(bp + 256))++ {
 58695  				var iMethod int32
 58696  				var zElem uintptr = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 272)) + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*8)))
 58697  				for iMethod = 0; iMethod < int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))); iMethod++ {
 58698  					if libc.Xstrcmp(tls, zElem, vfsmethod[iMethod].FzName) == 0 {
 58699  						mask = mask | vfsmethod[iMethod].Fmask
 58700  						break
 58701  					}
 58702  				}
 58703  				if iMethod == int32(uint64(unsafe.Sizeof(vfsmethod))/uint64(unsafe.Sizeof(VfsMethod{}))) {
 58704  					tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+48, ts+38900, zElem, 0))
 58705  					return TCL_ERROR
 58706  				}
 58707  			}
 58708  			(*Testvfs)(unsafe.Pointer(p)).Fmask = mask
 58709  			break
 58710  
 58711  		}
 58712  
 58713  	case uint32(4):
 58714  		{
 58715  			if objc == 3 {
 58716  				if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58717  					for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58718  						var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 58719  						if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58720  							tcl.XTclFreeObj(tls, _objPtr)
 58721  						}
 58722  					}
 58723  					(*Testvfs)(unsafe.Pointer(p)).FpScript = uintptr(0)
 58724  				}
 58725  				tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+280)
 58726  				if *(*int32)(unsafe.Pointer(bp + 280)) > 0 {
 58727  					(*Testvfs)(unsafe.Pointer(p)).FpScript = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 58728  					(*Tcl_Obj)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpScript)).FrefCount++
 58729  				}
 58730  			} else if objc != 2 {
 58731  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+13249)
 58732  				return TCL_ERROR
 58733  			}
 58734  
 58735  			tcl.XTcl_ResetResult(tls, interp)
 58736  			if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58737  				tcl.XTcl_SetObjResult(tls, interp, (*Testvfs)(unsafe.Pointer(p)).FpScript)
 58738  			}
 58739  
 58740  			break
 58741  
 58742  		}
 58743  
 58744  	case uint32(8):
 58745  		fallthrough
 58746  	case uint32(3):
 58747  		fallthrough
 58748  	case uint32(7):
 58749  		{
 58750  			var pTest uintptr = uintptr(0)
 58751  			var iRet int32
 58752  
 58753  			switch (*TestvfsSubcmd)(unsafe.Pointer(bp + 96 + uintptr(*(*int32)(unsafe.Pointer(bp + 256)))*16)).FeCmd {
 58754  			case uint32(3):
 58755  				pTest = p + 60
 58756  				break
 58757  			case uint32(7):
 58758  				pTest = p + 72
 58759  				break
 58760  			case uint32(8):
 58761  				pTest = p + 84
 58762  				break
 58763  			default:
 58764  			}
 58765  			iRet = (*TestFaultInject)(unsafe.Pointer(pTest)).FnFail
 58766  			(*TestFaultInject)(unsafe.Pointer(pTest)).FnFail = 0
 58767  			(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = 0
 58768  			(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = 0
 58769  
 58770  			if objc == 4 {
 58771  				if TCL_OK != tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+284) ||
 58772  					TCL_OK != tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+288) {
 58773  					return TCL_ERROR
 58774  				}
 58775  				(*TestFaultInject)(unsafe.Pointer(pTest)).FeFault = func() int32 {
 58776  					if *(*int32)(unsafe.Pointer(bp + 288)) != 0 {
 58777  						return FAULT_INJECT_PERSISTENT
 58778  					}
 58779  					return FAULT_INJECT_TRANSIENT
 58780  				}()
 58781  				(*TestFaultInject)(unsafe.Pointer(pTest)).FiCnt = *(*int32)(unsafe.Pointer(bp + 284))
 58782  			} else if objc != 2 {
 58783  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38917)
 58784  				return TCL_ERROR
 58785  			}
 58786  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, iRet))
 58787  			break
 58788  
 58789  		}
 58790  
 58791  	case uint32(1):
 58792  		{
 58793  			tcl.XTcl_DeleteCommand(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv))))
 58794  			break
 58795  
 58796  		}
 58797  
 58798  	case uint32(5):
 58799  		{
 58800  			*(*[16]DeviceFlag)(unsafe.Pointer(bp + 304)) = [16]DeviceFlag{
 58801  				{FzName: ts + 38931, FiValue: -1},
 58802  				{FzName: ts + 26403, FiValue: SQLITE_IOCAP_ATOMIC},
 58803  				{FzName: ts + 26410, FiValue: SQLITE_IOCAP_ATOMIC512},
 58804  				{FzName: ts + 26420, FiValue: SQLITE_IOCAP_ATOMIC1K},
 58805  				{FzName: ts + 26429, FiValue: SQLITE_IOCAP_ATOMIC2K},
 58806  				{FzName: ts + 26438, FiValue: SQLITE_IOCAP_ATOMIC4K},
 58807  				{FzName: ts + 26447, FiValue: SQLITE_IOCAP_ATOMIC8K},
 58808  				{FzName: ts + 26456, FiValue: SQLITE_IOCAP_ATOMIC16K},
 58809  				{FzName: ts + 26466, FiValue: SQLITE_IOCAP_ATOMIC32K},
 58810  				{FzName: ts + 26476, FiValue: SQLITE_IOCAP_ATOMIC64K},
 58811  				{FzName: ts + 26486, FiValue: SQLITE_IOCAP_SEQUENTIAL},
 58812  				{FzName: ts + 26497, FiValue: SQLITE_IOCAP_SAFE_APPEND},
 58813  				{FzName: ts + 38939, FiValue: SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN},
 58814  				{FzName: ts + 26509, FiValue: SQLITE_IOCAP_POWERSAFE_OVERWRITE},
 58815  				{FzName: ts + 38961, FiValue: SQLITE_IOCAP_IMMUTABLE},
 58816  				{},
 58817  			}
 58818  			var pRet uintptr
 58819  			var iFlag int32
 58820  
 58821  			if objc > 3 {
 58822  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38971)
 58823  				return TCL_ERROR
 58824  			}
 58825  			if objc == 3 {
 58826  				var j int32
 58827  				var iNew int32 = 0
 58828  				*(*uintptr)(unsafe.Pointer(bp + 296)) = uintptr(0)
 58829  				*(*int32)(unsafe.Pointer(bp + 292)) = 0
 58830  
 58831  				if tcl.XTcl_ListObjGetElements(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+292, bp+296) != 0 {
 58832  					return TCL_ERROR
 58833  				}
 58834  
 58835  				for j = 0; j < *(*int32)(unsafe.Pointer(bp + 292)); j++ {
 58836  					*(*int32)(unsafe.Pointer(bp + 560)) = 0
 58837  					if tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 296)) + uintptr(j)*8)), bp+304,
 58838  						int32(unsafe.Sizeof(DeviceFlag{})), ts+17631, 0, bp+560) != 0 {
 58839  						return TCL_ERROR
 58840  					}
 58841  					if (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue < 0 && *(*int32)(unsafe.Pointer(bp + 292)) > 1 {
 58842  						tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp+72, ts+38983, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8))), 0))
 58843  						return TCL_ERROR
 58844  					}
 58845  					iNew = iNew | (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(*(*int32)(unsafe.Pointer(bp + 560)))*16)).FiValue
 58846  				}
 58847  
 58848  				(*Testvfs)(unsafe.Pointer(p)).FiDevchar = iNew | 0x10000000
 58849  			}
 58850  
 58851  			pRet = tcl.XTcl_NewObj(tls)
 58852  			for iFlag = 0; uint64(iFlag) < uint64(unsafe.Sizeof([16]DeviceFlag{}))/uint64(unsafe.Sizeof(DeviceFlag{})); iFlag++ {
 58853  				if (*Testvfs)(unsafe.Pointer(p)).FiDevchar&(*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FiValue != 0 {
 58854  					tcl.XTcl_ListObjAppendElement(tls,
 58855  						interp, pRet, tcl.XTcl_NewStringObj(tls, (*DeviceFlag)(unsafe.Pointer(bp+304+uintptr(iFlag)*16)).FzName, -1))
 58856  				}
 58857  			}
 58858  			tcl.XTcl_SetObjResult(tls, interp, pRet)
 58859  
 58860  			break
 58861  
 58862  		}
 58863  
 58864  	case uint32(6):
 58865  		{
 58866  			if objc > 3 {
 58867  				tcl.XTcl_WrongNumArgs(tls, interp, 2, objv, ts+38995)
 58868  				return TCL_ERROR
 58869  			}
 58870  			if objc == 3 {
 58871  				*(*int32)(unsafe.Pointer(bp + 564)) = 0
 58872  				if tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 2*8)), bp+564) != 0 {
 58873  					return TCL_ERROR
 58874  				}
 58875  				(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = *(*int32)(unsafe.Pointer(bp + 564))
 58876  			}
 58877  			tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, (*Testvfs)(unsafe.Pointer(p)).FiSectorsize))
 58878  			break
 58879  
 58880  		}
 58881  	}
 58882  
 58883  	return TCL_OK
 58884  }
 58885  
 58886  type TestvfsSubcmd = struct {
 58887  	FzName       uintptr
 58888  	FeCmd        uint32
 58889  	F__ccgo_pad1 [4]byte
 58890  }
 58891  
 58892  type VfsMethod = struct {
 58893  	FzName       uintptr
 58894  	Fmask        int32
 58895  	F__ccgo_pad1 [4]byte
 58896  }
 58897  
 58898  var vfsmethod = [18]VfsMethod{
 58899  	{FzName: ts + 38730, Fmask: TESTVFS_SHMOPEN_MASK},
 58900  	{FzName: ts + 35733, Fmask: TESTVFS_SHMLOCK_MASK},
 58901  	{FzName: ts + 35742, Fmask: TESTVFS_SHMBARRIER_MASK},
 58902  	{FzName: ts + 35723, Fmask: TESTVFS_SHMCLOSE_MASK},
 58903  	{FzName: ts + 35754, Fmask: TESTVFS_SHMMAP_MASK},
 58904  	{FzName: ts + 27843, Fmask: TESTVFS_SYNC_MASK},
 58905  	{FzName: ts + 35661, Fmask: TESTVFS_DELETE_MASK},
 58906  	{FzName: ts + 35569, Fmask: TESTVFS_WRITE_MASK},
 58907  	{FzName: ts + 35563, Fmask: TESTVFS_READ_MASK},
 58908  	{FzName: ts + 35576, Fmask: TESTVFS_TRUNCATE_MASK},
 58909  	{FzName: ts + 27421, Fmask: TESTVFS_OPEN_MASK},
 58910  	{FzName: ts + 35556, Fmask: TESTVFS_CLOSE_MASK},
 58911  	{FzName: ts + 35669, Fmask: TESTVFS_ACCESS_MASK},
 58912  	{FzName: ts + 35677, Fmask: TESTVFS_FULLPATHNAME_MASK},
 58913  	{FzName: ts + 35602, Fmask: TESTVFS_UNLOCK_MASK},
 58914  	{FzName: ts + 35596, Fmask: TESTVFS_LOCK_MASK},
 58915  	{FzName: ts + 38596, Fmask: TESTVFS_CKLOCK_MASK},
 58916  	{FzName: ts + 35624, Fmask: TESTVFS_FCNTL_MASK},
 58917  }
 58918  
 58919  func testvfs_obj_del(tls *libc.TLS, cd ClientData) {
 58920  	var p uintptr = cd
 58921  	if (*Testvfs)(unsafe.Pointer(p)).FpScript != 0 {
 58922  		for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 58923  			var _objPtr uintptr = (*Testvfs)(unsafe.Pointer(p)).FpScript
 58924  			if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 58925  				tcl.XTclFreeObj(tls, _objPtr)
 58926  			}
 58927  		}
 58928  	}
 58929  	sqlite3.Xsqlite3_vfs_unregister(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 58930  	libc.Xmemset(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs, 0, uint64(unsafe.Sizeof(sqlite3_vfs{})))
 58931  	tcl.XTcl_Free(tls, (*Testvfs)(unsafe.Pointer(p)).FpVfs)
 58932  	libc.Xmemset(tls, p, 0, uint64(unsafe.Sizeof(Testvfs{})))
 58933  	tcl.XTcl_Free(tls, p)
 58934  }
 58935  
 58936  func testvfs_cmd(tls *libc.TLS, cd ClientData, interp uintptr, objc int32, objv uintptr) int32 {
 58937  	bp := tls.Alloc(28)
 58938  	defer tls.Free(28)
 58939  
 58940  	var p uintptr
 58941  	var pVfs uintptr
 58942  	var zVfs uintptr
 58943  	var nByte int32
 58944  
 58945  	var i int32
 58946  
 58947  	var zSwitch uintptr
 58948  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 58949  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 58950  	*(*int32)(unsafe.Pointer(bp + 8)) = 0
 58951  	*(*int32)(unsafe.Pointer(bp + 12)) = 0
 58952  	*(*int32)(unsafe.Pointer(bp + 16)) = -1
 58953  	*(*int32)(unsafe.Pointer(bp + 20)) = 3
 58954  
 58955  	if !(objc < 2 || 0 != objc%2) {
 58956  		goto __1
 58957  	}
 58958  	goto bad_args
 58959  __1:
 58960  	;
 58961  	i = 2
 58962  __2:
 58963  	if !(i < objc) {
 58964  		goto __4
 58965  	}
 58966  	zSwitch = tcl.XTcl_GetStringFromObj(tls, *(*uintptr)(unsafe.Pointer(objv + uintptr(i)*8)), bp)
 58967  
 58968  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39003, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58969  		goto __5
 58970  	}
 58971  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+4) != 0) {
 58972  		goto __7
 58973  	}
 58974  	return TCL_ERROR
 58975  __7:
 58976  	;
 58977  	if !(*(*int32)(unsafe.Pointer(bp + 4)) != 0) {
 58978  		goto __8
 58979  	}
 58980  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 58981  __8:
 58982  	;
 58983  	goto __6
 58984  __5:
 58985  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+26779, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58986  		goto __9
 58987  	}
 58988  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+8) != 0) {
 58989  		goto __11
 58990  	}
 58991  	return TCL_ERROR
 58992  __11:
 58993  	;
 58994  	goto __10
 58995  __9:
 58996  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39010, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 58997  		goto __12
 58998  	}
 58999  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+12) != 0) {
 59000  		goto __14
 59001  	}
 59002  	return TCL_ERROR
 59003  __14:
 59004  	;
 59005  	goto __13
 59006  __12:
 59007  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39020, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59008  		goto __15
 59009  	}
 59010  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+16) != 0) {
 59011  		goto __17
 59012  	}
 59013  	return TCL_ERROR
 59014  __17:
 59015  	;
 59016  	goto __16
 59017  __15:
 59018  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39032, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59019  		goto __18
 59020  	}
 59021  	if !(tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+20) != 0) {
 59022  		goto __20
 59023  	}
 59024  	return TCL_ERROR
 59025  __20:
 59026  	;
 59027  	goto __19
 59028  __18:
 59029  	if !(*(*int32)(unsafe.Pointer(bp)) > 2 && 0 == libc.Xstrncmp(tls, ts+39042, zSwitch, uint64(*(*int32)(unsafe.Pointer(bp))))) {
 59030  		goto __21
 59031  	}
 59032  	if !(tcl.XTcl_GetBooleanFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + uintptr(i+1)*8)), bp+24) != 0) {
 59033  		goto __23
 59034  	}
 59035  	return TCL_ERROR
 59036  __23:
 59037  	;
 59038  	if !(*(*int32)(unsafe.Pointer(bp + 24)) != 0) {
 59039  		goto __24
 59040  	}
 59041  	*(*int32)(unsafe.Pointer(bp + 4)) = 0
 59042  __24:
 59043  	;
 59044  	goto __22
 59045  __21:
 59046  	goto bad_args
 59047  __22:
 59048  	;
 59049  __19:
 59050  	;
 59051  __16:
 59052  	;
 59053  __13:
 59054  	;
 59055  __10:
 59056  	;
 59057  __6:
 59058  	;
 59059  	goto __3
 59060  __3:
 59061  	i = i + 2
 59062  	goto __2
 59063  	goto __4
 59064  __4:
 59065  	;
 59066  	if !(uint64(*(*int32)(unsafe.Pointer(bp + 12))) < uint64(unsafe.Sizeof(TestvfsFile{}))) {
 59067  		goto __25
 59068  	}
 59069  	*(*int32)(unsafe.Pointer(bp + 12)) = int32(unsafe.Sizeof(TestvfsFile{}))
 59070  __25:
 59071  	;
 59072  	zVfs = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8)))
 59073  	nByte = int32(uint64(unsafe.Sizeof(Testvfs{})) + uint64(int32(libc.Xstrlen(tls, zVfs))) + uint64(1))
 59074  	p = tcl.XTcl_Alloc(tls, uint32(nByte))
 59075  	libc.Xmemset(tls, p, 0, uint64(nByte))
 59076  	(*Testvfs)(unsafe.Pointer(p)).FiDevchar = -1
 59077  	(*Testvfs)(unsafe.Pointer(p)).FiSectorsize = -1
 59078  
 59079  	tcl.XTcl_CreateObjCommand(tls, interp, zVfs, *(*uintptr)(unsafe.Pointer(&struct {
 59080  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59081  	}{testvfs_obj_cmd})), p, *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, ClientData) }{testvfs_obj_del})))
 59082  	(*Testvfs)(unsafe.Pointer(p)).FpParent = sqlite3.Xsqlite3_vfs_find(tls, uintptr(0))
 59083  	(*Testvfs)(unsafe.Pointer(p)).Finterp = interp
 59084  
 59085  	(*Testvfs)(unsafe.Pointer(p)).FzName = p + 1*104
 59086  	libc.Xmemcpy(tls, (*Testvfs)(unsafe.Pointer(p)).FzName, zVfs, libc.Xstrlen(tls, zVfs)+uint64(1))
 59087  
 59088  	pVfs = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(sqlite3_vfs{})))
 59089  	libc.Xmemcpy(tls, pVfs, uintptr(unsafe.Pointer(&tvfs_vfs)), uint64(unsafe.Sizeof(sqlite3_vfs{})))
 59090  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FpAppData = p
 59091  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FiVersion = *(*int32)(unsafe.Pointer(bp + 20))
 59092  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FzName = (*Testvfs)(unsafe.Pointer(p)).FzName
 59093  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = (*sqlite3_vfs)(unsafe.Pointer((*Testvfs)(unsafe.Pointer(p)).FpParent)).FmxPathname
 59094  	if !(*(*int32)(unsafe.Pointer(bp + 16)) >= 0 && *(*int32)(unsafe.Pointer(bp + 16)) < (*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname) {
 59095  		goto __26
 59096  	}
 59097  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FmxPathname = *(*int32)(unsafe.Pointer(bp + 16))
 59098  __26:
 59099  	;
 59100  	(*sqlite3_vfs)(unsafe.Pointer(pVfs)).FszOsFile = *(*int32)(unsafe.Pointer(bp + 12))
 59101  	(*Testvfs)(unsafe.Pointer(p)).FpVfs = pVfs
 59102  	(*Testvfs)(unsafe.Pointer(p)).FisNoshm = *(*int32)(unsafe.Pointer(bp + 4))
 59103  	(*Testvfs)(unsafe.Pointer(p)).FisFullshm = *(*int32)(unsafe.Pointer(bp + 24))
 59104  	(*Testvfs)(unsafe.Pointer(p)).Fmask = TESTVFS_ALL_MASK
 59105  
 59106  	sqlite3.Xsqlite3_vfs_register(tls, pVfs, *(*int32)(unsafe.Pointer(bp + 8)))
 59107  
 59108  	return TCL_OK
 59109  
 59110  bad_args:
 59111  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39051)
 59112  	return TCL_ERROR
 59113  }
 59114  
 59115  var tvfs_vfs = sqlite3_vfs{
 59116  	FiVersion:      3,
 59117  	FxOpen:         0,
 59118  	FxDelete:       0,
 59119  	FxAccess:       0,
 59120  	FxFullPathname: 0,
 59121  	FxRandomness:   0,
 59122  	FxSleep:        0,
 59123  	FxCurrentTime:  0,
 59124  }
 59125  
 59126  func test_vfs_shmlock(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59127  	bp := tls.Alloc(88)
 59128  	defer tls.Free(88)
 59129  
 59130  	*(*[3]uintptr)(unsafe.Pointer(bp + 8)) = [3]uintptr{ts + 39155, ts + 13978, uintptr(0)}
 59131  	*(*[3]uintptr)(unsafe.Pointer(bp + 40)) = [3]uintptr{ts + 39162, ts + 39167, uintptr(0)}
 59132  	*(*uintptr)(unsafe.Pointer(bp)) = uintptr(0)
 59133  	var rc int32 = SQLITE_OK
 59134  	var zDbname uintptr = uintptr(0)
 59135  	*(*int32)(unsafe.Pointer(bp + 32)) = 0
 59136  	*(*int32)(unsafe.Pointer(bp + 64)) = 0
 59137  	*(*int32)(unsafe.Pointer(bp + 68)) = 0
 59138  	*(*int32)(unsafe.Pointer(bp + 72)) = 0
 59139  
 59140  	if objc != 7 {
 59141  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv,
 59142  			ts+39174)
 59143  		return TCL_ERROR
 59144  	}
 59145  
 59146  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59147  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 ||
 59148  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+8, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+32) != 0 ||
 59149  		tcl.XTcl_GetIndexFromObjStruct(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+40, int32(unsafe.Sizeof(uintptr(0))), ts+39226, 0, bp+64) != 0 ||
 59150  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 5*8)), bp+68) != 0 ||
 59151  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 6*8)), bp+72) != 0 {
 59152  		return TCL_ERROR
 59153  	}
 59154  
 59155  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+80)
 59156  	if *(*uintptr)(unsafe.Pointer(bp + 80)) == uintptr(0) {
 59157  		return TCL_ERROR
 59158  	}
 59159  	rc = (*struct {
 59160  		f func(*libc.TLS, uintptr, int32, int32, int32) int32
 59161  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 80)))).FpMethods)).FxShmLock})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 80)), *(*int32)(unsafe.Pointer(bp + 68)), *(*int32)(unsafe.Pointer(bp + 72)),
 59162  		func() int32 {
 59163  			if *(*int32)(unsafe.Pointer(bp + 32)) == 0 {
 59164  				return SQLITE_SHM_SHARED
 59165  			}
 59166  			return SQLITE_SHM_EXCLUSIVE
 59167  		}()|
 59168  			func() int32 {
 59169  				if *(*int32)(unsafe.Pointer(bp + 64)) == 0 {
 59170  					return SQLITE_SHM_LOCK
 59171  				}
 59172  				return SQLITE_SHM_UNLOCK
 59173  			}())
 59174  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59175  	return TCL_OK
 59176  }
 59177  
 59178  func test_vfs_set_readmark(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59179  	bp := tls.Alloc(48)
 59180  	defer tls.Free(48)
 59181  
 59182  	*(*uintptr)(unsafe.Pointer(bp + 16)) = uintptr(0)
 59183  	var rc int32 = SQLITE_OK
 59184  	var zDbname uintptr = uintptr(0)
 59185  	*(*int32)(unsafe.Pointer(bp + 24)) = 0
 59186  	*(*int32)(unsafe.Pointer(bp + 28)) = -1
 59187  
 59188  	*(*uintptr)(unsafe.Pointer(bp + 40)) = uintptr(0)
 59189  	var aShm uintptr
 59190  	var iOff int32
 59191  
 59192  	if objc != 4 && objc != 5 {
 59193  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39230)
 59194  		return TCL_ERROR
 59195  	}
 59196  
 59197  	zDbname = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59198  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp+16) != 0 ||
 59199  		tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 3*8)), bp+24) != 0 ||
 59200  		objc == 5 && tcl.XTcl_GetIntFromObj(tls, interp, *(*uintptr)(unsafe.Pointer(objv + 4*8)), bp+28) != 0 {
 59201  		return TCL_ERROR
 59202  	}
 59203  
 59204  	sqlite3.Xsqlite3_file_control(tls, *(*uintptr)(unsafe.Pointer(bp + 16)), zDbname, SQLITE_FCNTL_FILE_POINTER, bp+32)
 59205  	if *(*uintptr)(unsafe.Pointer(bp + 32)) == uintptr(0) {
 59206  		return TCL_ERROR
 59207  	}
 59208  	rc = (*struct {
 59209  		f func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32
 59210  	})(unsafe.Pointer(&struct{ uintptr }{(*sqlite3_io_methods1)(unsafe.Pointer((*sqlite3_file)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(bp + 32)))).FpMethods)).FxShmMap})).f(tls, *(*uintptr)(unsafe.Pointer(bp + 32)), 0, 32*1024, 0, bp+40)
 59211  	if rc != SQLITE_OK {
 59212  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59213  		return TCL_ERROR
 59214  	}
 59215  	if *(*uintptr)(unsafe.Pointer(bp + 40)) == uintptr(0) {
 59216  		tcl.XTcl_AppendResult(tls, interp, libc.VaList(bp, ts+39253, 0))
 59217  		return TCL_ERROR
 59218  	}
 59219  	aShm = *(*uintptr)(unsafe.Pointer(bp + 40))
 59220  	iOff = 12*2 + 1 + *(*int32)(unsafe.Pointer(bp + 24))
 59221  
 59222  	if objc == 5 {
 59223  		*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)) = u32(*(*int32)(unsafe.Pointer(bp + 28)))
 59224  	}
 59225  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewIntObj(tls, int32(*(*u32)(unsafe.Pointer(aShm + uintptr(iOff)*4)))))
 59226  
 59227  	return TCL_OK
 59228  }
 59229  
 59230  func Sqlitetestvfs_Init(tls *libc.TLS, interp uintptr) int32 {
 59231  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39277, *(*uintptr)(unsafe.Pointer(&struct {
 59232  		f func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32
 59233  	}{testvfs_cmd})), uintptr(0), uintptr(0))
 59234  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39285, *(*uintptr)(unsafe.Pointer(&struct {
 59235  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59236  	}{test_vfs_shmlock})), uintptr(0), uintptr(0))
 59237  	tcl.XTcl_CreateObjCommand(tls, interp, ts+39297, *(*uintptr)(unsafe.Pointer(&struct {
 59238  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59239  	}{test_vfs_set_readmark})), uintptr(0), uintptr(0))
 59240  	return TCL_OK
 59241  }
 59242  
 59243  type TestWindow1 = struct {
 59244  	FxStep    uintptr
 59245  	FxFinal   uintptr
 59246  	FxValue   uintptr
 59247  	FxInverse uintptr
 59248  	Finterp   uintptr
 59249  }
 59250  
 59251  type TestWindow = TestWindow1
 59252  
 59253  type TestWindowCtx1 = struct{ FpVal uintptr }
 59254  
 59255  type TestWindowCtx = TestWindowCtx1
 59256  
 59257  func doTestWindowStep(tls *libc.TLS, bInverse int32, ctx uintptr, nArg int32, apArg uintptr) {
 59258  	var i int32
 59259  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59260  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59261  		if bInverse != 0 {
 59262  			return (*TestWindow)(unsafe.Pointer(p)).FxInverse
 59263  		}
 59264  		return (*TestWindow)(unsafe.Pointer(p)).FxStep
 59265  	}())
 59266  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59267  
 59268  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59269  	if pCtx != 0 {
 59270  		var zResult uintptr
 59271  		var rc int32
 59272  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59273  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59274  		} else {
 59275  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59276  		}
 59277  		for i = 0; i < nArg; i++ {
 59278  			var pArg uintptr
 59279  			pArg = tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3_value_text(tls, *(*uintptr)(unsafe.Pointer(apArg + uintptr(i)*8))), -1)
 59280  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, pArg)
 59281  		}
 59282  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59283  		if rc != TCL_OK {
 59284  			zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59285  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59286  		} else {
 59287  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59288  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59289  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59290  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59291  						tcl.XTclFreeObj(tls, _objPtr)
 59292  					}
 59293  				}
 59294  			}
 59295  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = tcl.XTcl_DuplicateObj(tls, tcl.XTcl_GetObjResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp))
 59296  			(*Tcl_Obj)(unsafe.Pointer((*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal)).FrefCount++
 59297  		}
 59298  	}
 59299  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59300  		var _objPtr uintptr = pEval
 59301  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59302  			tcl.XTclFreeObj(tls, _objPtr)
 59303  		}
 59304  	}
 59305  }
 59306  
 59307  func doTestWindowFinalize(tls *libc.TLS, bValue int32, ctx uintptr) {
 59308  	var p uintptr = sqlite3.Xsqlite3_user_data(tls, ctx)
 59309  	var pEval uintptr = tcl.XTcl_DuplicateObj(tls, func() uintptr {
 59310  		if bValue != 0 {
 59311  			return (*TestWindow)(unsafe.Pointer(p)).FxValue
 59312  		}
 59313  		return (*TestWindow)(unsafe.Pointer(p)).FxFinal
 59314  	}())
 59315  	var pCtx uintptr = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(TestWindowCtx{})))
 59316  
 59317  	(*Tcl_Obj)(unsafe.Pointer(pEval)).FrefCount++
 59318  	if pCtx != 0 {
 59319  		var zResult uintptr
 59320  		var rc int32
 59321  		if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59322  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_DuplicateObj(tls, (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal))
 59323  		} else {
 59324  			tcl.XTcl_ListObjAppendElement(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, tcl.XTcl_NewStringObj(tls, ts+584, -1))
 59325  		}
 59326  
 59327  		rc = tcl.XTcl_EvalObjEx(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp, pEval, TCL_EVAL_GLOBAL)
 59328  		zResult = tcl.XTcl_GetStringResult(tls, (*TestWindow)(unsafe.Pointer(p)).Finterp)
 59329  		if rc != TCL_OK {
 59330  			sqlite3.Xsqlite3_result_error(tls, ctx, zResult, -1)
 59331  		} else {
 59332  			sqlite3.Xsqlite3_result_text(tls, ctx, zResult, -1, libc.UintptrFromInt32(-1))
 59333  		}
 59334  
 59335  		if bValue == 0 {
 59336  			if (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal != 0 {
 59337  				for __ccgo := true; __ccgo; __ccgo = 0 != 0 {
 59338  					var _objPtr uintptr = (*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal
 59339  					if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59340  						tcl.XTclFreeObj(tls, _objPtr)
 59341  					}
 59342  				}
 59343  			}
 59344  			(*TestWindowCtx)(unsafe.Pointer(pCtx)).FpVal = uintptr(0)
 59345  		}
 59346  	}
 59347  	for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 {
 59348  		var _objPtr uintptr = pEval
 59349  		if libc.PostDecInt32(&(*Tcl_Obj)(unsafe.Pointer(_objPtr)).FrefCount, 1) <= 1 {
 59350  			tcl.XTclFreeObj(tls, _objPtr)
 59351  		}
 59352  	}
 59353  }
 59354  
 59355  func testWindowStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59356  	doTestWindowStep(tls, 0, ctx, nArg, apArg)
 59357  }
 59358  
 59359  func testWindowInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59360  	doTestWindowStep(tls, 1, ctx, nArg, apArg)
 59361  }
 59362  
 59363  func testWindowFinal(tls *libc.TLS, ctx uintptr) {
 59364  	doTestWindowFinalize(tls, 0, ctx)
 59365  }
 59366  
 59367  func testWindowValue(tls *libc.TLS, ctx uintptr) {
 59368  	doTestWindowFinalize(tls, 1, ctx)
 59369  }
 59370  
 59371  func testWindowDestroy(tls *libc.TLS, pCtx uintptr) {
 59372  	tcl.XTcl_Free(tls, pCtx)
 59373  }
 59374  
 59375  func test_create_window(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59376  	bp := tls.Alloc(8)
 59377  	defer tls.Free(8)
 59378  
 59379  	var pNew uintptr
 59380  
 59381  	var zName uintptr
 59382  	var rc int32
 59383  
 59384  	if objc != 7 {
 59385  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+39314)
 59386  		return TCL_ERROR
 59387  	}
 59388  
 59389  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59390  		return TCL_ERROR
 59391  	}
 59392  	zName = tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 2*8)))
 59393  	pNew = tcl.XTcl_Alloc(tls, uint32(unsafe.Sizeof(TestWindow{})))
 59394  	libc.Xmemset(tls, pNew, 0, uint64(unsafe.Sizeof(TestWindow{})))
 59395  	(*TestWindow)(unsafe.Pointer(pNew)).FxStep = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 3*8)))
 59396  	(*TestWindow)(unsafe.Pointer(pNew)).FxFinal = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 4*8)))
 59397  	(*TestWindow)(unsafe.Pointer(pNew)).FxValue = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 5*8)))
 59398  	(*TestWindow)(unsafe.Pointer(pNew)).FxInverse = tcl.XTcl_DuplicateObj(tls, *(*uintptr)(unsafe.Pointer(objv + 6*8)))
 59399  	(*TestWindow)(unsafe.Pointer(pNew)).Finterp = interp
 59400  
 59401  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxStep)).FrefCount++
 59402  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxFinal)).FrefCount++
 59403  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxValue)).FrefCount++
 59404  	(*Tcl_Obj)(unsafe.Pointer((*TestWindow)(unsafe.Pointer(pNew)).FxInverse)).FrefCount++
 59405  
 59406  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), zName, -1, SQLITE_UTF8, pNew,
 59407  		*(*uintptr)(unsafe.Pointer(&struct {
 59408  			f func(*libc.TLS, uintptr, int32, uintptr)
 59409  		}{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 {
 59410  			f func(*libc.TLS, uintptr, int32, uintptr)
 59411  		}{testWindowInverse})),
 59412  		*(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowDestroy})))
 59413  	if rc != SQLITE_OK {
 59414  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59415  		return TCL_ERROR
 59416  	}
 59417  
 59418  	return TCL_OK
 59419  }
 59420  
 59421  func test_create_window_misuse(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59422  	bp := tls.Alloc(8)
 59423  	defer tls.Free(8)
 59424  
 59425  	var rc int32
 59426  
 59427  	if !(objc != 2) {
 59428  		goto __1
 59429  	}
 59430  	tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59431  	return TCL_ERROR
 59432  __1:
 59433  	;
 59434  	if !(getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0) {
 59435  		goto __2
 59436  	}
 59437  	return TCL_ERROR
 59438  __2:
 59439  	;
 59440  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59441  		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 {
 59442  			f func(*libc.TLS, uintptr, int32, uintptr)
 59443  		}{testWindowInverse})),
 59444  		uintptr(0))
 59445  	if !(rc != SQLITE_MISUSE) {
 59446  		goto __3
 59447  	}
 59448  	goto error
 59449  __3:
 59450  	;
 59451  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59452  		*(*uintptr)(unsafe.Pointer(&struct {
 59453  			f func(*libc.TLS, uintptr, int32, uintptr)
 59454  		}{testWindowStep})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), *(*uintptr)(unsafe.Pointer(&struct {
 59455  			f func(*libc.TLS, uintptr, int32, uintptr)
 59456  		}{testWindowInverse})),
 59457  		uintptr(0))
 59458  	if !(rc != SQLITE_MISUSE) {
 59459  		goto __4
 59460  	}
 59461  	goto error
 59462  __4:
 59463  	;
 59464  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59465  		*(*uintptr)(unsafe.Pointer(&struct {
 59466  			f func(*libc.TLS, uintptr, int32, uintptr)
 59467  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59468  			f func(*libc.TLS, uintptr, int32, uintptr)
 59469  		}{testWindowInverse})),
 59470  		uintptr(0))
 59471  	if !(rc != SQLITE_MISUSE) {
 59472  		goto __5
 59473  	}
 59474  	goto error
 59475  __5:
 59476  	;
 59477  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39351, -1, SQLITE_UTF8, uintptr(0),
 59478  		*(*uintptr)(unsafe.Pointer(&struct {
 59479  			f func(*libc.TLS, uintptr, int32, uintptr)
 59480  		}{testWindowStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowFinal})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{testWindowValue})), uintptr(0),
 59481  		uintptr(0))
 59482  	if !(rc != SQLITE_MISUSE) {
 59483  		goto __6
 59484  	}
 59485  	goto error
 59486  __6:
 59487  	;
 59488  	return TCL_OK
 59489  
 59490  error:
 59491  	tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, ts+39355, -1))
 59492  	return TCL_ERROR
 59493  }
 59494  
 59495  func sumintStep(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59496  	var pInt uintptr
 59497  
 59498  	if sqlite3.Xsqlite3_value_type(tls, *(*uintptr)(unsafe.Pointer(apArg))) != SQLITE_INTEGER {
 59499  		sqlite3.Xsqlite3_result_error(tls, ctx, ts+39373, -1)
 59500  		return
 59501  	}
 59502  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 59503  	if pInt != 0 {
 59504  		*(*sqlite3_int64)(unsafe.Pointer(pInt)) += sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 59505  	}
 59506  }
 59507  
 59508  func sumintInverse(tls *libc.TLS, ctx uintptr, nArg int32, apArg uintptr) {
 59509  	var pInt uintptr
 59510  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, int32(unsafe.Sizeof(sqlite3_int64(0))))
 59511  	*(*sqlite3_int64)(unsafe.Pointer(pInt)) -= sqlite3.Xsqlite3_value_int64(tls, *(*uintptr)(unsafe.Pointer(apArg)))
 59512  }
 59513  
 59514  func sumintFinal(tls *libc.TLS, ctx uintptr) {
 59515  	var res sqlite3_int64 = int64(0)
 59516  	var pInt uintptr
 59517  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 59518  	if pInt != 0 {
 59519  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 59520  	}
 59521  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 59522  }
 59523  
 59524  func sumintValue(tls *libc.TLS, ctx uintptr) {
 59525  	var res sqlite3_int64 = int64(0)
 59526  	var pInt uintptr
 59527  	pInt = sqlite3.Xsqlite3_aggregate_context(tls, ctx, 0)
 59528  	if pInt != 0 {
 59529  		res = *(*sqlite3_int64)(unsafe.Pointer(pInt))
 59530  	}
 59531  	sqlite3.Xsqlite3_result_int64(tls, ctx, res)
 59532  }
 59533  
 59534  func test_create_sumint(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59535  	bp := tls.Alloc(8)
 59536  	defer tls.Free(8)
 59537  
 59538  	var rc int32
 59539  
 59540  	if objc != 2 {
 59541  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59542  		return TCL_ERROR
 59543  	}
 59544  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59545  		return TCL_ERROR
 59546  	}
 59547  
 59548  	rc = sqlite3.Xsqlite3_create_window_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39390, 1, SQLITE_UTF8, uintptr(0),
 59549  		*(*uintptr)(unsafe.Pointer(&struct {
 59550  			f func(*libc.TLS, uintptr, int32, uintptr)
 59551  		}{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 {
 59552  			f func(*libc.TLS, uintptr, int32, uintptr)
 59553  		}{sumintInverse})),
 59554  		uintptr(0))
 59555  
 59556  	if rc != SQLITE_OK {
 59557  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59558  		return TCL_ERROR
 59559  	}
 59560  	return TCL_OK
 59561  }
 59562  
 59563  func test_override_sum(tls *libc.TLS, clientData uintptr, interp uintptr, objc int32, objv uintptr) int32 {
 59564  	bp := tls.Alloc(8)
 59565  	defer tls.Free(8)
 59566  
 59567  	var rc int32
 59568  
 59569  	if objc != 2 {
 59570  		tcl.XTcl_WrongNumArgs(tls, interp, 1, objv, ts+2050)
 59571  		return TCL_ERROR
 59572  	}
 59573  	if getDbPointer(tls, interp, tcl.XTcl_GetString(tls, *(*uintptr)(unsafe.Pointer(objv + 1*8))), bp) != 0 {
 59574  		return TCL_ERROR
 59575  	}
 59576  
 59577  	rc = sqlite3.Xsqlite3_create_function(tls, *(*uintptr)(unsafe.Pointer(bp)), ts+39397, -1, SQLITE_UTF8, uintptr(0),
 59578  		uintptr(0), *(*uintptr)(unsafe.Pointer(&struct {
 59579  			f func(*libc.TLS, uintptr, int32, uintptr)
 59580  		}{sumintStep})), *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, uintptr) }{sumintFinal})))
 59581  
 59582  	if rc != SQLITE_OK {
 59583  		tcl.XTcl_SetObjResult(tls, interp, tcl.XTcl_NewStringObj(tls, sqlite3.Xsqlite3ErrName(tls, rc), -1))
 59584  		return TCL_ERROR
 59585  	}
 59586  	return TCL_OK
 59587  }
 59588  
 59589  func Sqlitetest_window_Init(tls *libc.TLS, interp uintptr) int32 {
 59590  	var i int32
 59591  	for i = 0; uint64(i) < uint64(unsafe.Sizeof(aObjCmd14))/uint64(unsafe.Sizeof(struct {
 59592  		FzName       uintptr
 59593  		FxProc       uintptr
 59594  		FclientData  int32
 59595  		F__ccgo_pad1 [4]byte
 59596  	}{})); i++ {
 59597  		var c ClientData = uintptr(intptr_t(aObjCmd14[i].FclientData))
 59598  		tcl.XTcl_CreateObjCommand(tls, interp, aObjCmd14[i].FzName, aObjCmd14[i].FxProc, c, uintptr(0))
 59599  	}
 59600  	return TCL_OK
 59601  }
 59602  
 59603  var aObjCmd14 = [4]struct {
 59604  	FzName       uintptr
 59605  	FxProc       uintptr
 59606  	FclientData  int32
 59607  	F__ccgo_pad1 [4]byte
 59608  }{
 59609  	{FzName: ts + 39401, FxProc: 0},
 59610  	{FzName: ts + 39432, FxProc: 0},
 59611  	{FzName: ts + 39467, FxProc: 0},
 59612  	{FzName: ts + 39486, FxProc: 0},
 59613  }
 59614  
 59615  func init() {
 59616  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 8)) = cfClose
 59617  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 16)) = cfRead
 59618  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 24)) = cfWrite
 59619  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 32)) = cfTruncate
 59620  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 40)) = cfSync
 59621  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 48)) = cfFileSize
 59622  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 56)) = cfLock
 59623  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 64)) = cfUnlock
 59624  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 72)) = cfCheckReservedLock
 59625  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 80)) = cfFileControl
 59626  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 88)) = cfSectorSize
 59627  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 96)) = cfDeviceCharacteristics
 59628  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 104)) = cfShmMap
 59629  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 112)) = cfShmLock
 59630  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 120)) = cfShmBarrier
 59631  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CrashFileVtab)) + 128)) = cfShmUnmap
 59632  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 8)) = csvtabCreate
 59633  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 16)) = csvtabConnect
 59634  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 24)) = csvtabBestIndex
 59635  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 32)) = csvtabDisconnect
 59636  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 40)) = csvtabDisconnect
 59637  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 48)) = csvtabOpen
 59638  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 56)) = csvtabClose
 59639  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 64)) = csvtabFilter
 59640  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 72)) = csvtabNext
 59641  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 80)) = csvtabEof
 59642  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 88)) = csvtabColumn
 59643  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModule)) + 96)) = csvtabRowid
 59644  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 8)) = csvtabCreate
 59645  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 16)) = csvtabConnect
 59646  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 24)) = csvtabBestIndex
 59647  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 32)) = csvtabDisconnect
 59648  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 40)) = csvtabDisconnect
 59649  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 48)) = csvtabOpen
 59650  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 56)) = csvtabClose
 59651  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 64)) = csvtabFilter
 59652  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 72)) = csvtabNext
 59653  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 80)) = csvtabEof
 59654  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 88)) = csvtabColumn
 59655  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 96)) = csvtabRowid
 59656  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&CsvModuleFauxWrite)) + 104)) = csvtabUpdate
 59657  	*(*func(*libc.TLS, ClientData, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 16)) = incrblobClose
 59658  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 24)) = incrblobInput
 59659  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 32)) = incrblobOutput
 59660  	*(*func(*libc.TLS, ClientData, int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 40)) = incrblobSeek
 59661  	*(*func(*libc.TLS, ClientData, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 64)) = incrblobWatch
 59662  	*(*func(*libc.TLS, ClientData, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&IncrblobChannelType)) + 72)) = incrblobHandle
 59663  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 8)) = f5tCreateTokenizer
 59664  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 32)) = f5tTokenizerReturn
 59665  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 56)) = f5tTokenize
 59666  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 80)) = f5tCreateFunction
 59667  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 104)) = f5tMayBeCorrupt
 59668  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 128)) = f5tTokenHash
 59669  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 152)) = f5tRegisterMatchinfo
 59670  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd)) + 176)) = f5tRegisterTok
 59671  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59672  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59673  	}{db_enter}))
 59674  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59675  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59676  	}{db_leave}))
 59677  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59678  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59679  	}{sqlite3_mprintf_int}))
 59680  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59681  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59682  	}{sqlite3_mprintf_int64}))
 59683  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59684  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59685  	}{sqlite3_mprintf_long}))
 59686  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59687  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59688  	}{sqlite3_mprintf_str}))
 59689  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59690  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59691  	}{sqlite3_snprintf_str}))
 59692  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59693  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59694  	}{sqlite3_mprintf_stronly}))
 59695  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59696  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59697  	}{sqlite3_mprintf_double}))
 59698  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59699  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59700  	}{sqlite3_mprintf_scaled}))
 59701  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59702  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59703  	}{sqlite3_mprintf_hexdouble}))
 59704  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59705  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59706  	}{test_mprintf_z}))
 59707  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59708  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59709  	}{test_mprintf_n}))
 59710  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59711  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59712  	}{test_snprintf_int}))
 59713  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59714  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59715  	}{test_last_rowid}))
 59716  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 59717  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59718  	}{test_exec_printf}))
 59719  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 59720  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59721  	}{test_exec_hex}))
 59722  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 59723  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59724  	}{test_exec}))
 59725  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 59726  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59727  	}{test_exec_nr}))
 59728  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 59729  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59730  	}{test_get_table_printf}))
 59731  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 59732  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59733  	}{sqlite_test_close}))
 59734  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 344)) = *(*uintptr)(unsafe.Pointer(&struct {
 59735  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59736  	}{sqlite_test_close_v2}))
 59737  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 59738  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59739  	}{test_create_function}))
 59740  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 376)) = *(*uintptr)(unsafe.Pointer(&struct {
 59741  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59742  	}{test_create_aggregate}))
 59743  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 59744  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59745  	}{test_drop_modules}))
 59746  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 408)) = *(*uintptr)(unsafe.Pointer(&struct {
 59747  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59748  	}{test_register_func}))
 59749  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 59750  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59751  	}{sqlite_abort}))
 59752  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 440)) = *(*uintptr)(unsafe.Pointer(&struct {
 59753  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59754  	}{test_bind}))
 59755  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 59756  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59757  	}{test_breakpoint}))
 59758  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 472)) = *(*uintptr)(unsafe.Pointer(&struct {
 59759  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59760  	}{test_key}))
 59761  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 59762  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59763  	}{test_rekey}))
 59764  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 504)) = *(*uintptr)(unsafe.Pointer(&struct {
 59765  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59766  	}{test_interrupt}))
 59767  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 59768  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59769  	}{delete_function}))
 59770  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 536)) = *(*uintptr)(unsafe.Pointer(&struct {
 59771  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59772  	}{delete_collation}))
 59773  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 59774  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59775  	}{get_autocommit}))
 59776  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 568)) = *(*uintptr)(unsafe.Pointer(&struct {
 59777  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59778  	}{test_busy_timeout}))
 59779  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 584)) = *(*uintptr)(unsafe.Pointer(&struct {
 59780  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59781  	}{test_printf}))
 59782  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 600)) = *(*uintptr)(unsafe.Pointer(&struct {
 59783  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59784  	}{test_io_trace}))
 59785  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd1)) + 616)) = *(*uintptr)(unsafe.Pointer(&struct {
 59786  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59787  	}{clang_sanitize_address}))
 59788  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59789  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59790  	}{pager_open}))
 59791  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59792  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59793  	}{pager_close}))
 59794  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59795  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59796  	}{pager_commit}))
 59797  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59798  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59799  	}{pager_rollback}))
 59800  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59801  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59802  	}{pager_stmt_begin}))
 59803  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59804  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59805  	}{pager_stmt_commit}))
 59806  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59807  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59808  	}{pager_stmt_rollback}))
 59809  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59810  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59811  	}{pager_stats}))
 59812  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59813  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59814  	}{pager_pagecount}))
 59815  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59816  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59817  	}{page_get}))
 59818  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59819  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59820  	}{page_lookup}))
 59821  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59822  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59823  	}{page_unref}))
 59824  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59825  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59826  	}{page_read}))
 59827  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59828  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59829  	}{page_write}))
 59830  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59831  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59832  	}{page_number}))
 59833  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 248)) = *(*uintptr)(unsafe.Pointer(&struct {
 59834  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59835  	}{pager_truncate}))
 59836  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 59837  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59838  	}{fake_big_file}))
 59839  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 280)) = *(*uintptr)(unsafe.Pointer(&struct {
 59840  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59841  	}{testBitvecBuiltinTest}))
 59842  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 59843  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59844  	}{testPendingByte}))
 59845  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd2)) + 312)) = *(*uintptr)(unsafe.Pointer(&struct {
 59846  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59847  	}{faultInstallCmd}))
 59848  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59849  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59850  	}{btree_open}))
 59851  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59852  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59853  	}{btree_close}))
 59854  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59855  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59856  	}{btree_begin_transaction}))
 59857  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59858  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59859  	}{btree_pager_stats}))
 59860  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59861  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59862  	}{btree_cursor}))
 59863  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59864  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59865  	}{btree_close_cursor}))
 59866  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59867  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59868  	}{btree_next}))
 59869  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59870  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59871  	}{btree_eof}))
 59872  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59873  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59874  	}{btree_payload_size}))
 59875  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59876  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59877  	}{btree_first}))
 59878  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59879  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59880  	}{btree_varint_test}))
 59881  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59882  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59883  	}{btree_from_db}))
 59884  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59885  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59886  	}{btree_ismemdb}))
 59887  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd3)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59888  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59889  	}{btree_set_cache_size}))
 59890  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59891  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59892  	}{tcl_thread_create}))
 59893  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59894  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59895  	}{tcl_thread_wait}))
 59896  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59897  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59898  	}{tcl_thread_halt}))
 59899  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59900  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59901  	}{tcl_thread_argc}))
 59902  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59903  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59904  	}{tcl_thread_argv}))
 59905  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59906  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59907  	}{tcl_thread_colname}))
 59908  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59909  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59910  	}{tcl_thread_result}))
 59911  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59912  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59913  	}{tcl_thread_error}))
 59914  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59915  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59916  	}{tcl_thread_compile}))
 59917  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59918  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59919  	}{tcl_thread_step}))
 59920  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59921  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59922  	}{tcl_thread_finalize}))
 59923  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59924  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59925  	}{tcl_thread_swap}))
 59926  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59927  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59928  	}{tcl_thread_db_get}))
 59929  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 216)) = *(*uintptr)(unsafe.Pointer(&struct {
 59930  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59931  	}{tcl_thread_db_put}))
 59932  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd4)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 59933  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59934  	}{tcl_thread_stmt_get}))
 59935  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59936  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59937  	}{binarize}))
 59938  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59939  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59940  	}{test_value_overhead}))
 59941  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59942  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59943  	}{test_translate}))
 59944  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd5)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59945  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59946  	}{test_translate_selftest}))
 59947  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59948  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59949  	}{tcl_client_create}))
 59950  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59951  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59952  	}{tcl_client_wait}))
 59953  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59954  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59955  	}{tcl_client_halt}))
 59956  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59957  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59958  	}{tcl_client_argc}))
 59959  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 59960  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59961  	}{tcl_client_argv}))
 59962  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 59963  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59964  	}{tcl_client_colname}))
 59965  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 59966  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59967  	}{tcl_client_result}))
 59968  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 59969  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59970  	}{tcl_client_error}))
 59971  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 59972  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59973  	}{tcl_client_compile}))
 59974  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 59975  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59976  	}{tcl_client_step}))
 59977  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 59978  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59979  	}{tcl_client_reset}))
 59980  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 184)) = *(*uintptr)(unsafe.Pointer(&struct {
 59981  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59982  	}{tcl_client_finalize}))
 59983  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd6)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 59984  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59985  	}{tcl_client_swap}))
 59986  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 8)) = test_multiplex_initialize
 59987  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 24)) = test_multiplex_shutdown
 59988  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd7)) + 40)) = test_multiplex_control
 59989  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 59990  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59991  	}{test_shutdown}))
 59992  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 24)) = *(*uintptr)(unsafe.Pointer(&struct {
 59993  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59994  	}{test_initialize}))
 59995  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct {
 59996  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 59997  	}{test_config}))
 59998  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 56)) = *(*uintptr)(unsafe.Pointer(&struct {
 59999  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60000  	}{test_enter_static_mutex}))
 60001  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60002  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60003  	}{test_leave_static_mutex}))
 60004  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 88)) = *(*uintptr)(unsafe.Pointer(&struct {
 60005  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60006  	}{test_enter_db_mutex}))
 60007  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60008  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60009  	}{test_leave_db_mutex}))
 60010  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 120)) = *(*uintptr)(unsafe.Pointer(&struct {
 60011  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60012  	}{test_alloc_mutex}))
 60013  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60014  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60015  	}{test_install_mutex_counters}))
 60016  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60017  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60018  	}{test_read_mutex_counters}))
 60019  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd8)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60020  		f func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32
 60021  	}{test_clear_mutex_counters}))
 60022  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 8)) = test_quota_initialize
 60023  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 24)) = test_quota_shutdown
 60024  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 40)) = test_quota_set
 60025  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 56)) = test_quota_file
 60026  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 72)) = test_quota_dump
 60027  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 88)) = test_quota_fopen
 60028  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 104)) = test_quota_fread
 60029  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 120)) = test_quota_fwrite
 60030  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 136)) = test_quota_fclose
 60031  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 152)) = test_quota_fflush
 60032  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 168)) = test_quota_fseek
 60033  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 184)) = test_quota_rewind
 60034  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 200)) = test_quota_ftell
 60035  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 216)) = test_quota_ftruncate
 60036  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 232)) = test_quota_file_size
 60037  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 248)) = test_quota_file_truesize
 60038  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 264)) = test_quota_file_mtime
 60039  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 280)) = test_quota_remove
 60040  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 296)) = test_quota_glob
 60041  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 312)) = test_quota_file_available
 60042  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aCmd9)) + 328)) = test_quota_ferror
 60043  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 8)) = sqlite3_amatch_init
 60044  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 24)) = sqlite3_appendvfs_init
 60045  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 40)) = sqlite3_carray_init
 60046  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 56)) = sqlite3_closure_init
 60047  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 72)) = sqlite3_csv_init
 60048  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 88)) = sqlite3_decimal_init
 60049  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 104)) = sqlite3_eval_init
 60050  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 120)) = sqlite3_explain_init
 60051  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 136)) = sqlite3_fileio_init
 60052  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 152)) = sqlite3_fuzzer_init
 60053  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 168)) = sqlite3_ieee_init
 60054  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 184)) = sqlite3_nextchar_init
 60055  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 200)) = sqlite3_percentile_init
 60056  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 216)) = sqlite3_prefixes_init
 60057  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 232)) = sqlite3_qpvtab_init
 60058  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 248)) = sqlite3_regexp_init
 60059  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 264)) = sqlite3_remember_init
 60060  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 280)) = sqlite3_series_init
 60061  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 296)) = sqlite3_spellfix_init
 60062  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 312)) = sqlite3_totype_init
 60063  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 328)) = sqlite3_unionvtab_init
 60064  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aExtension)) + 344)) = sqlite3_wholenumber_init
 60065  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 16)) = decimalFunc
 60066  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 40)) = decimalCmpFunc
 60067  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 64)) = decimalAddFunc
 60068  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 88)) = decimalSubFunc
 60069  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc)) + 112)) = decimalMulFunc
 60070  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 16)) = ieee754func
 60071  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 40)) = ieee754func
 60072  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 64)) = ieee754func
 60073  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 88)) = ieee754func
 60074  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 112)) = ieee754func_to_blob
 60075  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFunc1)) + 136)) = ieee754func_from_blob
 60076  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 16)) = randStr
 60077  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 40)) = test_destructor
 60078  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 64)) = test_destructor16
 60079  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 88)) = testHexToUtf16be
 60080  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 112)) = testHexToUtf16le
 60081  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 136)) = testHexToUtf8
 60082  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 160)) = test_destructor_count
 60083  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 184)) = test_auxdata
 60084  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 208)) = test_error
 60085  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 232)) = test_error
 60086  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 256)) = test_eval
 60087  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 280)) = test_isolation
 60088  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 304)) = counterFunc
 60089  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 328)) = real2hex
 60090  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 352)) = test_decode
 60091  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 376)) = test_extract
 60092  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 400)) = test_zeroblob
 60093  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 424)) = test_getsubtype
 60094  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 448)) = test_setsubtype
 60095  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&aFuncs)) + 472)) = test_frombind
 60096  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 8)) = test_sqlite3rbu
 60097  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 24)) = test_sqlite3rbu_vacuum
 60098  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 40)) = test_sqlite3rbu_create_vfs
 60099  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 56)) = test_sqlite3rbu_destroy_vfs
 60100  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd)) + 72)) = test_sqlite3rbu_internal_test
 60101  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 8)) = test_sqlite3_db_config
 60102  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 32)) = test_sqlite3_txn_state
 60103  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 56)) = test_bad_behavior
 60104  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 64)) = uintptr(unsafe.Pointer(&iZero))
 60105  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 80)) = test_register_dbstat_vtab
 60106  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 104)) = get_sqlite_pointer
 60107  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 128)) = test_intarray_addr
 60108  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 152)) = test_int64array_addr
 60109  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 176)) = test_doublearray_addr
 60110  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 200)) = test_textarray_addr
 60111  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 224)) = test_bind_int
 60112  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 248)) = test_bind_zeroblob
 60113  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 272)) = test_bind_zeroblob64
 60114  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 296)) = test_bind_int64
 60115  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 320)) = test_bind_double
 60116  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 344)) = test_bind_null
 60117  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 368)) = test_bind_text
 60118  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 392)) = test_bind_text16
 60119  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 416)) = test_bind_blob
 60120  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 440)) = test_bind_value_from_select
 60121  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 464)) = test_bind_value_from_preupdate
 60122  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 488)) = test_carray_bind
 60123  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 512)) = test_bind_parameter_count
 60124  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 536)) = test_bind_parameter_name
 60125  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 560)) = test_bind_parameter_index
 60126  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 584)) = test_clear_bindings
 60127  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 608)) = test_sleep
 60128  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 632)) = test_errcode
 60129  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 656)) = test_ex_errcode
 60130  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 680)) = test_errmsg
 60131  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 704)) = test_error_offset
 60132  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 728)) = test_errmsg16
 60133  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 752)) = test_open
 60134  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 776)) = test_open16
 60135  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 800)) = test_open_v2
 60136  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 824)) = test_complete16
 60137  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 848)) = test_normalize
 60138  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 872)) = test_prepare
 60139  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 896)) = test_prepare16
 60140  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 920)) = test_prepare_v2
 60141  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 944)) = test_prepare_v3
 60142  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 968)) = test_prepare_tkt3134
 60143  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 992)) = test_prepare16_v2
 60144  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1016)) = test_finalize
 60145  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1040)) = test_stmt_status
 60146  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1064)) = test_reset
 60147  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1088)) = test_expired
 60148  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1112)) = test_transfer_bind
 60149  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1136)) = test_changes
 60150  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1160)) = test_step
 60151  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1184)) = test_sql
 60152  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1208)) = test_ex_sql
 60153  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1232)) = test_next_stmt
 60154  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1256)) = test_stmt_readonly
 60155  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1280)) = test_stmt_isexplain
 60156  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1304)) = test_stmt_busy
 60157  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1328)) = uses_stmt_journal
 60158  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1352)) = test_release_memory
 60159  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1376)) = test_db_release_memory
 60160  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1400)) = test_db_cacheflush
 60161  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1424)) = test_system_errno
 60162  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1448)) = test_db_filename
 60163  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1472)) = test_db_readonly
 60164  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1496)) = test_soft_heap_limit
 60165  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1520)) = test_soft_heap_limit
 60166  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1544)) = test_hard_heap_limit
 60167  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1568)) = test_thread_cleanup
 60168  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1592)) = test_pager_refcounts
 60169  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1616)) = test_load_extension
 60170  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1640)) = test_enable_load
 60171  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1664)) = test_extended_result_codes
 60172  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1688)) = test_limit
 60173  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1712)) = test_dbconfig_maindbname_icecube
 60174  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1736)) = save_prng_state
 60175  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1760)) = restore_prng_state
 60176  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1784)) = reset_prng_state
 60177  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1808)) = prng_seed
 60178  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1832)) = extra_schema_checks
 60179  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1856)) = database_never_corrupt
 60180  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1880)) = database_may_be_corrupt
 60181  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1904)) = optimization_control
 60182  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1928)) = runAsObjProc
 60183  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1952)) = test_column_count
 60184  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 1976)) = test_data_count
 60185  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2000)) = test_column_type
 60186  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2024)) = test_column_blob
 60187  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2048)) = test_column_double
 60188  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2072)) = test_column_int64
 60189  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2096)) = test_stmt_utf8
 60190  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60191  		f func(*libc.TLS, uintptr, int32) uintptr
 60192  	}{sqlite3.Xsqlite3_column_text}))
 60193  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2120)) = test_stmt_utf8
 60194  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2128)) = *(*uintptr)(unsafe.Pointer(&struct {
 60195  		f func(*libc.TLS, uintptr, int32) uintptr
 60196  	}{sqlite3.Xsqlite3_column_name}))
 60197  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2144)) = test_stmt_int
 60198  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2152)) = *(*uintptr)(unsafe.Pointer(&struct {
 60199  		f func(*libc.TLS, uintptr, int32) int32
 60200  	}{sqlite3.Xsqlite3_column_int}))
 60201  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2168)) = test_stmt_int
 60202  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2176)) = *(*uintptr)(unsafe.Pointer(&struct {
 60203  		f func(*libc.TLS, uintptr, int32) int32
 60204  	}{sqlite3.Xsqlite3_column_bytes}))
 60205  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2192)) = test_stmt_utf8
 60206  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60207  		f func(*libc.TLS, uintptr, int32) uintptr
 60208  	}{sqlite3.Xsqlite3_column_decltype}))
 60209  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2216)) = test_stmt_utf8
 60210  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2224)) = *(*uintptr)(unsafe.Pointer(&struct {
 60211  		f func(*libc.TLS, uintptr, int32) uintptr
 60212  	}{sqlite3.Xsqlite3_column_database_name}))
 60213  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2240)) = test_stmt_utf8
 60214  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2248)) = *(*uintptr)(unsafe.Pointer(&struct {
 60215  		f func(*libc.TLS, uintptr, int32) uintptr
 60216  	}{sqlite3.Xsqlite3_column_table_name}))
 60217  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2264)) = test_stmt_utf8
 60218  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2272)) = *(*uintptr)(unsafe.Pointer(&struct {
 60219  		f func(*libc.TLS, uintptr, int32) uintptr
 60220  	}{sqlite3.Xsqlite3_column_origin_name}))
 60221  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2288)) = test_stmt_int
 60222  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60223  		f func(*libc.TLS, uintptr, int32) int32
 60224  	}{sqlite3.Xsqlite3_column_bytes16}))
 60225  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2312)) = test_stmt_utf16
 60226  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2320)) = *(*uintptr)(unsafe.Pointer(&struct {
 60227  		f func(*libc.TLS, uintptr, int32) uintptr
 60228  	}{sqlite3.Xsqlite3_column_text16}))
 60229  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2336)) = test_stmt_utf16
 60230  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2344)) = *(*uintptr)(unsafe.Pointer(&struct {
 60231  		f func(*libc.TLS, uintptr, int32) uintptr
 60232  	}{sqlite3.Xsqlite3_column_name16}))
 60233  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2360)) = add_alignment_test_collations
 60234  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2384)) = test_stmt_utf16
 60235  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60236  		f func(*libc.TLS, uintptr, int32) uintptr
 60237  	}{sqlite3.Xsqlite3_column_decltype16}))
 60238  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2408)) = test_stmt_utf16
 60239  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2416)) = *(*uintptr)(unsafe.Pointer(&struct {
 60240  		f func(*libc.TLS, uintptr, int32) uintptr
 60241  	}{sqlite3.Xsqlite3_column_database_name16}))
 60242  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2432)) = test_stmt_utf16
 60243  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2440)) = *(*uintptr)(unsafe.Pointer(&struct {
 60244  		f func(*libc.TLS, uintptr, int32) uintptr
 60245  	}{sqlite3.Xsqlite3_column_table_name16}))
 60246  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2456)) = test_stmt_utf16
 60247  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2464)) = *(*uintptr)(unsafe.Pointer(&struct {
 60248  		f func(*libc.TLS, uintptr, int32) uintptr
 60249  	}{sqlite3.Xsqlite3_column_origin_name16}))
 60250  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2480)) = test_create_collation_v2
 60251  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2504)) = test_global_recover
 60252  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2528)) = working_64bit_int
 60253  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2552)) = vfs_unlink_test
 60254  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2576)) = vfs_initfail_test
 60255  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2600)) = vfs_unregister_all
 60256  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2624)) = vfs_reregister_all
 60257  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2648)) = file_control_test
 60258  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2672)) = file_control_lasterrno_test
 60259  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2696)) = file_control_lockproxy_test
 60260  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2720)) = file_control_chunksize_test
 60261  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2744)) = file_control_sizehint_test
 60262  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2768)) = file_control_data_version
 60263  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2792)) = file_control_persist_wal
 60264  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2816)) = file_control_powersafe_overwrite
 60265  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2840)) = file_control_vfsname
 60266  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2864)) = file_control_reservebytes
 60267  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2888)) = file_control_tempfilename
 60268  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2912)) = file_control_external_reader
 60269  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2936)) = vfs_list
 60270  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2960)) = test_create_function_v2
 60271  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 2984)) = test_collate
 60272  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3008)) = test_collate_needed
 60273  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3032)) = test_function
 60274  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3056)) = test_utf16bin_collate
 60275  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3080)) = test_errstr
 60276  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3104)) = tcl_variable_type
 60277  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3128)) = test_enable_shared
 60278  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3152)) = sqlite3BtreeSharedCacheReport
 60279  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3176)) = test_libversion_number
 60280  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3200)) = test_table_column_metadata
 60281  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3224)) = test_blob_reopen
 60282  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3248)) = test_pcache_stats
 60283  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3272)) = test_unlock_notify
 60284  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3296)) = test_wal_checkpoint
 60285  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3320)) = test_wal_checkpoint_v2
 60286  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3344)) = test_wal_autocheckpoint
 60287  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3368)) = test_sqlite3_log
 60288  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3392)) = test_print_eqp
 60289  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3416)) = test_test_control
 60290  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3440)) = test_getrusage
 60291  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3464)) = tclLoadStaticExtensionCmd
 60292  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3488)) = sorter_test_fakeheap
 60293  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3512)) = sorter_test_sort4_helper
 60294  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3536)) = vfsCurrentTimeInt64
 60295  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3560)) = test_snapshot_get
 60296  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3584)) = test_snapshot_open
 60297  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3608)) = test_snapshot_free
 60298  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3632)) = test_snapshot_cmp
 60299  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3656)) = test_snapshot_recover
 60300  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3680)) = test_snapshot_get_blob
 60301  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3704)) = test_snapshot_open_blob
 60302  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3728)) = test_snapshot_cmp_blob
 60303  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3752)) = test_delete_database
 60304  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3776)) = test_atomic_batch_write
 60305  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3800)) = test_mmap_warm
 60306  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3824)) = test_config_sorterref
 60307  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3848)) = test_autovacuum_pages
 60308  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3872)) = test_decode_hexdb
 60309  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3896)) = test_write_db
 60310  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3920)) = test_register_cksumvfs
 60311  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd1)) + 3944)) = test_unregister_cksumvfs
 60312  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 8)) = test_intarray_create
 60313  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd10)) + 32)) = test_intarray_bind
 60314  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 8)) = test_malloc
 60315  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 32)) = test_realloc
 60316  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 56)) = test_free
 60317  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 80)) = test_memset
 60318  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 104)) = test_memget
 60319  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 128)) = test_memory_used
 60320  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 152)) = test_memory_highwater
 60321  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 176)) = test_memdebug_backtrace
 60322  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 200)) = test_memdebug_dump
 60323  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 224)) = test_memdebug_fail
 60324  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 248)) = test_memdebug_pending
 60325  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 272)) = test_memdebug_settitle
 60326  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 296)) = test_memdebug_malloc_count
 60327  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 320)) = test_memdebug_log
 60328  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 344)) = test_config_pagecache
 60329  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 368)) = test_alt_pcache
 60330  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 392)) = test_status
 60331  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 416)) = test_db_status
 60332  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 440)) = test_install_malloc_faultsim
 60333  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 464)) = test_config_heap
 60334  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 488)) = test_config_heap_size
 60335  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 512)) = test_config_memstatus
 60336  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 536)) = test_config_lookaside
 60337  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 560)) = test_config_error
 60338  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 584)) = test_config_uri
 60339  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 608)) = test_config_cis
 60340  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 632)) = test_config_pmasz
 60341  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 656)) = test_db_config_lookaside
 60342  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 680)) = test_dump_memsys3
 60343  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 704)) = test_dump_memsys3
 60344  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 728)) = test_install_memsys3
 60345  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd11)) + 752)) = test_vfs_oom_test
 60346  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd12)) + 8)) = register_schema_module
 60347  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd13)) + 8)) = register_tclvar_module
 60348  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 8)) = test_create_window
 60349  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 32)) = test_create_window_misuse
 60350  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 56)) = test_create_sumint
 60351  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd14)) + 80)) = test_override_sum
 60352  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 8)) = register_echo_module
 60353  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd2)) + 32)) = declare_vtab
 60354  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 8)) = c_misuse_test
 60355  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 32)) = c_realloc_test
 60356  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd3)) + 56)) = c_collation_test
 60357  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd4)) + 8)) = register_tcl_module
 60358  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 8)) = test_blob_open
 60359  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 24)) = test_blob_close
 60360  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 40)) = test_blob_bytes
 60361  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 56)) = test_blob_read
 60362  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd5)) + 72)) = test_blob_write
 60363  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd6)) + 8)) = register_fs_module
 60364  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 8)) = autoinstall_test_funcs
 60365  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 24)) = abuse_create_function
 60366  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd7)) + 40)) = install_fts3_rank_function
 60367  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 8)) = hexio_read
 60368  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 24)) = hexio_write
 60369  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 40)) = hexio_get_int
 60370  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 56)) = hexio_render_int16
 60371  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 72)) = hexio_render_int32
 60372  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 88)) = utf8_to_utf8
 60373  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 104)) = read_fts3varint
 60374  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd8)) + 120)) = make_fts3record
 60375  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 8)) = init_wrapper_install
 60376  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 24)) = init_wrapper_query
 60377  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 40)) = init_wrapper_uninstall
 60378  	*(*func(*libc.TLS, ClientData, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&aObjCmd9)) + 56)) = init_wrapper_clear
 60379  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 8)) = *(*uintptr)(unsafe.Pointer(&struct {
 60380  		f func(*libc.TLS, uintptr, int32, int32) int32
 60381  	}{ts_open}))
 60382  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 40)) = *(*uintptr)(unsafe.Pointer(&struct{ f func(*libc.TLS, int32) int32 }{ts_close}))
 60383  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 72)) = *(*uintptr)(unsafe.Pointer(&struct {
 60384  		f func(*libc.TLS, uintptr, int32) int32
 60385  	}{ts_access}))
 60386  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 104)) = *(*uintptr)(unsafe.Pointer(&struct {
 60387  		f func(*libc.TLS, uintptr, size_t) uintptr
 60388  	}{ts_getcwd}))
 60389  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 136)) = *(*uintptr)(unsafe.Pointer(&struct {
 60390  		f func(*libc.TLS, uintptr, uintptr) int32
 60391  	}{ts_stat}))
 60392  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 168)) = *(*uintptr)(unsafe.Pointer(&struct {
 60393  		f func(*libc.TLS, int32, uintptr) int32
 60394  	}{ts_fstat}))
 60395  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 200)) = *(*uintptr)(unsafe.Pointer(&struct {
 60396  		f func(*libc.TLS, int32, off_t) int32
 60397  	}{ts_ftruncate}))
 60398  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 232)) = *(*uintptr)(unsafe.Pointer(&struct {
 60399  		f func(*libc.TLS, int32, int32, uintptr) int32
 60400  	}{ts_fcntl}))
 60401  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 264)) = *(*uintptr)(unsafe.Pointer(&struct {
 60402  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60403  	}{ts_read}))
 60404  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 296)) = *(*uintptr)(unsafe.Pointer(&struct {
 60405  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60406  	}{ts_pread}))
 60407  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 328)) = *(*uintptr)(unsafe.Pointer(&struct {
 60408  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60409  	}{ts_pread64}))
 60410  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 360)) = *(*uintptr)(unsafe.Pointer(&struct {
 60411  		f func(*libc.TLS, int32, uintptr, size_t) int32
 60412  	}{ts_write}))
 60413  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 392)) = *(*uintptr)(unsafe.Pointer(&struct {
 60414  		f func(*libc.TLS, int32, uintptr, size_t, off_t) int32
 60415  	}{ts_pwrite}))
 60416  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 424)) = *(*uintptr)(unsafe.Pointer(&struct {
 60417  		f func(*libc.TLS, int32, uintptr, size_t, sqlite3_uint64) int32
 60418  	}{ts_pwrite64}))
 60419  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 456)) = *(*uintptr)(unsafe.Pointer(&struct {
 60420  		f func(*libc.TLS, int32, mode_t) int32
 60421  	}{ts_fchmod}))
 60422  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 488)) = *(*uintptr)(unsafe.Pointer(&struct {
 60423  		f func(*libc.TLS, int32, off_t, off_t) int32
 60424  	}{ts_fallocate}))
 60425  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 520)) = *(*uintptr)(unsafe.Pointer(&struct {
 60426  		f func(*libc.TLS, uintptr, size_t, int32, int32, int32, off_t) uintptr
 60427  	}{ts_mmap}))
 60428  	*(*sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&aSyscall)) + 552)) = *(*uintptr)(unsafe.Pointer(&struct {
 60429  		f func(*libc.TLS, uintptr, size_t, size_t, int32, uintptr) uintptr
 60430  	}{ts_mremap}))
 60431  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 8)) = amatchConnect
 60432  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 16)) = amatchConnect
 60433  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 24)) = amatchBestIndex
 60434  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 32)) = amatchDisconnect
 60435  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 40)) = amatchDisconnect
 60436  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 48)) = amatchOpen
 60437  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 56)) = amatchClose
 60438  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 64)) = amatchFilter
 60439  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 72)) = amatchNext
 60440  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 80)) = amatchEof
 60441  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 88)) = amatchColumn
 60442  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 96)) = amatchRowid
 60443  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&amatchModule)) + 104)) = amatchUpdate
 60444  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 8)) = apndClose
 60445  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 16)) = apndRead
 60446  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 24)) = apndWrite
 60447  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 32)) = apndTruncate
 60448  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 40)) = apndSync
 60449  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 48)) = apndFileSize
 60450  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 56)) = apndLock
 60451  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 64)) = apndUnlock
 60452  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 72)) = apndCheckReservedLock
 60453  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 80)) = apndFileControl
 60454  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 88)) = apndSectorSize
 60455  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 96)) = apndDeviceCharacteristics
 60456  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 104)) = apndShmMap
 60457  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 112)) = apndShmLock
 60458  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 120)) = apndShmBarrier
 60459  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 128)) = apndShmUnmap
 60460  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 136)) = apndFetch
 60461  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_io_methods)) + 144)) = apndUnfetch
 60462  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 40)) = apndOpen
 60463  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 48)) = apndDelete
 60464  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 56)) = apndAccess
 60465  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 64)) = apndFullPathname
 60466  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 72)) = apndDlOpen
 60467  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 80)) = apndDlError
 60468  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 88)) = apndDlSym
 60469  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 96)) = apndDlClose
 60470  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 104)) = apndRandomness
 60471  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 112)) = apndSleep
 60472  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 120)) = apndCurrentTime
 60473  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 128)) = apndGetLastError
 60474  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 136)) = apndCurrentTimeInt64
 60475  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 144)) = apndSetSystemCall
 60476  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 152)) = apndGetSystemCall
 60477  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&apnd_vfs)) + 160)) = apndNextSystemCall
 60478  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 16)) = carrayConnect
 60479  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 24)) = carrayBestIndex
 60480  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 32)) = carrayDisconnect
 60481  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 48)) = carrayOpen
 60482  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 56)) = carrayClose
 60483  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 64)) = carrayFilter
 60484  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 72)) = carrayNext
 60485  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 80)) = carrayEof
 60486  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 88)) = carrayColumn
 60487  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&carrayModule)) + 96)) = carrayRowid
 60488  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 8)) = cksmClose
 60489  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 16)) = cksmRead
 60490  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 24)) = cksmWrite
 60491  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 32)) = cksmTruncate
 60492  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 40)) = cksmSync
 60493  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 48)) = cksmFileSize
 60494  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 56)) = cksmLock
 60495  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 64)) = cksmUnlock
 60496  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 72)) = cksmCheckReservedLock
 60497  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 80)) = cksmFileControl
 60498  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 88)) = cksmSectorSize
 60499  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 96)) = cksmDeviceCharacteristics
 60500  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 104)) = cksmShmMap
 60501  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 112)) = cksmShmLock
 60502  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 120)) = cksmShmBarrier
 60503  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 128)) = cksmShmUnmap
 60504  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 136)) = cksmFetch
 60505  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_io_methods)) + 144)) = cksmUnfetch
 60506  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 40)) = cksmOpen
 60507  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 48)) = cksmDelete
 60508  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 56)) = cksmAccess
 60509  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 64)) = cksmFullPathname
 60510  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 72)) = cksmDlOpen
 60511  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 80)) = cksmDlError
 60512  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 88)) = cksmDlSym
 60513  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 96)) = cksmDlClose
 60514  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 104)) = cksmRandomness
 60515  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 112)) = cksmSleep
 60516  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 120)) = cksmCurrentTime
 60517  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 128)) = cksmGetLastError
 60518  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 136)) = cksmCurrentTimeInt64
 60519  	*(*func(*libc.TLS, uintptr, uintptr, sqlite3_syscall_ptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 144)) = cksmSetSystemCall
 60520  	*(*func(*libc.TLS, uintptr, uintptr) sqlite3_syscall_ptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 152)) = cksmGetSystemCall
 60521  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&cksm_vfs)) + 160)) = cksmNextSystemCall
 60522  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 8)) = closureConnect
 60523  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 16)) = closureConnect
 60524  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 24)) = closureBestIndex
 60525  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 32)) = closureDisconnect
 60526  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 40)) = closureDisconnect
 60527  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 48)) = closureOpen
 60528  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 56)) = closureClose
 60529  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 64)) = closureFilter
 60530  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 72)) = closureNext
 60531  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 80)) = closureEof
 60532  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 88)) = closureColumn
 60533  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&closureModule)) + 96)) = closureRowid
 60534  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 40)) = cfOpen
 60535  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 48)) = cfDelete
 60536  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 56)) = cfAccess
 60537  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 64)) = cfFullPathname
 60538  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 72)) = cfDlOpen
 60539  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 80)) = cfDlError
 60540  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 88)) = cfDlSym
 60541  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 96)) = cfDlClose
 60542  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 104)) = cfRandomness
 60543  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 112)) = cfSleep
 60544  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 120)) = cfCurrentTime
 60545  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&crashVfs)) + 128)) = cfGetLastError
 60546  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 8)) = devsymClose
 60547  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 16)) = devsymRead
 60548  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 24)) = devsymWrite
 60549  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 32)) = devsymTruncate
 60550  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 40)) = devsymSync
 60551  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 48)) = devsymFileSize
 60552  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 56)) = devsymLock
 60553  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 64)) = devsymUnlock
 60554  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 72)) = devsymCheckReservedLock
 60555  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 80)) = devsymFileControl
 60556  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 88)) = devsymSectorSize
 60557  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 96)) = devsymDeviceCharacteristics
 60558  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 104)) = devsymShmMap
 60559  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 112)) = devsymShmLock
 60560  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 120)) = devsymShmBarrier
 60561  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_io_methods)) + 128)) = devsymShmUnmap
 60562  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 40)) = devsymOpen
 60563  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 48)) = devsymDelete
 60564  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 56)) = devsymAccess
 60565  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 64)) = devsymFullPathname
 60566  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 104)) = devsymRandomness
 60567  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 112)) = devsymSleep
 60568  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&devsym_vfs)) + 120)) = devsymCurrentTime
 60569  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 8)) = echoCreate
 60570  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 16)) = echoConnect
 60571  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 24)) = echoBestIndex
 60572  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 32)) = echoDisconnect
 60573  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 40)) = echoDestroy
 60574  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 48)) = echoOpen
 60575  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 56)) = echoClose
 60576  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 64)) = echoFilter
 60577  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 72)) = echoNext
 60578  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 80)) = echoEof
 60579  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 88)) = echoColumn
 60580  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 96)) = echoRowid
 60581  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 104)) = echoUpdate
 60582  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 112)) = echoBegin
 60583  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 120)) = echoSync
 60584  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 128)) = echoCommit
 60585  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 136)) = echoRollback
 60586  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 144)) = echoFindFunction
 60587  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModule)) + 152)) = echoRename
 60588  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 8)) = echoCreate
 60589  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 16)) = echoConnect
 60590  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 24)) = echoBestIndex
 60591  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 32)) = echoDisconnect
 60592  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 40)) = echoDestroy
 60593  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 48)) = echoOpen
 60594  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 56)) = echoClose
 60595  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 64)) = echoFilter
 60596  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 72)) = echoNext
 60597  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 80)) = echoEof
 60598  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 88)) = echoColumn
 60599  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 96)) = echoRowid
 60600  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 104)) = echoUpdate
 60601  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 112)) = echoBegin
 60602  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 120)) = echoSync
 60603  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 128)) = echoCommit
 60604  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 136)) = echoRollback
 60605  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 144)) = echoFindFunction
 60606  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 152)) = echoRename
 60607  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 160)) = echoSavepoint
 60608  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 168)) = echoRelease
 60609  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&echoModuleV2)) + 176)) = echoRollbackTo
 60610  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 8)) = expertConnect
 60611  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 16)) = expertConnect
 60612  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 24)) = expertBestIndex
 60613  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 32)) = expertDisconnect
 60614  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 40)) = expertDisconnect
 60615  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 48)) = expertOpen
 60616  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 56)) = expertClose
 60617  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 64)) = expertFilter
 60618  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 72)) = expertNext
 60619  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 80)) = expertEof
 60620  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 88)) = expertColumn
 60621  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 96)) = expertRowid
 60622  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&expertModule)) + 104)) = expertUpdate
 60623  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 16)) = explainConnect
 60624  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 24)) = explainBestIndex
 60625  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 32)) = explainDisconnect
 60626  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 48)) = explainOpen
 60627  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 56)) = explainClose
 60628  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 64)) = explainFilter
 60629  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 72)) = explainNext
 60630  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 80)) = explainEof
 60631  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 88)) = explainColumn
 60632  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&explainModule)) + 96)) = explainRowid
 60633  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 8)) = fsConnect
 60634  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 16)) = fsConnect
 60635  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 24)) = fsBestIndex
 60636  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 32)) = fsDisconnect
 60637  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 40)) = fsDisconnect
 60638  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 48)) = fsOpen
 60639  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 56)) = fsClose
 60640  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 64)) = fsFilter
 60641  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 72)) = fsNext
 60642  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 80)) = fsEof
 60643  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 88)) = fsColumn
 60644  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsModule)) + 96)) = fsRowid
 60645  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 8)) = fsClose1
 60646  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 16)) = fsRead
 60647  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 24)) = fsWrite
 60648  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 32)) = fsTruncate
 60649  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 40)) = fsSync
 60650  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 48)) = fsFileSize
 60651  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 56)) = fsLock
 60652  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 64)) = fsUnlock
 60653  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 72)) = fsCheckReservedLock
 60654  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 80)) = fsFileControl
 60655  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 88)) = fsSectorSize
 60656  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_io_methods)) + 96)) = fsDeviceCharacteristics
 60657  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 40)) = fsOpen1
 60658  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 48)) = fsDelete
 60659  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 56)) = fsAccess
 60660  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 64)) = fsFullPathname
 60661  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 72)) = fsDlOpen
 60662  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 80)) = fsDlError
 60663  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 88)) = fsDlSym
 60664  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 96)) = fsDlClose
 60665  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 104)) = fsRandomness
 60666  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 112)) = fsSleep
 60667  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fs_vfs)) + 120)) = fsCurrentTime
 60668  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 8)) = fsdirConnect1
 60669  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 16)) = fsdirConnect1
 60670  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 24)) = fsdirBestIndex1
 60671  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 32)) = fsdirDisconnect1
 60672  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 40)) = fsdirDisconnect1
 60673  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 48)) = fsdirOpen1
 60674  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 56)) = fsdirClose1
 60675  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 64)) = fsdirFilter1
 60676  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 72)) = fsdirNext1
 60677  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 80)) = fsdirEof1
 60678  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 88)) = fsdirColumn1
 60679  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule)) + 96)) = fsdirRowid1
 60680  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 16)) = fsdirConnect
 60681  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 24)) = fsdirBestIndex
 60682  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 32)) = fsdirDisconnect
 60683  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 48)) = fsdirOpen
 60684  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 56)) = fsdirClose
 60685  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 64)) = fsdirFilter
 60686  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 72)) = fsdirNext
 60687  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 80)) = fsdirEof
 60688  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 88)) = fsdirColumn
 60689  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fsdirModule1)) + 96)) = fsdirRowid
 60690  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 8)) = fstreeConnect
 60691  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 16)) = fstreeConnect
 60692  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 24)) = fstreeBestIndex
 60693  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 32)) = fstreeDisconnect
 60694  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 40)) = fstreeDisconnect
 60695  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 48)) = fstreeOpen
 60696  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 56)) = fstreeClose
 60697  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 64)) = fstreeFilter
 60698  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 72)) = fstreeNext
 60699  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 80)) = fstreeEof
 60700  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 88)) = fstreeColumn
 60701  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fstreeModule)) + 96)) = fstreeRowid
 60702  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 8)) = fts5tokConnectMethod
 60703  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 16)) = fts5tokConnectMethod
 60704  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 24)) = fts5tokBestIndexMethod
 60705  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 32)) = fts5tokDisconnectMethod
 60706  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 40)) = fts5tokDisconnectMethod
 60707  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 48)) = fts5tokOpenMethod
 60708  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 56)) = fts5tokCloseMethod
 60709  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 64)) = fts5tokFilterMethod
 60710  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 72)) = fts5tokNextMethod
 60711  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 80)) = fts5tokEofMethod
 60712  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 88)) = fts5tokColumnMethod
 60713  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fts5tok_module)) + 96)) = fts5tokRowidMethod
 60714  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 8)) = fuzzerConnect
 60715  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 16)) = fuzzerConnect
 60716  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 24)) = fuzzerBestIndex
 60717  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 32)) = fuzzerDisconnect
 60718  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 40)) = fuzzerDisconnect
 60719  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 48)) = fuzzerOpen
 60720  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 56)) = fuzzerClose
 60721  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 64)) = fuzzerFilter
 60722  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 72)) = fuzzerNext
 60723  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 80)) = fuzzerEof
 60724  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 88)) = fuzzerColumn
 60725  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&fuzzerModule)) + 96)) = fuzzerRowid
 60726  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 8)) = intarrayCreate
 60727  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 16)) = intarrayCreate
 60728  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 24)) = intarrayBestIndex
 60729  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 32)) = intarrayDestroy
 60730  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 40)) = intarrayDestroy
 60731  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 48)) = intarrayOpen
 60732  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 56)) = intarrayClose
 60733  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 64)) = intarrayFilter
 60734  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 72)) = intarrayNext
 60735  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 80)) = intarrayEof
 60736  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 88)) = intarrayColumn
 60737  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&intarrayModule)) + 96)) = intarrayRowid
 60738  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 8)) = jtClose
 60739  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 16)) = jtRead
 60740  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 24)) = jtWrite
 60741  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 32)) = jtTruncate
 60742  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 40)) = jtSync
 60743  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 48)) = jtFileSize
 60744  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 56)) = jtLock
 60745  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 64)) = jtUnlock
 60746  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 72)) = jtCheckReservedLock
 60747  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 80)) = jtFileControl
 60748  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 88)) = jtSectorSize
 60749  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_io_methods)) + 96)) = jtDeviceCharacteristics
 60750  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 40)) = jtOpen
 60751  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 48)) = jtDelete
 60752  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 56)) = jtAccess
 60753  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 64)) = jtFullPathname
 60754  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 72)) = jtDlOpen
 60755  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 80)) = jtDlError
 60756  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 88)) = jtDlSym
 60757  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 96)) = jtDlClose
 60758  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 104)) = jtRandomness
 60759  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 112)) = jtSleep
 60760  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 120)) = jtCurrentTime
 60761  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 128)) = jtGetLastError
 60762  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&jt_vfs)) + 136)) = jtCurrentTimeInt64
 60763  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 16)) = prefixesConnect
 60764  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 24)) = prefixesBestIndex
 60765  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 32)) = prefixesDisconnect
 60766  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 48)) = prefixesOpen
 60767  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 56)) = prefixesClose
 60768  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 64)) = prefixesFilter
 60769  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 72)) = prefixesNext
 60770  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 80)) = prefixesEof
 60771  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 88)) = prefixesColumn
 60772  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&prefixesModule)) + 96)) = prefixesRowid
 60773  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&pzNeededCollation)) + 0)) = uintptr(unsafe.Pointer(&zNeededCollation))
 60774  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 16)) = qpvtabConnect
 60775  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 24)) = qpvtabBestIndex
 60776  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 32)) = qpvtabDisconnect
 60777  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 48)) = qpvtabOpen
 60778  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 56)) = qpvtabClose
 60779  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 64)) = qpvtabFilter
 60780  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 72)) = qpvtabNext
 60781  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 80)) = qpvtabEof
 60782  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 88)) = qpvtabColumn
 60783  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&qpvtabModule)) + 96)) = qpvtabRowid
 60784  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 8)) = schemaCreate
 60785  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 16)) = schemaCreate
 60786  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 24)) = schemaBestIndex
 60787  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 32)) = schemaDestroy
 60788  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 40)) = schemaDestroy
 60789  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 48)) = schemaOpen
 60790  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 56)) = schemaClose
 60791  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 64)) = schemaFilter
 60792  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 72)) = schemaNext
 60793  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 80)) = schemaEof
 60794  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 88)) = schemaColumn
 60795  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&schemaModule)) + 96)) = schemaRowid
 60796  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 16)) = seriesConnect
 60797  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 24)) = seriesBestIndex
 60798  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 32)) = seriesDisconnect
 60799  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 48)) = seriesOpen
 60800  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 56)) = seriesClose
 60801  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 64)) = seriesFilter
 60802  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 72)) = seriesNext
 60803  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 80)) = seriesEof
 60804  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 88)) = seriesColumn
 60805  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&seriesModule)) + 96)) = seriesRowid
 60806  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 8)) = spellfix1Create
 60807  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 16)) = spellfix1Connect
 60808  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 24)) = spellfix1BestIndex
 60809  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 32)) = spellfix1Disconnect
 60810  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 40)) = spellfix1Destroy
 60811  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 48)) = spellfix1Open
 60812  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 56)) = spellfix1Close
 60813  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 64)) = spellfix1Filter
 60814  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 72)) = spellfix1Next
 60815  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 80)) = spellfix1Eof
 60816  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 88)) = spellfix1Column
 60817  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 96)) = spellfix1Rowid
 60818  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 104)) = spellfix1Update
 60819  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&spellfix1Module)) + 152)) = spellfix1Rename
 60820  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 8)) = tclConnect
 60821  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 16)) = tclConnect
 60822  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 24)) = tclBestIndex
 60823  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 32)) = tclDisconnect
 60824  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 40)) = tclDisconnect
 60825  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 48)) = tclOpen
 60826  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 56)) = tclClose
 60827  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 64)) = tclFilter
 60828  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 72)) = tclNext
 60829  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 80)) = tclEof
 60830  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 88)) = tclColumn
 60831  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclModule)) + 96)) = tclRowid
 60832  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 8)) = tclvarConnect
 60833  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 16)) = tclvarConnect
 60834  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 24)) = tclvarBestIndex
 60835  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 32)) = tclvarDisconnect
 60836  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 40)) = tclvarDisconnect
 60837  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 48)) = tclvarOpen
 60838  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 56)) = tclvarClose
 60839  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 64)) = tclvarFilter
 60840  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 72)) = tclvarNext
 60841  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 80)) = tclvarEof
 60842  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 88)) = tclvarColumn
 60843  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 96)) = tclvarRowid
 60844  	*(*func(*libc.TLS, uintptr, int32, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tclvarModule)) + 104)) = tclvarUpdate
 60845  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 8)) = uintptr(unsafe.Pointer(&testpcacheGlobal))
 60846  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 16)) = testpcacheInit
 60847  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 24)) = testpcacheShutdown
 60848  	*(*func(*libc.TLS, int32, int32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 32)) = testpcacheCreate
 60849  	*(*func(*libc.TLS, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 40)) = testpcacheCachesize
 60850  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 48)) = testpcachePagecount
 60851  	*(*func(*libc.TLS, uintptr, uint32, int32) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 56)) = testpcacheFetch
 60852  	*(*func(*libc.TLS, uintptr, uintptr, int32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 64)) = testpcacheUnpin
 60853  	*(*func(*libc.TLS, uintptr, uintptr, uint32, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 72)) = testpcacheRekey
 60854  	*(*func(*libc.TLS, uintptr, uint32))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 80)) = testpcacheTruncate
 60855  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&testPcache)) + 88)) = testpcacheDestroy
 60856  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 8)) = tmpClose
 60857  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 16)) = tmpRead
 60858  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 24)) = tmpWrite
 60859  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 32)) = tmpTruncate
 60860  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 40)) = tmpSync
 60861  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 48)) = tmpFileSize
 60862  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 56)) = tmpLock
 60863  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 64)) = tmpUnlock
 60864  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 72)) = tmpCheckReservedLock
 60865  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 80)) = tmpFileControl
 60866  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 88)) = tmpSectorSize
 60867  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tmp_io_methods)) + 96)) = tmpDeviceCharacteristics
 60868  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 8)) = tvfsClose
 60869  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 16)) = tvfsRead
 60870  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 24)) = tvfsWrite
 60871  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 32)) = tvfsTruncate
 60872  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 40)) = tvfsSync
 60873  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 48)) = tvfsFileSize
 60874  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 56)) = tvfsLock
 60875  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 64)) = tvfsUnlock
 60876  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 72)) = tvfsCheckReservedLock
 60877  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 80)) = tvfsFileControl
 60878  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 88)) = tvfsSectorSize
 60879  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 96)) = tvfsDeviceCharacteristics
 60880  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 104)) = tvfsShmMap
 60881  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 112)) = tvfsShmLock
 60882  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 120)) = tvfsShmBarrier
 60883  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 128)) = tvfsShmUnmap
 60884  	*(*func(*libc.TLS, uintptr, sqlite3_int64, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 136)) = tvfsFetch
 60885  	*(*func(*libc.TLS, uintptr, sqlite3_int64, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_io_methods)) + 144)) = tvfsUnfetch
 60886  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 40)) = tvfsOpen
 60887  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 48)) = tvfsDelete
 60888  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 56)) = tvfsAccess
 60889  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 64)) = tvfsFullPathname
 60890  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 104)) = tvfsRandomness
 60891  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 112)) = tvfsSleep
 60892  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&tvfs_vfs)) + 120)) = tvfsCurrentTime
 60893  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 8)) = unionConnect
 60894  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 16)) = unionConnect
 60895  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 24)) = unionBestIndex
 60896  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 32)) = unionDisconnect
 60897  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 40)) = unionDisconnect
 60898  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 48)) = unionOpen
 60899  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 56)) = unionClose
 60900  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 64)) = unionFilter
 60901  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 72)) = unionNext
 60902  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 80)) = unionEof
 60903  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 88)) = unionColumn
 60904  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&unionModule)) + 96)) = unionRowid
 60905  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 8)) = vfslogClose
 60906  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 16)) = vfslogRead
 60907  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 24)) = vfslogWrite
 60908  	*(*func(*libc.TLS, uintptr, sqlite3_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 32)) = vfslogTruncate
 60909  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 40)) = vfslogSync
 60910  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 48)) = vfslogFileSize
 60911  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 56)) = vfslogLock
 60912  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 64)) = vfslogUnlock
 60913  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 72)) = vfslogCheckReservedLock
 60914  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 80)) = vfslogFileControl
 60915  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 88)) = vfslogSectorSize
 60916  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 96)) = vfslogDeviceCharacteristics
 60917  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 104)) = vfslogShmMap
 60918  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 112)) = vfslogShmLock
 60919  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 120)) = vfslogShmBarrier
 60920  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_io_methods)) + 128)) = vfslogShmUnmap
 60921  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 8)) = vlogConnect
 60922  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 16)) = vlogConnect
 60923  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 24)) = vlogBestIndex
 60924  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 32)) = vlogDisconnect
 60925  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 40)) = vlogDisconnect
 60926  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 48)) = vlogOpen
 60927  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 56)) = vlogClose
 60928  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 64)) = vlogFilter
 60929  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 72)) = vlogNext
 60930  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 80)) = vlogEof
 60931  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 88)) = vlogColumn
 60932  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_module)) + 96)) = vlogRowid
 60933  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 40)) = vfslogOpen
 60934  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 48)) = vfslogDelete
 60935  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 56)) = vfslogAccess
 60936  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 64)) = vfslogFullPathname
 60937  	*(*func(*libc.TLS, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 72)) = vfslogDlOpen
 60938  	*(*func(*libc.TLS, uintptr, int32, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 80)) = vfslogDlError
 60939  	*(*func(*libc.TLS, uintptr, uintptr, uintptr) uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 88)) = vfslogDlSym
 60940  	*(*func(*libc.TLS, uintptr, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 96)) = vfslogDlClose
 60941  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 104)) = vfslogRandomness
 60942  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 112)) = vfslogSleep
 60943  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 120)) = vfslogCurrentTime
 60944  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 128)) = vfslogGetLastError
 60945  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&vfslog_vfs)) + 136)) = vfslogCurrentTimeInt64
 60946  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 8)) = wholenumberConnect
 60947  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 16)) = wholenumberConnect
 60948  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 24)) = wholenumberBestIndex
 60949  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 32)) = wholenumberDisconnect
 60950  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 40)) = wholenumberDisconnect
 60951  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 48)) = wholenumberOpen
 60952  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 56)) = wholenumberClose
 60953  	*(*func(*libc.TLS, uintptr, int32, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 64)) = wholenumberFilter
 60954  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 72)) = wholenumberNext
 60955  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 80)) = wholenumberEof
 60956  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 88)) = wholenumberColumn
 60957  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&wholenumberModule)) + 96)) = wholenumberRowid
 60958  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 8)) = devsymClose
 60959  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 16)) = devsymRead
 60960  	*(*func(*libc.TLS, uintptr, uintptr, int32, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 24)) = writecrashWrite
 60961  	*(*func(*libc.TLS, uintptr, sqlite_int64) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 32)) = devsymTruncate
 60962  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 40)) = devsymSync
 60963  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 48)) = devsymFileSize
 60964  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 56)) = devsymLock
 60965  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 64)) = devsymUnlock
 60966  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 72)) = devsymCheckReservedLock
 60967  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 80)) = devsymFileControl
 60968  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 88)) = writecrashSectorSize
 60969  	*(*func(*libc.TLS, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 96)) = writecrashDeviceCharacteristics
 60970  	*(*func(*libc.TLS, uintptr, int32, int32, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 104)) = devsymShmMap
 60971  	*(*func(*libc.TLS, uintptr, int32, int32, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 112)) = devsymShmLock
 60972  	*(*func(*libc.TLS, uintptr))(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 120)) = devsymShmBarrier
 60973  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_io_methods)) + 128)) = devsymShmUnmap
 60974  	*(*func(*libc.TLS, uintptr, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 40)) = writecrashOpen
 60975  	*(*func(*libc.TLS, uintptr, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 48)) = devsymDelete
 60976  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 56)) = devsymAccess
 60977  	*(*func(*libc.TLS, uintptr, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 64)) = devsymFullPathname
 60978  	*(*func(*libc.TLS, uintptr, int32, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 104)) = devsymRandomness
 60979  	*(*func(*libc.TLS, uintptr, int32) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 112)) = devsymSleep
 60980  	*(*func(*libc.TLS, uintptr, uintptr) int32)(unsafe.Pointer(uintptr(unsafe.Pointer(&writecrash_vfs)) + 120)) = devsymCurrentTime
 60981  }
 60982  
 60983  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\x00rowid32\x00casesensitivelike\x00configslower\x001.0\x00curdir\x001\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"
 60984  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data